Skip to main content

Endpoint

POST /v1/messages/send
Também disponível como POST /v1/conversations/send (alias). Escopo necessário: write:messages

Canais suportados

CanalRequisito no contato
whatsappContato deve ter whatsapp_jid configurado
messengerContato deve ter messenger_psid configurado
O canal Instagram não está disponível na API pública neste momento.

Rate limits por canal

  • WhatsApp: 30 mensagens/minuto por instância
  • Messenger: 30 mensagens/minuto por página

Corpo da requisição

CampoTipoObrigatórioDescrição
contact_idstringSimID do contato destinatário
channelstringSimwhatsapp ou messenger
typestringNãotext (padrão), image, video, audio, document
contentstringCondicionalTexto da mensagem. Obrigatório quando type=text
media_urlstringCondicionalURL pública da mídia. Obrigatório para tipos não-texto
whatsapp_instance_idstringNãoID da instância WhatsApp. Se omitido, usa a instância conectada disponível
messenger_page_idstringNãoID da página Messenger. Se omitido, usa a página ativa
template_namestringNãoNome do template WhatsApp (Cloud API)
template_languagestringNãoCódigo do idioma do template. Padrão: pt_BR
template_componentsarrayNãoComponentes do template (Cloud API)

Comportamento de conversa

Se não existir uma conversa ativa entre o contato e a instância/página, uma nova conversa é criada automaticamente.

Exemplos

Texto via WhatsApp

curl -X POST https://api.socialsell.ai/v1/messages/send \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "664f1a2b3c4d5e6f78901234",
    "channel": "whatsapp",
    "type": "text",
    "content": "Olá! Sua proposta foi aprovada. Podemos agendar uma reunião?"
  }'

Imagem via WhatsApp

curl -X POST https://api.socialsell.ai/v1/messages/send \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "664f1a2b3c4d5e6f78901234",
    "channel": "whatsapp",
    "type": "image",
    "media_url": "https://meusistema.com/proposta.jpg",
    "content": "Segue a proposta em anexo!"
  }'

Template WhatsApp (Cloud API)

curl -X POST https://api.socialsell.ai/v1/messages/send \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "664f1a2b3c4d5e6f78901234",
    "channel": "whatsapp",
    "template_name": "boas_vindas",
    "template_language": "pt_BR",
    "template_components": [
      {
        "type": "body",
        "parameters": [
          {"type": "text", "text": "João Silva"}
        ]
      }
    ]
  }'

Texto via Messenger

curl -X POST https://api.socialsell.ai/v1/messages/send \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "contact_id": "664f1a2b3c4d5e6f78901234",
    "channel": "messenger",
    "type": "text",
    "content": "Olá! Vi seu interesse no nosso produto. Posso ajudar?"
  }'

Exemplo de resposta

{
  "data": {
    "id": "664l7m8n9o0p1q2r3s4t5u6v",
    "conversation_id": "664g2h3i4j5k6l7m8n9o0p1q",
    "content": "Olá! Sua proposta foi aprovada.",
    "type": "text",
    "sender": "agent",
    "status": "sent",
    "sent_at": "2026-06-10T16:00:00.000Z",
    "external_id": "wamid.HBg..."
  },
  "meta": {
    "request_id": "req_01jx8kz3m4n5p6q7r8s9t0u1v"
  }
}
Retorna HTTP 201 em caso de sucesso.

Erros

CódigoStatusDescrição
MISSING_REQUIRED_FIELD400contact_id ausente
INVALID_CHANNEL400Canal inválido
CHANNEL_NOT_SUPPORTED400Instagram ainda não suportado
MISSING_CONTENT400content ausente para mensagem de texto
MISSING_MEDIA_URL400media_url ausente para mensagens de mídia
CONTACT_NOT_FOUND404Contato não encontrado
NO_WHATSAPP_JID422Contato sem WhatsApp
NO_WHATSAPP_INSTANCE422Sem instância WhatsApp conectada
NO_MESSENGER_PSID422Contato sem PSID Messenger
NO_MESSENGER_PAGE422Sem página Messenger conectada
WHATSAPP_INSTANCE_RATE_LIMIT42930 msg/min por instância atingido
MESSENGER_PAGE_RATE_LIMIT42930 msg/min por página atingido