<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>evolution api Archives - Leonardo Nascimento | Engenheiro de Software</title>
	<atom:link href="https://leonardonascimento.dev/tag/evolution-api/feed/" rel="self" type="application/rss+xml" />
	<link>https://leonardonascimento.dev/tag/evolution-api/</link>
	<description>Especializado em backend, APIs e sistemas escaláveis. Experiência em arquitetura de sistemas, integrações, mensageria, performance e aplicações de alta disponibilidade.</description>
	<lastBuildDate>Thu, 22 Jan 2026 16:18:05 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://leonardonascimento.dev/wp-content/uploads/2021/05/cropped-programming-32x32.png</url>
	<title>evolution api Archives - Leonardo Nascimento | Engenheiro de Software</title>
	<link>https://leonardonascimento.dev/tag/evolution-api/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Como fazer o primeiro disparo na Evolution API</title>
		<link>https://leonardonascimento.dev/blog/como-fazer-o-primeiro-disparo-na-evolution-api/</link>
					<comments>https://leonardonascimento.dev/blog/como-fazer-o-primeiro-disparo-na-evolution-api/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Sat, 17 Jan 2026 22:06:00 +0000</pubDate>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[api v2]]></category>
		<category><![CDATA[automação]]></category>
		<category><![CDATA[disparo de mensagem]]></category>
		<category><![CDATA[evolution api]]></category>
		<category><![CDATA[integrações]]></category>
		<category><![CDATA[whatsapp api]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=2307</guid>

					<description><![CDATA[<p>Depois de instalar a Evolution API (via Orion), muita gente trava no mesmo ponto: “ok, está rodando… e agora?”.O primeiro disparo envolve 3 passos obrigatórios, sempre nessa ordem: Se pular qualquer um deles, não funciona. 1️⃣ Confirmar dados básicos da instalação Você precisa ter em mãos: Esses dois dados são usados em todas as chamadas. [&#8230;]</p>
<p>The post <a href="https://leonardonascimento.dev/blog/como-fazer-o-primeiro-disparo-na-evolution-api/">Como fazer o primeiro disparo na Evolution API</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/" type="post" id="2304">Depois de instalar a Evolution API (via Orion)</a>, muita gente trava no mesmo ponto: <em>“ok, está rodando… e agora?”</em>.<br>O primeiro disparo envolve <strong>3 passos obrigatórios</strong>, sempre nessa ordem:</p>



<ol class="wp-block-list">
<li>criar a instância</li>



<li>conectar o WhatsApp (QR Code)</li>



<li>enviar a mensagem</li>
</ol>



<p>Se pular qualquer um deles, não funciona.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-1-confirmar-dados-basicos-da-instalacao">1️⃣ Confirmar dados básicos da instalação</h2>



<p>Você precisa ter em mãos:</p>



<ul class="wp-block-list">
<li><strong>Server URL</strong><br>Exemplo: <code>https://api.seudominio.com</code></li>



<li><strong>API Key global</strong> (gerada pelo Orion na instalação)</li>
</ul>



<p>Esses dois dados são usados em <strong>todas</strong> as chamadas.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-2-criar-a-instancia-obrigatorio">2️⃣ Criar a instância (obrigatório)</h2>



<p>Na Evolution API v2, <strong>não existe envio sem instância</strong>.</p>



<h3 class="wp-block-heading" id="h-endpoint">Endpoint</h3>



<pre class="wp-block-code"><code>POST /instance/create
</code></pre>



<h3 class="wp-block-heading" id="h-exemplo-com-curl">Exemplo com <code>curl</code></h3>



<pre class="wp-block-code"><code>curl -X POST https://api.seudominio.com/instance/create \
  -H "apikey: SUA_API_KEY_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "instanceName": "primeira-instancia"
  }'
</code></pre>



<h3 class="wp-block-heading" id="h-resposta-esperada">Resposta esperada</h3>



<p>Algo semelhante a:</p>



<pre class="wp-block-code"><code>{
  "instance": {
    "instanceName": "primeira-instancia",
    "status": "created"
  }
}
</code></pre>



<p>Se deu erro aqui, <strong>pare</strong>. O resto não vai funcionar.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-3-conectar-o-whatsapp-qr-code">3️⃣ Conectar o WhatsApp (QR Code)</h2>



<p>Depois da instância criada, você precisa <strong>conectar o número</strong>.</p>



<h3 class="wp-block-heading" id="h-gerar-qr-code">Gerar QR Code</h3>



<pre class="wp-block-code"><code>GET /instance/connect/{instanceName}
</code></pre>



<pre class="wp-block-code"><code>curl -X GET https://api.seudominio.com/instance/connect/primeira-instancia \
  -H "apikey: SUA_API_KEY_AQUI"
</code></pre>



<p>A resposta vem com o <strong>QR Code em base64</strong> ou link.</p>



<p>Abra no navegador ou use o <strong>manager</strong> do Orion:</p>



<pre class="wp-block-code"><code>https:&#47;&#47;api.seudominio.com/manager
</code></pre>



<p>Escaneie com o WhatsApp do celular.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-verificar-status-da-instancia">Verificar status da instância</h3>



<p>Antes de enviar mensagem, confirme que está conectada.</p>



<pre class="wp-block-code"><code>GET /instance/connectionState/{instanceName}
</code></pre>



<pre class="wp-block-code"><code>curl -X GET https://api.seudominio.com/instance/connectionState/primeira-instancia \
  -H "apikey: SUA_API_KEY_AQUI"
</code></pre>



<p>Status esperado:</p>



<pre class="wp-block-code"><code>{
  "state": "open"
}
</code></pre>



<p>Se não estiver <code>open</code>, <strong>não adianta tentar enviar mensagem</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-4-primeiro-disparo-de-mensagem-texto-simples">4️⃣ Primeiro disparo de mensagem (texto simples)</h2>



<p>Agora sim.</p>



<h3 class="wp-block-heading" id="h-endpoint-v2-para-texto">Endpoint v2 para texto</h3>



<pre class="wp-block-code"><code>POST /message/sendText/{instanceName}
</code></pre>



<h3 class="wp-block-heading" id="h-exemplo-real">Exemplo real</h3>



<pre class="wp-block-code"><code>curl -X POST https://api.seudominio.com/message/sendText/primeira-instancia \
  -H "apikey: SUA_API_KEY_AQUI" \
  -H "Content-Type: application/json" \
  -d '{
    "number": "559999999999",
    "text": "Olá! Este é meu primeiro disparo pela Evolution API v2."
  }'
</code></pre>



<p>⚠️ <strong>Formato do número</strong></p>



<ul class="wp-block-list">
<li>Sempre com <strong>DDI + DDD + número</strong></li>



<li>Sem <code>+</code>, sem espaço, sem traço</li>
</ul>



<p>Exemplo válido:</p>



<pre class="wp-block-code"><code>5591999999999
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-5-o-que-acontece-se-nao-enviar">5️⃣ O que acontece se não enviar?</h2>



<p>Os erros mais comuns no primeiro disparo:</p>



<h3 class="wp-block-heading" id="h-instancia-nao-conectada">❌ Instância não conectada</h3>



<p>Resposta típica:</p>



<pre class="wp-block-code"><code>instance not connected
</code></pre>



<h3 class="wp-block-heading" id="h-numero-invalido">❌ Número inválido</h3>



<ul class="wp-block-list">
<li>faltou DDI</li>



<li>tem <code>+</code></li>



<li>tem espaço</li>
</ul>



<h3 class="wp-block-heading" id="h-api-key-errada">❌ API Key errada</h3>



<p>Resposta:</p>



<pre class="wp-block-code"><code>Unauthorized
</code></pre>



<h3 class="wp-block-heading" id="h-endpoint-errado-v1-v2">❌ Endpoint errado (v1 ≠ v2)</h3>



<p>Na v2:</p>



<pre class="wp-block-code"><code>/message/sendText/{instance}
</code></pre>



<p>Na v1 era diferente. Não misture.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-6-teste-rapido-pelo-manager-opcional">6️⃣ Teste rápido pelo Manager (opcional)</h2>



<p>Se quiser validar sem curl:</p>



<ol class="wp-block-list">
<li>Acesse: <code>https://api.seudominio.com/manager</code></li>



<li>Escolha a instância</li>



<li>Vá em <strong>Send Message</strong></li>



<li>Envie um texto simples</li>
</ol>



<p>Se funciona no manager e não via API, o problema é <strong>payload ou headers</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-7-proximos-disparos-possiveis-depois-do-primeiro">7️⃣ Próximos disparos possíveis (depois do primeiro)</h2>



<p>Depois que o texto simples funciona, você pode evoluir para:</p>



<ul class="wp-block-list">
<li>imagem</li>



<li>vídeo</li>



<li>áudio</li>



<li>botão</li>



<li>lista</li>



<li>disparos em massa</li>



<li>integração com Laravel, n8n, Notifish etc.</li>
</ul>



<p>Mas <strong>sempre valide texto primeiro</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-resumo-rapido-ordem-correta">Resumo rápido (ordem correta)</h2>



<p>1️⃣ criar instância<br>2️⃣ conectar WhatsApp<br>3️⃣ confirmar <code>state = open</code><br>4️⃣ enviar <code>sendText</code></p>



<p>Se seguir isso, <strong>funciona</strong>.</p>
<p>The post <a href="https://leonardonascimento.dev/blog/como-fazer-o-primeiro-disparo-na-evolution-api/">Como fazer o primeiro disparo na Evolution API</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/como-fazer-o-primeiro-disparo-na-evolution-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Como instalar Docker, Portainer e Evolution API</title>
		<link>https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/</link>
					<comments>https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/#respond</comments>
		
		<dc:creator><![CDATA[Leonardo]]></dc:creator>
		<pubDate>Fri, 16 Jan 2026 20:15:00 +0000</pubDate>
				<category><![CDATA[Arquitetura]]></category>
		<category><![CDATA[Infra]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[evolution api]]></category>
		<category><![CDATA[portainer]]></category>
		<category><![CDATA[traefik]]></category>
		<category><![CDATA[vps]]></category>
		<guid isPermaLink="false">https://leonardonascimento.dev/?p=2304</guid>

					<description><![CDATA[<p>Este guia mostra como subir um ambiente completo com Docker, Portainer e Evolution API, utilizando o Orion Design (interface padrão da Evolution), de forma organizada e fácil de manter. A ideia é ter: Pré-requisitos que evitam dor de cabeça Passo a passo: instalar Docker + Traefik + Portainer + Evolution API via SetupOrion 1) Prepare [&#8230;]</p>
<p>The post <a href="https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/">Como instalar Docker, Portainer e Evolution API</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Este guia mostra como subir um ambiente completo com <strong>Docker</strong>, <strong>Portainer</strong> e <strong>Evolution API</strong>, utilizando o <strong>Orion Design</strong> (interface padrão da Evolution), de forma organizada e fácil de manter.</p>



<p>A ideia é ter:</p>



<ul class="wp-block-list">
<li>containers gerenciáveis via Portainer</li>



<li>stack versionável via Docker Compose</li>



<li>Evolution API pronta para uso em produção</li>
</ul>



<h2 class="wp-block-heading" id="h-pre-requisitos-que-evitam-dor-de-cabeca">Pré-requisitos que evitam dor de cabeça</h2>



<ol class="wp-block-list">
<li><strong>Servidor limpo (zerado)</strong><br>O SetupOrion verifica se já existe painel/stack instalada e vai falhar se o servidor não estiver “limpo”.</li>



<li><strong>Domínio e DNS</strong><br>A recomendação do guia é criar um subdomínio base (ex.: <code>vps.seudominio.com</code>) apontando para o IP do servidor e, a partir dele, criar CNAMEs para as apps (portainer, api etc.).</li>
</ol>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-passo-a-passo-instalar-docker-traefik-portainer-evolution-api-via-setuporion">Passo a passo: instalar Docker + Traefik + Portainer + Evolution API via SetupOrion</h2>



<h3 class="wp-block-heading" id="h-1-prepare-o-dns-antes-de-rodar-o-instalador">1) Prepare o DNS (antes de rodar o instalador)</h3>



<p>Crie o registro base:</p>



<ul class="wp-block-list">
<li><strong>A</strong>: <code>vps.seudominio.com</code> → IP do seu servidor (proxy desligado, se usar Cloudflare)</li>
</ul>



<p>Depois, crie os CNAMEs que você vai usar:</p>



<ul class="wp-block-list">
<li><strong>CNAME</strong>: <code>portainer</code> → <code>vps.seudominio.com</code> (proxy desligado)</li>



<li><strong>CNAME</strong>: <code>api</code> → <code>vps.seudominio.com</code> (proxy desligado)</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Se você não quiser usar <code>vps.seudominio.com</code>, pode apontar o CNAME direto para o IP, mas o modelo do “vps base” facilita troca de IP depois.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-2-conecte-via-ssh">2) Conecte via SSH</h3>



<p>Exemplo:</p>



<pre class="wp-block-code"><code>ssh root@SEU-IP
</code></pre>



<p>(ou <code>ssh root@vps.seudominio.com</code>)</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-3-rode-o-setuporion-um-comando">3) Rode o SetupOrion (um comando)</h3>



<pre class="wp-block-code"><code>bash &lt;(curl -sSL setup.oriondesign.art.br)
</code></pre>



<p>Isso abre o menu do SetupOrion.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-4-instale-traefik-portainer-primeiro">4) Instale Traefik + Portainer (primeiro)</h3>



<p>No menu, a recomendação é começar pela opção de base <strong>Traefik + Portainer</strong> (no guia aparece como a “primeira instalação obrigatória”).</p>



<p>Durante o processo ele vai pedir:</p>



<ul class="wp-block-list">
<li>hostname do Portainer (ex.: <code>portainer.seudominio.com</code>)</li>



<li>usuário e senha (o guia menciona evitar caracteres problemáticos e usar credenciais seguras)</li>



<li>e-mail (usado para SSL/certificados)</li>
</ul>



<p>Ao final, você acessa o Portainer em:</p>



<ul class="wp-block-list">
<li><code>https://portainer.seudominio.com</code></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-5-instale-a-evolution-api-pelo-proprio-menu-do-setuporion">5) Instale a Evolution API pelo próprio menu do SetupOrion</h3>



<p>Com o SetupOrion aberto, selecione a Evolution API.</p>



<ul class="wp-block-list">
<li><strong>“03 – Evolution API”</strong> → digite <code>03</code></li>
</ul>



<p>Depois ele vai pedir o domínio da Evolution API:</p>



<ul class="wp-block-list">
<li>informe: <code>api.seudominio.com</code> (garanta que o CNAME <code>api</code> já existe)</li>
</ul>



<p>Ao final ele exibe algo como:</p>



<ul class="wp-block-list">
<li><code>Server URL: https://api.seudominio.com</code></li>



<li><code>Global API Key: ...</code> (salve isso)</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-6-acesse-o-manager-da-evolution-api-orion-gerenciador">6) Acesse o “manager” da Evolution API (Orion/gerenciador)</h3>



<p>A URL indicada no guia:</p>



<ul class="wp-block-list">
<li><code>https://api.seudominio.com/manager</code></li>
</ul>



<p>Você entra com:</p>



<ul class="wp-block-list">
<li><strong>Server URL</strong> = <code>https://api.seudominio.com</code></li>



<li><strong>Global API Key</strong> = a chave exibida ao final da instalação</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading" id="h-7-verifique-no-portainer-se-esta-tudo-rodando">7) Verifique no Portainer se está tudo rodando</h3>



<p>No Portainer:</p>



<ul class="wp-block-list">
<li><strong>Stacks</strong> → encontre a stack da Evolution API → status “Running”</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading" id="h-o-que-esse-metodo-te-entrega-sem-gambiarra">O que esse método te entrega (sem gambiarra)</h2>



<ul class="wp-block-list">
<li>Docker instalado automaticamente</li>



<li>Traefik pronto (rotas + SSL)</li>



<li>Portainer pronto (gestão)</li>



<li>Evolution API instalada e acessível por domínio<br>Tudo via menu, no padrão do SetupOrion.</li>
</ul>
<p>The post <a href="https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/">Como instalar Docker, Portainer e Evolution API</a> appeared first on <a href="https://leonardonascimento.dev">Leonardo Nascimento | Engenheiro de Software</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://leonardonascimento.dev/blog/como-instalar-docker-portainer-e-evolution-api/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
