Pular para o conteúdo principal
A Camada de API Evolution V2 do Pilot Status é uma ponte de compatibilidade transparente para aplicações construídas sobre a Evolution API V2. Alterar sua base URL para o endpoint da camada do Pilot Status é tudo o que é necessário para migrar sua infraestrutura — seus corpos de requisição, parsing de respostas, handlers de webhook e cabeçalhos de autenticação permanecem exatamente como estão.

Base URL

Atualize a variável de ambiente da sua base URL ou a configuração do seu cliente HTTP para o seguinte:
https://pilotstatus.com.br/api/layer/evolution-v2/
Cada caminho que você chama atualmente no seu servidor Evolution V2 é anexado a esta base URL sem qualquer modificação.

Autenticação

Passe sua chave de API do Pilot Status no cabeçalho apikey, exatamente como a Evolution V2 espera:
apikey: YOUR_API_KEY
Você não precisa alterar nenhuma lógica de autenticação na sua aplicação — apenas o valor da chave de API precisa ser substituído pela sua chave do Pilot Status.

Operações suportadas

Cada operação abaixo é encaminhada para a instância Evolution API V2 subjacente do seu número. Em cada caminho, {instance} é o último segmento do caminho e resolve para o nome de exibição que você deu ao número no painel do Pilot Status. Operações de envio e de mensagem são balanceadas entre as instâncias conectadas do número (sendReaction é a exceção — não é balanceada). Qualquer caminho que não esteja neste catálogo retorna 404; caminhos globais (de servidor) retornam 403 — veja Bloqueado (global) abaixo.

Instância

MétodoCaminho
POST/instance/restart/{instance}
GET/instance/connect/{instance}
GET/instance/connectionState/{instance}
POST/instance/setPresence/{instance}
DELETE/instance/logout/{instance}
DELETE/instance/delete/{instance}

Mensagem

Todos os endpoints de mensagem são POST /message/<ação>/{instance} e são balanceados entre as instâncias conectadas (exceto sendReaction).
AçãoCaminho
Enviar templatePOST /message/sendTemplate/{instance}
Enviar textoPOST /message/sendText/{instance}
Enviar mídiaPOST /message/sendMedia/{instance}
Enviar PTV (nota de vídeo)POST /message/sendPtv/{instance}
Enviar áudioPOST /message/sendWhatsAppAudio/{instance}
Enviar statusPOST /message/sendStatus/{instance}
Enviar stickerPOST /message/sendSticker/{instance}
Enviar localizaçãoPOST /message/sendLocation/{instance}
Enviar contatoPOST /message/sendContact/{instance}
Enviar reação (não balanceada)POST /message/sendReaction/{instance}
Enviar enquetePOST /message/sendPoll/{instance}
Enviar listaPOST /message/sendList/{instance}
Enviar botõesPOST /message/sendButtons/{instance}
Enviar carrosselPOST /message/sendCarousel/{instance}

Chat

MétodoCaminho
POST/chat/whatsappNumbers/{instance}
POST/chat/markMessageAsRead/{instance}
POST/chat/archiveChat/{instance}
POST/chat/markChatUnread/{instance}
DELETE/chat/deleteMessageForEveryone/{instance}
POST/chat/getBase64FromMediaMessage/{instance}
POST/chat/updateMessage/{instance}
POST/chat/sendPresence/{instance}
POST/chat/updateBlockStatus/{instance}
GET/chat/findChatByRemoteJid/{instance}
POST/chat/findContacts/{instance}
POST/chat/findMessages/{instance}
POST/chat/findStatusMessage/{instance}
POST/chat/findChats/{instance}

Perfil

MétodoCaminho
POST/chat/fetchProfilePictureUrl/{instance}
POST/chat/fetchBusinessProfile/{instance}
POST/chat/fetchProfile/{instance}
POST/chat/updateProfileName/{instance}
POST/chat/updateProfileStatus/{instance}
POST/chat/updateProfilePicture/{instance}
DELETE/chat/removeProfilePicture/{instance}
GET/chat/fetchPrivacySettings/{instance}
POST/chat/updatePrivacySettings/{instance}

Grupo

MétodoCaminho
POST/group/create/{instance}
POST/group/updateGroupSubject/{instance}
POST/group/updateGroupPicture/{instance}
POST/group/updateGroupDescription/{instance}
GET/group/findGroupInfos/{instance}
GET/group/fetchAllGroups/{instance}
GET/group/participants/{instance}
GET/group/inviteCode/{instance}
GET/group/inviteInfo/{instance}
GET/group/acceptInviteCode/{instance}
POST/group/sendInvite/{instance}
POST/group/revokeInviteCode/{instance}
POST/group/updateParticipant/{instance}
POST/group/updateSetting/{instance}
POST/group/updateMemberAddMode/{instance}
POST/group/toggleEphemeral/{instance}
DELETE/group/leaveGroup/{instance}

Etiqueta (Label)

MétodoCaminho
GET/label/findLabels/{instance}
POST/label/handleLabel/{instance}

Template

MétodoCaminho
POST/template/create/{instance}
POST/template/edit/{instance}
DELETE/template/delete/{instance}
GET/template/find/{instance}

Configurações e Proxy

MétodoCaminho
POST/settings/set/{instance}
GET/settings/find/{instance}
POST/proxy/set/{instance}
GET/proxy/find/{instance}

Chamada e Business

MétodoCaminho
POST/call/offer/{instance}
POST/business/getCatalog/{instance}
POST/business/getCollections/{instance}

Integrações / chatbots

Cada integração de chatbot — evolutionBot, typebot, openai, dify, flowise, n8n e evoai — expõe o mesmo conjunto de endpoints (substitua {name} pelo nome da integração):
MétodoCaminho
POST/{name}/create/{instance}
GET/{name}/find/{instance}
GET/{name}/fetch/{id}/{instance}
PUT/{name}/update/{id}/{instance}
DELETE/{name}/delete/{id}/{instance}
POST/{name}/settings/{instance}
GET/{name}/fetchSettings/{instance}
POST/{name}/changeStatus/{instance}
GET/{name}/fetchSessions/{id}/{instance}
POST/{name}/ignoreJid/{instance}
Extras específicos por integração:
MétodoCaminho
POST/typebot/start/{instance}
POST / GET/openai/creds/{instance}
DELETE/openai/creds/{id}/{instance}
GET/openai/getModels/{instance}
POST/chatwoot/set/{instance}
GET/chatwoot/find/{instance}
POST/chatwoot/webhook/{instance}

Brokers de eventos

Cada broker — webhook, websocket, rabbitmq, nats, pusher, sqs e kafka — expõe set/find (substitua {name} pelo nome do broker):
MétodoCaminho
POST/{name}/set/{instance}
GET/{name}/find/{instance}

Armazenamento (S3)

MétodoCaminho
POST/s3/getMedia/{instance}
POST/s3/getMediaUrl/{instance}

Bloqueado (global)

Caminhos globais (de servidor) não fazem parte da camada de migração e sempre retornam 403. Isso inclui: GET / (raiz), POST /verify-creds, GET /manager, GET /metrics, GET /assets/*, POST /instance/create e GET /instance/fetchInstances. Provisione e gerencie seus números pelo painel do Pilot Status ou pela API nativa. Qualquer caminho não listado neste catálogo retorna 404.

Eventos

A camada encaminha os eventos recebidos para o webhook que você configurou para o número, no formato nativo da própria Evolution API V2 (nomes de eventos em minúsculas, separados por ponto):
EventoEvento
messages.upsertmessages.edited
messages.updatemessages.delete
send.messagesend.message.update
connection.updateqrcode.updated
logout.instancecontacts.upsert
contacts.updatechats.upsert
chats.updatechats.delete
presence.updategroups.upsert
groups.updategroup-participants.update
calltypebot.start
typebot.change-statuslabels.edit
labels.association
Além disso, o Pilot Status pode entregar seus próprios eventos normalizados junto com os nativos: os eventos do ciclo de vida de chamada call.ringing, call.connected, call.ended e call.missed, além dos eventos de ciclo de vida do número number.created, number.connected, number.disconnected e number.removed.

Exemplo: enviar texto via camada Evolution V2

A requisição abaixo é uma chamada padrão de envio de texto da Evolution V2 roteada através da camada do Pilot Status. Observe que o corpo da requisição usa o formato da Evolution V2 sem alterações.
curl -X POST 'https://pilotstatus.com.br/api/layer/evolution-v2/message/sendText/MyInstance' \
  -H 'apikey: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "number": "5511999999999",
    "text": "Hello from Pilot Status via API Layer! 👋"
  }'
Substitua MyInstance pelo nome de exibição que você atribuiu ao seu número no painel do Pilot Status.

Mapeamento de nome de instância

Na Evolution V2, cada instância representa uma conexão do WhatsApp identificada por um nome. O Pilot Status usa a mesma convenção — o nome da instância no caminho da sua URL mapeia para o nome de exibição que você atribuiu ao seu número ao conectá-lo através do painel do Pilot Status. Por exemplo, se você nomeou seu número como SupportLine no painel, suas requisições devem usar:
POST /message/sendText/SupportLine
Se você tiver múltiplos números, cada um tem seu próprio nome de exibição e se comporta como uma instância separada — consistente com a forma como a Evolution V2 gerencia múltiplas instâncias.
Para novos projetos, considere usar a API nativa do Pilot Status — ela oferece acesso completo a todos os recursos, incluindo integração oficial com a Meta e análises avançadas.
Para orientações gerais de migração e uma visão geral de todos os provedores suportados, veja a visão geral da API Layer.