Comparação de Endpoints: Evolution GO vs Evolution V2
Este documento compara os endpoints disponíveis nos dois provedores de WhatsApp utilizados no Pilot Status: Evolution GO e Evolution V2.
Sumário
- Endpoints Exclusivos do Evolution GO
- Endpoints Exclusivos do Evolution V2
- Endpoints Comuns (com diferenças)
- Análise por Categoria
Endpoints Exclusivos do Evolution GO
Instance Management
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /instance/qr | GET | Obtém QR Code para conexão |
| /instance/pair | POST | Obtém pairing code para conexão |
| /instance/status | GET | Verifica status de conexão da instância |
| /instance/reconnect | POST | Reconecta uma instância |
| /instance/{instanceId}/advanced-settings | GET | Busca configurações avançadas |
| /instance/{instanceId}/advanced-settings | PUT | Atualiza configurações avançadas |
Message
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /send/text | POST | Envia mensagem de texto |
| /send/button | POST | Envia mensagem com botões |
| /send/media | POST | Envia mensagem de mídia |
| /message/status | POST | Verifica status de mensagem (Delivered/Read) |
Comportamento do /message/status:
- Retorna
result: nullquando mensagem ainda não foi entregue (equivalente a SERVER_ACK/PENDING) - Retorna
status: "Delivered"quando mensagem foi entregue ao destinatário - Retorna
status: "Read"quando mensagem foi lida pelo destinatário
Chat
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /message/presence | POST | Envia estado de presença (digitando, etc.) |
| /user/check | POST | Verifica se números existem no WhatsApp |
Group
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /group/info | GET | Obtém informações de um grupo |
| /group/list | GET | Lista todos os grupos que a instância participa |
Newsletter
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /newsletter/list | GET | Lista newsletters (canais) da conta |
Endpoints Exclusivos do Evolution V2
Instance Management
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /instance/connect/:instanceName | GET | Conecta uma instância existente (QR/Pairing) |
| /instance/connectionState/:instanceName | GET | Obtém estado de conexão da instância |
| /instance/setPresence/:instanceName | POST | Define estado de presença da instância |
| /instance/restart/:instanceName | POST | Reinicia uma instância |
| /settings/find/:instanceName | GET | Busca configurações locais |
| /settings/set/:instanceName | POST | Define configurações locais |
Message
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /message/sendText/:instanceName | POST | Envia mensagem de texto |
| /message/sendButtons/:instanceName | POST | Envia mensagem com botões |
| /message/sendMedia/:instanceName | POST | Envia mensagem de mídia |
Chat
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /chat/sendPresence/:instanceName | POST | Envia estado de presença para um chat |
| /chat/whatsappNumbers/:instanceName | POST | Verifica informações de números WhatsApp |
Group
| Endpoint | Método | Descrição |
|----------|--------|-----------|
| /group/findGroupInfos/:instanceName | GET | Obtém informações de um grupo |
| /group/fetchAllGroups/:instanceName | GET | Lista todos os grupos que a instância participa |
Endpoints Comuns (com diferenças)
Create Instance
Evolution GO:
POST /instance/create
Body: { instanceId, name, token, advancedSettings, proxy?, ... }
Evolution V2:
POST /instance/create
Body: { instanceName, number, qrcode, integration, syncFullHistory, groupsIgnore, proxyFields?, extra? }
Logout Instance
Evolution GO:
DELETE /instance/logout
Evolution V2:
DELETE /instance/logout/:instanceName
Delete Instance
Evolution GO:
DELETE /instance/delete/{instanceId}
Evolution V2:
DELETE /instance/delete/:instanceName
Análise por Categoria
1. Gerenciamento de Instâncias
| Funcionalidade | Evolution GO | Evolution V2 | Observações |
|----------------|--------------|--------------|-------------|
| Criar instância | ✅ | ✅ | GO usa UUID, V2 usa nome |
| Conectar (QR/Pairing) | ✅ (separado) | ✅ (unificado) | GO: /instance/qr + /instance/pair |
| Verificar status | ✅ (/instance/status) | ✅ (/instance/connectionState) | |
| Definir presença | ✅ (via /message/presence) | ✅ (via /instance/setPresence) | |
| Reiniciar | ✅ (/instance/reconnect) | ✅ (/instance/restart) | |
| Logout | ✅ | ✅ | V2 inclui nome na URL |
| Deletar | ✅ | ✅ | GO usa ID, V2 usa nome |
| Configurações avançadas | ✅ (/instance/{id}/advanced-settings) | ❌ | GO exclusivo |
| Configurações locais | ❌ | ✅ (/settings/find, /settings/set) | V2 exclusivo |
2. Envio de Mensagens
| Funcionalidade | Evolution GO | Evolution V2 | Observações |
|----------------|--------------|--------------|-------------|
| Texto | ✅ (/send/text) | ✅ (/message/sendText/:name) | V2 inclui nome na URL |
| Botões | ✅ (/send/button) | ✅ (/message/sendButtons/:name) | GO usa imageUrl, V2 usa thumbnailUrl |
| Mídia | ✅ (/send/media) | ✅ (/message/sendMedia/:name) | GO usa type/url, V2 usa mediatype/media |
| Diferenças de Payload: |
| - Campo de tipo | type | mediatype | |
| - Campo de URL | url | media | |
| - Campo de arquivo | filename | fileName | |
3. Chat e Presença
| Funcionalidade | Evolution GO | Evolution V2 | Observações |
|----------------|--------------|--------------|-------------|
| Enviar presença (digitando) | ✅ (/message/presence) | ✅ (/chat/sendPresence) | |
| Buscar status de mensagem | ✅ (/message/status) | ✅ (/chat/findStatusMessage) | GO usa endpoint direto, V2 usa findStatusMessage |
| Verificar números WhatsApp | ✅ (/user/check) | ✅ (/chat/whatsappNumbers) | Respostas diferentes |
Diferenças de Verificação de Números:
Evolution GO:
POST /user/check
Body: { number: string[] }
Response: { data: { Users: [{ Query, IsInWhatsapp, JID, VerifiedName }] } }
Evolution V2:
POST /chat/whatsappNumbers/:instanceName
Body: { numbers: string[] }
Response: [{ number, exists, name }]
4. Grupos
| Funcionalidade | Evolution GO | Evolution V2 | Observações |
|----------------|--------------|--------------|-------------|
| Buscar informações | ✅ (/group/info) | ✅ (/group/findGroupInfos) | GO usa query param, V2 usa instanceName |
| Listar grupos | ✅ (/group/list) | ✅ (/group/fetchAllGroups) | |
Diferenças:
Evolution GO:
GET /group/info?jid=<groupJid>
Response: { data: { Subject: "..." } }
Evolution V2:
GET /group/findGroupInfos/:instanceName?groupJid=<jid>&participants=<bool>
Response: { subject: "..." }
5. Newsletters (Canais)
| Funcionalidade | Evolution GO | Evolution V2 | Observações |
|----------------|--------------|--------------|-------------|
| Listar newsletters | ✅ (/newsletter/list) | ❌ | GO exclusivo |
Evolution GO:
GET /newsletter/list
Response: { data: [{ id, thread_metadata: { name: { text } } }] }
Principais Diferenças Arquiteturais
1. Identificação de Instância
Evolution GO:
- Usa UUID para identificar instâncias
- ID armazenado em
WhatsAppInstance.goInstanceId - Instância pode ser excluída sem afetar o nome
Evolution V2:
- Usa nome da instância (string) como identificador
- Nome faz parte da URL em quase todos os endpoints
- Ex:
/message/sendText/{instanceName}
2. Autenticação
Evolution GO:
- Chave global para operações admin (
create,delete) - Token por instância para operações específicas
- Token passado via header
apikey
Evolution V2:
- Usa API key do ambiente em quase tudo
- Algumas operações aceitam override via
opts.apiKey
3. Formato de Resposta
Evolution GO:
- Retorna wrapper
{ data: {...}, message: "success" } - Campos capitalizados (ex:
Subject,JID)
Evolution V2:
- Retorna dados diretamente ou com campos específicos
- Campos em camelCase
4. Webhooks e Eventos
Evolution GO:
- Eventos de status:
Delivered,Readvia webhookReceipt - Não possui evento
SERVER_ACK
Evolution V2:
- Eventos de status:
PENDING,SERVER_ACK,DELIVERED,READ,ERROR - Via webhook
messages.update
Tabela Resumida
| Endpoint | GO | V2 | Equivalência |
|----------|----|----|-------------|
| Instance - Create | ✅ | ✅ | Similar |
| Instance - Connect | /instance/qr + /instance/pair | /instance/connect/:name | ✅ Diferente |
| Instance - Status | /instance/status | /instance/connectionState/:name | ✅ Similar |
| Instance - Set Presence | /message/presence | /instance/setPresence/:name | ✅ Diferente |
| Instance - Restart | /instance/reconnect | /instance/restart/:name | ✅ Similar |
| Instance - Logout | /instance/logout | /instance/logout/:name | ✅ Similar |
| Instance - Delete | /instance/delete/{id} | /instance/delete/:name | ✅ Similar |
| Instance - Advanced Settings | ✅ | ❌ | GO exclusivo |
| Instance - Local Settings | ❌ | ✅ /settings/find & /settings/set | V2 exclusivo |
| Message - Send Text | /send/text | /message/sendText/:name | ✅ Similar |
| Message - Send Buttons | /send/button | /message/sendButtons/:name | ✅ Similar |
| Message - Send Media | /send/media | /message/sendMedia/:name | ✅ Similar |
| Message - Get Status | /message/status | /chat/findStatusMessage/:name | ✅ Diferente |
| Chat - Send Presence | /message/presence | /chat/sendPresence/:name | ✅ Similar |
| Chat - Check Numbers | /user/check | /chat/whatsappNumbers/:name | ✅ Similar |
| Group - Find Info | /group/info | /group/findGroupInfos/:name | ✅ Similar |
| Group - List | /group/list | /group/fetchAllGroups/:name | ✅ Similar |
| Newsletter - List | /newsletter/list | ❌ | GO exclusivo |
Legenda
- ✅ = Disponível no provedor
- ❌ = Não disponível no provedor
- Similar = Funcionalidade equivalente com pequenas diferenças
- Diferente = Funcionalidade disponível mas com abordagem diferente
Referências
- Código Evolution GO:
packages/whatsapp-provider/src/go/ - Código Evolution V2:
packages/whatsapp-provider/src/v2/ - Documentação Geral:
docs/evolution-api-endpoints.md - Tipos Compartilhados:
packages/whatsapp-provider/src/types.ts