Mandapi/ Documentação

Mensagens

Envie texto, mídia e localização, e leia o histórico. Envios respondem 202 (enfileirado) — a entrega ocorre logo em seguida no canal conectado.

Gere uma chave em Painel → API Keys. A chave fica só no seu navegador (localStorage) e nunca aparece nos exemplos de código.

Enviar texto

messages:send
POST/v1/messages/text

Envia uma mensagem de texto. Aceita a marcação do WhatsApp no corpo: *negrito*, _itálico_, ~tachado~ e ```mono```.

CampoTipoDescrição
toobrigatóriostringNúmero do destinatário (E.164, só dígitos ou com +).
bodyobrigatóriostringTexto da mensagem.

Resposta 202

{
  "id": "665f…",
  "status": "queued",
  "to": "5511999998888@s.whatsapp.net"
}
curl -X POST "https://api.mandapi.net/v1/messages/text" \
  -H "Authorization: Bearer mapi_live_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "5511999998888",
  "body": "Olá! *Bem-vindo* ao Mandapi 🚀"
}'
▶ Testar no sandbox

Enviar mídia (imagem, vídeo, áudio, documento, figurinha)

messages:send
POST/v1/messages/image

Mesmo formato para os cinco tipos — troque o caminho: /v1/messages/{image|video|audio|document|sticker}. A origem é mediaId (de um upload em POST /v1/media) OU link (URL pública). Informe exatamente um dos dois.

CampoTipoDescrição
toobrigatóriostringNúmero do destinatário.
mediaIdstringId de uma mídia enviada em POST /v1/media.
linkstringURL pública do arquivo (alternativa ao mediaId).
captionstringLegenda (imagem/vídeo/documento).
fileNamestringNome do arquivo (documentos).

Resposta 202

{
  "id": "665f…",
  "status": "queued",
  "to": "5511999998888@s.whatsapp.net"
}
curl -X POST "https://api.mandapi.net/v1/messages/image" \
  -H "Authorization: Bearer mapi_live_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "5511999998888",
  "link": "https://picsum.photos/600/400",
  "caption": "Olha essa foto!"
}'
▶ Testar no sandbox

Enviar localização

messages:send
POST/v1/messages/location

Envia um ponto no mapa.

CampoTipoDescrição
toobrigatóriostringNúmero do destinatário.
latitudeobrigatórionumberLatitude (-90 a 90).
longitudeobrigatórionumberLongitude (-180 a 180).
namestringNome do local.
addressstringEndereço.

Resposta 202

{
  "id": "665f…",
  "status": "queued",
  "to": "5511999998888@s.whatsapp.net"
}
curl -X POST "https://api.mandapi.net/v1/messages/location" \
  -H "Authorization: Bearer mapi_live_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "5511999998888",
  "latitude": -23.5613,
  "longitude": -46.6565,
  "name": "Av. Paulista",
  "address": "São Paulo, SP"
}'
▶ Testar no sandbox

Enviar contato (vCard)

messages:send
POST/v1/messages/contact

Envia um cartão de contato para o destinatário.

CampoTipoDescrição
toobrigatóriostringNúmero do destinatário.
contactobrigatórioobject{ fullName, phone, organization? }.

Resposta 202

{
  "id": "665f…",
  "status": "queued",
  "to": "5511999998888@s.whatsapp.net"
}
curl -X POST "https://api.mandapi.net/v1/messages/contact" \
  -H "Authorization: Bearer mapi_live_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{
  "to": "5511999998888",
  "contact": {
    "fullName": "Suporte Mandapi",
    "phone": "5511333334444"
  }
}'

Listar mensagens

messages:read
GET/v1/messages

Histórico de mensagens enviadas e recebidas (mais recentes primeiro).

CampoTipoDescrição
chatIdstringFiltra por chat (ex.: 5511999998888@s.whatsapp.net).
directionstringin | out.
limitnumber1 a 200 (padrão 50).

Resposta 200

[
  {
    "id": "665f…",
    "waMessageId": "3EB0…",
    "channelId": "665e…",
    "direction": "out",
    "chatId": "5511999998888@s.whatsapp.net",
    "type": "text",
    "body": "Olá!",
    "media": null,
    "status": "sent",
    "timestamp": "2026-07-22T18:00:00Z"
  }
]
curl -X GET "https://api.mandapi.net/v1/messages" \
  -H "Authorization: Bearer mapi_live_SUA_CHAVE"
▶ Testar no sandbox
chatId
direction
limit