›_ documentação
API do msg.api
Tudo o que dá para fazer com o WhatsApp conectado: 104 endpoints REST, webhooks de mensagens recebidas, servidor MCP para agentes de IA e nó para o n8n.
Autenticação
A base da API é https://msg.api.br. Cada número conectado tem a própria chave, que vai no header apikey (ou como Authorization: Bearer). A chave aparece no painel, na aba Docs do número. O corpo das requisições é JSON.
curl -X POST 'https://msg.api.br/message/send-text' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"text": "Olá! Tudo bem?"
}'Especificação OpenAPI 3.1: https://painel.msg.api.br/openapi.json
Integrações sem código
- ChatGPT, Claude e outros apps com MCP: servidor MCP em
https://msg.api.br/mcp(Streamable HTTP). No Claude e nos apps com OAuth, basta o endereço: você entra na sua conta e escolhe o número. Nos demais, a chave vai no headerapikey. - n8n: instale o nó
n8n-nodes-msgapiem Settings › Community Nodes › Install. Ele envia mensagens e dispara fluxos quando chega mensagem nova.
Endpoints
Conexão
GET/health
API no ar
Não precisa de chave.
curl -X GET 'https://msg.api.br/health'
ok
GET/status
Estado da conexão
curl -X GET 'https://msg.api.br/status' \ -H 'apikey: SUA_CHAVE'
{
"connected": true
}GET/me
Número conectado
curl -X GET 'https://msg.api.br/me' \ -H 'apikey: SUA_CHAVE'
{
"connected": true,
"logged_in": true,
"push_name": "Minha Empresa",
"pn": "5567999999999@s.whatsapp.net",
"lid": "123456789012345@lid"
}GET/qr
QR de pareamento (texto)
curl -X GET 'https://msg.api.br/qr' \ -H 'apikey: SUA_CHAVE'
{
"qr": "2@AbC…"
}GET/qr.svg
QR de pareamento (SVG)
curl -X GET 'https://msg.api.br/qr.svg' \ -H 'apikey: SUA_CHAVE'
<svg …>
POST/account/disconnect
Desconectar (mantém a sessão)
curl -X POST 'https://msg.api.br/account/disconnect' \ -H 'apikey: SUA_CHAVE'
POST/account/reconnect
Reconectar
curl -X POST 'https://msg.api.br/account/reconnect' \ -H 'apikey: SUA_CHAVE'
POST/account/logout
Sair e apagar a sessão
Depois disso é preciso parear de novo.
curl -X POST 'https://msg.api.br/account/logout' \ -H 'apikey: SUA_CHAVE'
POST/call/reject
Rejeitar chamada
| Campo | Tipo | Descrição |
|---|---|---|
call_id | string | ID da chamada |
call_from | string | JID de quem ligou |
curl -X POST 'https://msg.api.br/call/reject' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"call_id": "A1B2C3D4E5F6",
"call_from": "5567999999999@s.whatsapp.net"
}'Mensagens
POST/message/send-text
Enviar texto
Com o modo Comportamento ligado a resposta é {"queued": true, "id": "…"} e o resultado chega por webhook.
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
text | string | Texto |
urgentopcional | boolean | Envia na hora, ignorando a fila do modo Comportamento |
curl -X POST 'https://msg.api.br/message/send-text' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"text": "Olá! Tudo bem?"
}'{
"ok": true,
"message_id": "3EB0C767D26A1D0C5F12",
"to": "5567999999999@s.whatsapp.net"
}POST/message/send-reaction
Reagir
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
message_id | string | ID da mensagem |
emoji | string | Emoji da reação |
from_meopcional | boolean | A mensagem foi enviada por este número |
curl -X POST 'https://msg.api.br/message/send-reaction' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"message_id": "3EB0C767D26A1D0C5F12",
"emoji": "👍"
}'POST/message/edit
Editar
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
message_id | string | ID da mensagem |
text | string | Texto |
curl -X POST 'https://msg.api.br/message/edit' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"message_id": "3EB0C767D26A1D0C5F12",
"text": "Texto corrigido"
}'POST/message/delete
Apagar para todos
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
message_id | string | ID da mensagem |
curl -X POST 'https://msg.api.br/message/delete' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"message_id": "3EB0C767D26A1D0C5F12"
}'POST/message/pin
Fixar
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
message_id | string | ID da mensagem |
durationopcional | string | 24h | 7d | 30d |
from_meopcional | boolean | A mensagem foi enviada por este número |
participantopcional | string | Autor da mensagem (em grupos) |
curl -X POST 'https://msg.api.br/message/pin' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"message_id": "3EB0C767D26A1D0C5F12",
"duration": "7d"
}'POST/message/unpin
Desafixar
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
message_id | string | ID da mensagem |
from_meopcional | boolean | A mensagem foi enviada por este número |
participantopcional | string | Autor da mensagem (em grupos) |
curl -X POST 'https://msg.api.br/message/unpin' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"message_id": "3EB0C767D26A1D0C5F12"
}'POST/message/mark-read
Marcar como lida
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat |
message_ids | string[] | IDs das mensagens |
senderopcional | string | Autor das mensagens (em grupos) |
curl -X POST 'https://msg.api.br/message/mark-read' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"chat": "5567999999999@s.whatsapp.net",
"message_ids": [
"3EB0C767D26A1D0C5F12"
]
}'Mídia
POST/message/send-media
Enviar mídia
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
type | string | image | video | audio | document |
data_base64 | string | Arquivo em base64 |
mimetype | string | Tipo MIME do arquivo |
captionopcional | string | Legenda |
filenameopcional | string | Nome do arquivo (documentos) |
curl -X POST 'https://msg.api.br/message/send-media' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"type": "image",
"data_base64": "iVBORw0KGgoAAAANSUhEUgAA…",
"mimetype": "image/png",
"caption": "Confira!"
}'{
"ok": true,
"message_id": "3EB0C767D26A1D0C5F12"
}POST/message/download-media
Baixar mídia recebida
| Campo | Tipo | Descrição |
|---|---|---|
type | string | image | video | audio | document |
direct_path | string | media.direct_path do webhook |
media_key_base64 | string | media.media_key do webhook |
file_sha256_base64 | string | media.file_sha256 do webhook |
file_enc_sha256_base64 | string | media.file_enc_sha256 do webhook |
file_length | number | media.file_length do webhook |
curl -X POST 'https://msg.api.br/message/download-media' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"type": "image",
"direct_path": "/v/t62.7118-24/…",
"media_key_base64": "…",
"file_sha256_base64": "…",
"file_enc_sha256_base64": "…",
"file_length": 52341
}'{
"ok": true,
"size": 52341,
"data_base64": "/9j/4AAQSkZJRg…"
}Chats
POST/chat/archive
Arquivar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/chat/archive' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/unarchive
Desarquivar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/chat/unarchive' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/pin
Fixar chat
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/chat/pin' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/unpin
Desafixar chat
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/chat/unpin' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/mute
Silenciar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
until_ts_msopcional | number | Até quando (epoch em ms). Sem o campo: para sempre |
curl -X POST 'https://msg.api.br/chat/mute' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/unmute
Reativar som
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/chat/unmute' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/mark-read
Marcar chat como lido
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
readopcional | boolean | false marca como não lido |
curl -X POST 'https://msg.api.br/chat/mark-read' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net",
"read": true
}'POST/chat/delete
Apagar chat
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
delete_mediaopcional | boolean | Apaga também as mídias do aparelho |
curl -X POST 'https://msg.api.br/chat/delete' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/chat/star
Favoritar mensagem
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat |
message_id | string | ID da mensagem |
from_meopcional | boolean | A mensagem foi enviada por este número |
participantopcional | string | Autor da mensagem (em grupos) |
curl -X POST 'https://msg.api.br/chat/star' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"chat": "5567999999999@s.whatsapp.net",
"message_id": "3EB0C767D26A1D0C5F12"
}'POST/chat/unstar
Desfavoritar mensagem
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat |
message_id | string | ID da mensagem |
from_meopcional | boolean | A mensagem foi enviada por este número |
participantopcional | string | Autor da mensagem (em grupos) |
curl -X POST 'https://msg.api.br/chat/unstar' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"chat": "5567999999999@s.whatsapp.net",
"message_id": "3EB0C767D26A1D0C5F12"
}'POST/chat/delete-message-for-me
Apagar mensagem só para mim
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat |
message_id | string | ID da mensagem |
from_meopcional | boolean | A mensagem foi enviada por este número |
delete_mediaopcional | boolean | Apaga também as mídias do aparelho |
participantopcional | string | Autor da mensagem (em grupos) |
curl -X POST 'https://msg.api.br/chat/delete-message-for-me' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"chat": "5567999999999@s.whatsapp.net",
"message_id": "3EB0C767D26A1D0C5F12"
}'POST/chat/typing
Digitando / gravando
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
state | string | composing | recording | paused |
curl -X POST 'https://msg.api.br/chat/typing' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"state": "composing"
}'Presença
POST/presence/set
Definir presença
| Campo | Tipo | Descrição |
|---|---|---|
status | string | available | unavailable |
curl -X POST 'https://msg.api.br/presence/set' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"status": "available"
}'POST/presence/subscribe
Acompanhar presença
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/presence/subscribe' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'POST/presence/unsubscribe
Parar de acompanhar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/presence/unsubscribe' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999@s.whatsapp.net"
}'Perfil
POST/profile/status
Alterar recado
| Campo | Tipo | Descrição |
|---|---|---|
text | string | Texto |
curl -X POST 'https://msg.api.br/profile/status' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"text": "Atendimento das 8h às 18h"
}'POST/profile/name
Alterar nome
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome |
curl -X POST 'https://msg.api.br/profile/name' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"name": "Minha Empresa"
}'POST/profile/picture
Alterar foto
| Campo | Tipo | Descrição |
|---|---|---|
image_base64 | string | Imagem JPEG em base64 |
curl -X POST 'https://msg.api.br/profile/picture' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"image_base64": "/9j/4AAQSkZJRg…"
}'POST/profile/remove-picture
Remover foto
curl -X POST 'https://msg.api.br/profile/remove-picture' \ -H 'apikey: SUA_CHAVE'
Contatos
POST/contact/check
Tem WhatsApp?
| Campo | Tipo | Descrição |
|---|---|---|
jids | string[] | Números ou JIDs |
curl -X POST 'https://msg.api.br/contact/check' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jids": [
"5567999999999"
]
}'POST/contact/info
Informações
| Campo | Tipo | Descrição |
|---|---|---|
jids | string[] | Números ou JIDs |
curl -X POST 'https://msg.api.br/contact/info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jids": [
"5567999999999"
]
}'POST/contact/profile-picture
Foto de perfil
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
previewopcional | boolean | Miniatura em vez da imagem completa |
curl -X POST 'https://msg.api.br/contact/profile-picture' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999",
"preview": false
}'POST/contact/business-profile
Perfil comercial
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/contact/business-profile' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999"
}'POST/contact/block
Bloquear
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/contact/block' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999"
}'POST/contact/unblock
Desbloquear
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/contact/unblock' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999"
}'POST/contact/is-blocked
Está bloqueado?
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/contact/is-blocked' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "5567999999999"
}'GET/contact/blocklist
Lista de bloqueados
curl -X GET 'https://msg.api.br/contact/blocklist' \ -H 'apikey: SUA_CHAVE'
Grupos
GET/group/list
Listar grupos
curl -X GET 'https://msg.api.br/group/list' \ -H 'apikey: SUA_CHAVE'
POST/group/create
Criar grupo
| Campo | Tipo | Descrição |
|---|---|---|
subject | string | Nome do grupo |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/create' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"subject": "Equipe de vendas",
"participants": [
"5567999999999"
]
}'POST/group/info
Informações
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/group/info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/group/subject
Alterar nome
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
subject | string | Nome do grupo |
curl -X POST 'https://msg.api.br/group/subject' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"subject": "Novo nome"
}'POST/group/description
Alterar descrição
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
description | string | Descrição |
curl -X POST 'https://msg.api.br/group/description' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"description": "Avisos da equipe"
}'POST/group/leave
Sair do grupo
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/group/leave' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/group/participants/add
Adicionar membros
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/participants/add' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/participants/remove
Remover membros
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/participants/remove' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/participants/promote
Promover a admin
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/participants/promote' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/participants/demote
Remover admin
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/participants/demote' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/invite-link
Link de convite
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
resetopcional | boolean | Gera um link novo (o anterior para de funcionar) |
curl -X POST 'https://msg.api.br/group/invite-link' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"reset": false
}'POST/group/join
Entrar por convite
| Campo | Tipo | Descrição |
|---|---|---|
code | string | Código ou link de convite |
curl -X POST 'https://msg.api.br/group/join' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"code": "AbCdEfGh1234"
}'POST/group/invite-info
Ver convite sem entrar
| Campo | Tipo | Descrição |
|---|---|---|
code | string | Código ou link de convite |
curl -X POST 'https://msg.api.br/group/invite-info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"code": "AbCdEfGh1234"
}'POST/group/requests
Pedidos de entrada
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/group/requests' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/group/requests/approve
Aprovar pedidos
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/requests/approve' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/requests/reject
Recusar pedidos
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/requests/reject' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/requests/cancel
Cancelar pedidos
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/requests/cancel' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/requests/revoke-code
Revogar convites
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
participants | string[] | Números ou JIDs dos membros |
curl -X POST 'https://msg.api.br/group/requests/revoke-code' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"participants": [
"5567999999999"
]
}'POST/group/acknowledge
Confirmar grupo
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/group/acknowledge' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/group/member-label
Etiqueta de membro
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
label | string | Etiqueta |
curl -X POST 'https://msg.api.br/group/member-label' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"label": "Financeiro"
}'POST/group/batch-info
Vários grupos
| Campo | Tipo | Descrição |
|---|---|---|
jids | string[] | Números ou JIDs |
curl -X POST 'https://msg.api.br/group/batch-info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jids": [
"120363000000000000@g.us"
]
}'POST/group/profile-pictures
Fotos de vários grupos
| Campo | Tipo | Descrição |
|---|---|---|
jids | string[] | Números ou JIDs |
previewopcional | boolean | Miniatura em vez da imagem completa |
curl -X POST 'https://msg.api.br/group/profile-pictures' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jids": [
"120363000000000000@g.us"
],
"preview": false
}'POST/group/settings/locked
Só admins editam dados
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
locked | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/locked' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"locked": true
}'POST/group/settings/announce
Só admins enviam mensagens
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
announce | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/announce' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"announce": true
}'POST/group/settings/ephemeral
Mensagens temporárias
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
seconds | number | 0 desliga · 86400 (24h) · 604800 (7d) · 7776000 (90d) |
curl -X POST 'https://msg.api.br/group/settings/ephemeral' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"seconds": 604800
}'POST/group/settings/membership-approval
Aprovação para entrar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
value | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/membership-approval' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"value": true
}'POST/group/settings/member-add-mode
Quem adiciona membros
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
mode | string | admin | all |
curl -X POST 'https://msg.api.br/group/settings/member-add-mode' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"mode": "admin"
}'POST/group/settings/member-link-mode
Quem compartilha o link
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
mode | string | admin | all |
curl -X POST 'https://msg.api.br/group/settings/member-link-mode' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"mode": "admin"
}'POST/group/settings/member-share-history
Quem compartilha o histórico
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
mode | string | admin | all |
curl -X POST 'https://msg.api.br/group/settings/member-share-history' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"mode": "admin"
}'POST/group/settings/no-frequently-forwarded
Bloquear encaminhadas com frequência
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
value | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/no-frequently-forwarded' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"value": true
}'POST/group/settings/allow-admin-reports
Denúncias para admins
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
value | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/allow-admin-reports' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"value": true
}'POST/group/settings/history
Histórico para novos membros
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
value | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/history' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"value": true
}'POST/group/settings/limit-sharing
Limitar compartilhamento
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
value | boolean | Ligado / desligado |
curl -X POST 'https://msg.api.br/group/settings/limit-sharing' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us",
"value": true
}'Enquetes
POST/poll/create
Criar enquete
Guarde o message_secret_base64: ele é exigido para votar.
| Campo | Tipo | Descrição |
|---|---|---|
to | string | Número (DDI+DDD+número) ou JID do destino |
name | string | Pergunta |
options | string[] | Opções |
selectable_countopcional | number | Quantas opções cada pessoa pode marcar |
curl -X POST 'https://msg.api.br/poll/create' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"to": "5567999999999",
"name": "Melhor horário?",
"options": [
"Manhã",
"Tarde"
],
"selectable_count": 1
}'{
"ok": true,
"message_id": "3EB0C767D26A1D0C5F12",
"message_secret_base64": "q1w2e3…"
}POST/poll/vote
Votar
| Campo | Tipo | Descrição |
|---|---|---|
chat | string | JID do chat |
poll_message_id | string | ID da mensagem da enquete |
poll_creator | string | JID de quem criou a enquete |
message_secret_base64 | string | Segredo devolvido na criação |
options | string[] | Opções escolhidas |
curl -X POST 'https://msg.api.br/poll/vote' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"chat": "5567999999999@s.whatsapp.net",
"poll_message_id": "3EB0C767D26A1D0C5F12",
"poll_creator": "5567999999999@s.whatsapp.net",
"message_secret_base64": "q1w2e3…",
"options": [
"Manhã"
]
}'{
"ok": true,
"message_id": "3EB0C767D26A1D0C5F12"
}Privacidade
GET/privacy
Configurações atuais
curl -X GET 'https://msg.api.br/privacy' \ -H 'apikey: SUA_CHAVE'
POST/privacy/set
Alterar privacidade
| Campo | Tipo | Descrição |
|---|---|---|
category | string | last | online | profile | status | groupadd | readreceipts | calladd | messages |
value | string | all | contacts | none | contact_blacklist | match_last_seen | known | off | on_standard |
curl -X POST 'https://msg.api.br/privacy/set' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"category": "last",
"value": "contacts"
}'POST/privacy/disappearing
Temporárias por padrão
| Campo | Tipo | Descrição |
|---|---|---|
seconds | number | Duração em segundos (0 desliga) |
curl -X POST 'https://msg.api.br/privacy/disappearing' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"seconds": 0
}'Status (stories)
POST/status/send-text
Publicar status de texto
| Campo | Tipo | Descrição |
|---|---|---|
text | string | Texto |
recipients | string[] | Números ou JIDs que podem ver |
background_argbopcional | number | Cor de fundo (ARGB) |
fontopcional | number | Fonte (número) |
curl -X POST 'https://msg.api.br/status/send-text' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"text": "Promoção de hoje!",
"recipients": [
"5567999999999"
]
}'POST/status/revoke
Apagar status
| Campo | Tipo | Descrição |
|---|---|---|
message_id | string | ID da mensagem |
recipients | string[] | Números ou JIDs que podem ver |
curl -X POST 'https://msg.api.br/status/revoke' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"message_id": "3EB0C767D26A1D0C5F12",
"recipients": [
"5567999999999"
]
}'Canais
GET/newsletter/list
Canais seguidos
curl -X GET 'https://msg.api.br/newsletter/list' \ -H 'apikey: SUA_CHAVE'
POST/newsletter/info
Informações
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/newsletter/info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter"
}'POST/newsletter/create
Criar canal
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome |
descriptionopcional | string | Descrição |
curl -X POST 'https://msg.api.br/newsletter/create' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"name": "Novidades",
"description": "Ofertas e avisos"
}'POST/newsletter/join
Seguir
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/newsletter/join' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter"
}'POST/newsletter/leave
Deixar de seguir
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/newsletter/leave' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter"
}'POST/newsletter/update
Editar canal
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
nameopcional | string | Nome |
descriptionopcional | string | Descrição |
curl -X POST 'https://msg.api.br/newsletter/update' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter",
"name": "Novo nome"
}'POST/newsletter/invite-info
Ver convite
| Campo | Tipo | Descrição |
|---|---|---|
code | string | Código ou link de convite |
curl -X POST 'https://msg.api.br/newsletter/invite-info' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"code": "0029VaAbCdEf"
}'POST/newsletter/subscribe-live
Atualizações ao vivo
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/newsletter/subscribe-live' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter"
}'POST/newsletter/react
Reagir
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
server_id | number | ID da mensagem no canal |
reaction | string | Emoji |
curl -X POST 'https://msg.api.br/newsletter/react' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter",
"server_id": 123,
"reaction": "👍"
}'POST/newsletter/messages
Mensagens do canal
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
count | number | Quantidade |
beforeopcional | number | Busca antes deste server_id |
curl -X POST 'https://msg.api.br/newsletter/messages' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@newsletter",
"count": 20
}'Comunidades
POST/community/create
Criar comunidade
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome |
descriptionopcional | string | Descrição |
closedopcional | boolean | Entrada só com aprovação |
curl -X POST 'https://msg.api.br/community/create' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"name": "Clientes",
"description": "Comunidade de clientes",
"closed": false
}'POST/community/deactivate
Desativar
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/community/deactivate' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/community/link
Vincular grupos
| Campo | Tipo | Descrição |
|---|---|---|
community | string | JID da comunidade |
subgroups | string[] | JIDs dos subgrupos |
remove_orphan_membersopcional | boolean | Remove membros que ficarem sem grupo |
curl -X POST 'https://msg.api.br/community/link' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"community": "120363000000000000@g.us",
"subgroups": [
"120363111111111111@g.us"
]
}'POST/community/unlink
Desvincular grupos
| Campo | Tipo | Descrição |
|---|---|---|
community | string | JID da comunidade |
subgroups | string[] | JIDs dos subgrupos |
remove_orphan_membersopcional | boolean | Remove membros que ficarem sem grupo |
curl -X POST 'https://msg.api.br/community/unlink' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"community": "120363000000000000@g.us",
"subgroups": [
"120363111111111111@g.us"
]
}'POST/community/subgroups
Subgrupos
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/community/subgroups' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/community/subgroup-counts
Membros por subgrupo
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/community/subgroup-counts' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/community/participants
Membros
| Campo | Tipo | Descrição |
|---|---|---|
jid | string | JID do chat, contato ou grupo (aceita número) |
curl -X POST 'https://msg.api.br/community/participants' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"jid": "120363000000000000@g.us"
}'POST/community/query-linked
Consultar subgrupo vinculado
| Campo | Tipo | Descrição |
|---|---|---|
community | string | JID da comunidade |
subgroup | string | JID do subgrupo |
curl -X POST 'https://msg.api.br/community/query-linked' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"community": "120363000000000000@g.us",
"subgroup": "120363111111111111@g.us"
}'POST/community/join-subgroup
Entrar em subgrupo
| Campo | Tipo | Descrição |
|---|---|---|
community | string | JID da comunidade |
subgroup | string | JID do subgrupo |
curl -X POST 'https://msg.api.br/community/join-subgroup' \
-H 'apikey: SUA_CHAVE' \
-H 'content-type: application/json' \
-d '{
"community": "120363000000000000@g.us",
"subgroup": "120363111111111111@g.us"
}'Webhooks
Configure a URL do webhook no painel. Cada mensagem recebida gera um POST em JSON:
{
"tenant": "lobo-rosa-1542",
"id": "3EB0C767D26A1D0C5F12",
"from": "5567999999999@s.whatsapp.net",
"chat": "5567999999999@s.whatsapp.net",
"from_me": false,
"text": "Oi! Quero um orçamento",
"media": null
}Mensagens enviadas pela fila geram os eventos message.sent e message.failed:
{
"event": "message.sent",
"queue_id": "8f14e45f-ceea-4672-a8b5-2a6c8b1f0d3e",
"tenant": "lobo-rosa-1542",
"wa_id": "3EB0C767D26A1D0C5F12",
"to": "5567999999999@s.whatsapp.net"
}Versão e limites
A versão atual é a v1: https://msg.api.br/v1/..., e as rotas sem prefixo respondem igual. Mudança incompatível só entra numa versão nova (/v2), avisada com pelo menos 6 meses de antecedência.
Cada chave pode fazer até 600 requisições por minuto. Os headers RateLimit-Remaining e RateLimit-Reset mostram quanto resta; acima do limite a resposta é 429 com Retry-After.
Erros
Os erros respondem em JSON, com a mensagem em português: {"error": "..."}.
| 400 | Corpo inválido ou valor fora do permitido |
| 401 | Apikey ausente ou inválida |
| 402 | Plano vencido: regularize no painel |
| 403 | Número desativado ou conta suspensa |
| 404 | Rota ou recurso não encontrado |
| 415 | Faltou o header content-type: application/json |
| 422 | Campo obrigatório ausente ou com tipo errado |
| 429 | Limite de requisições atingido: aguarde o tempo do header Retry-After |
| 502 | Número ainda não pareado ou o WhatsApp recusou a operação |
| 503 | Conexão ainda iniciando |
Dúvidas? Fale com a gente.