Primeiros passos

Módulo

Mensageria

API WhatsApp unificada: envie, acompanhe, marque como lido e consulte texto, template, mídia, localização, contatos, interativos e reações.

POST/messagesEscopo: writeOficial + Básico

Envia uma mensagem WhatsApp tipada.

Para responder use conversation_id; para iniciar use connection_id + recipient. Recipient aceita telefone, contato, BSUID, parent BSUID ou username e nunca é inferido. type padrão é text — o único tipo aceito pela conexão do plano Básico; os demais tipos exigem conexão Oficial e plano Oficial/Agency. Authorization com a API key é a única credencial exigida. Idempotency-Key é opcional e recomendada: com a mesma chave, retries devolvem a mesma resposta; sem ela, o servidor gera uma chave interna única.

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo
CampoTipoDescrição
Idempotency-KeyopcionalheaderOpcional e recomendada para retries idempotentes (8–128 caracteres).
textopcionalstringTexto da mensagem; obrigatório quando type=text.
typeopcionaltext | template | image | video | audio | document | sticker | location | contacts | interactive | reactionTipo de mensagem. Padrão text.
templateopcionalobjectPara template: name, language e components opcionais.
mediaopcionalobjectPara mídia: link ou id; caption e filename são opcionais.
interactiveopcionalobjectObjeto interativo nativo da Meta (button, list ou flow).
reply_to_message_idopcionalstringWAMID da mensagem que será respondida.
biz_opaque_callback_dataopcionalstringCorrelação devolvida pela Meta nos status (máximo 512).
conversation_idopcionaluuidUse para responder uma conversa existente.
connection_idopcionaluuidConexão usada para iniciar uma nova conversa.
recipientopcionalobjectPara iniciar: phone, contact_id, business_scoped_user_id, parent_business_scoped_user_id ou username.
toopcionalstringLegado: equivalente a recipient.phone.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "content-type: application/json" \
  -d '{
  "conversation_id": "<CONVERSATION_ID>",
  "type": "text",
  "text": "Ola, Maria. Posso te ajudar?"
}'

Respostas

202Meta aceitou o envio; acompanhe delivery_status no histórico ou webhook.
404Conversa ou conexão não encontrada.
422text ausente ou destino incompleto.

Exemplo de resposta

{
  "data": {
    "conversation_id": "<CONVERSATION_ID>",
    "provider_message_id": "wamid.HBgM...",
    "type": "text",
    "recipient": { "phone": "5511999998888", "business_scoped_user_id": "BR.4389531741319467" },
    "accepted": true,
    "delivery_status": "pending"
  }
}
POST/messagesEscopo: writeOficial (Meta)Requer plano Oficial ou Agency

Envia imagem, vídeo, documento ou figurinha.

Envie media.id retornado por POST /media ou media.link público. O bloco Mídia explica upload e download.

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo
CampoTipoDescrição
connection_idobrigatóriouuidNúmero Oficial que envia.
recipient.phoneobrigatóriostringTelefone com DDI.
typeobrigatórioimage | video | document | stickerTipo do arquivo.
media.idopcionalstringID de POST /media; prefira a ele.
media.linkopcionalURLAlternativa pública ao media.id.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "content-type: application/json" \
  -d '{
  "connection_id": "<CONNECTION_ID>",
  "recipient": { "phone": "<TELEFONE_COM_DDI>" },
  "type": "image",
  "media": { "id": "<MEDIA_ID>", "caption": "Proposta em anexo" }
}'

Respostas

202Arquivo aceito; acompanhe pelo wamid.
POST/messagesEscopo: writeOficial (Meta)Requer plano Oficial ou Agency

Envia áudio ou mensagem de voz.

Faça upload antes e use media.id. Áudio não recebe legenda.

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo
CampoTipoDescrição
media.idobrigatóriostringID retornado pelo upload.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "content-type: application/json" \
  -d '{
  "connection_id": "<CONNECTION_ID>",
  "recipient": { "phone": "<TELEFONE_COM_DDI>" },
  "type": "audio",
  "media": { "id": "<MEDIA_ID>" }
}'

Respostas

202Áudio aceito.
POST/messagesEscopo: writeOficial (Meta)Requer plano Oficial ou Agency

Envia template aprovado pela Meta.

Use para iniciar conversa fora da janela de 24 h; consulte GET /templates antes.

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo
CampoTipoDescrição
template.nameobrigatóriostringNome exato aprovado na Meta.
template.componentsopcionalarrayParâmetros do template.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "content-type: application/json" \
  -d '{
  "connection_id": "<CONNECTION_ID>",
  "recipient": { "phone": "<TELEFONE_COM_DDI>" },
  "type": "template",
  "template": { "name": "NOME_DO_TEMPLATE", "language": "pt_BR", "components": [] }
}'

Respostas

202Template aceito.
POST/messagesEscopo: writeOficial (Meta)Requer plano Oficial ou Agency

Envia botões, lista, localização, contatos ou reação.

Troque type e seu objeto: interactive, location, contacts ou reaction. Os objetos nativos são preservados.

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo
CampoTipoDescrição
interactive | location | contacts | reactionopcionalobjectConteúdo nativo do tipo escolhido.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages" \
  -H "Authorization: Bearer SUA_CHAVE_API" \
  -H "content-type: application/json" \
  -d '{
  "conversation_id": "<CONVERSATION_ID>",
  "type": "location",
  "location": { "latitude": -22.879, "longitude": -43.104, "name": "Local do atendimento" }
}'

Respostas

202Mensagem especial aceita.
GET/messagesEscopo: readOficial + Básico

Lista mensagens e estados do provider.

Filtre por connection_id, conversation_id, contact_id, direction, status ou provider_message_id (WAMID).

Parâmetros de caminho

Sem parâmetros adicionais.

Parâmetros de query
CampoTipoDescrição
connection_idopcionaluuidConexão WhatsApp.
conversation_idopcionaluuidConversa interna.
provider_message_idopcionalstringWAMID/ID retornado pelo provider.
limitopcionalnumberQuantidade de registros por página. Padrão 50; máximo 200 na maioria das listas.
offsetopcionalnumberÍndice inicial da página. Use pagination.next_offset para buscar a próxima página.

Campos do corpo

Este endpoint não recebe corpo JSON.

Exemplos prontos

curl -X GET "https://connect.zyronstack.com/api/v1/messages?connection_id=<CONNECTION_ID>&provider_message_id=wamid.HBgM..." \
  -H "Authorization: Bearer SUA_CHAVE_API"

Respostas

200Mensagens paginadas.
GET/messages/:idEscopo: readOficial + Básico

Consulta uma mensagem com payload do provider.

Use para ler metadados de mídia, interativos e eventos recebidos sem perder o payload original.

Parâmetros de caminho
CampoTipoDescrição
idobrigatóriointegerID interno do log.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo

Este endpoint não recebe corpo JSON.

Exemplos prontos

curl -X GET "https://connect.zyronstack.com/api/v1/messages/42" \
  -H "Authorization: Bearer SUA_CHAVE_API"

Respostas

200Mensagem retornada.
POST/messages/:id/readEscopo: writeOficial (Meta)

Marca uma mensagem inbound como lida.

Disponível para conexão Oficial; usa o WAMID salvo no histórico.

Parâmetros de caminho
CampoTipoDescrição
idobrigatóriointegerID interno do log inbound.

Parâmetros de query

Sem parâmetros adicionais.

Campos do corpo

Este endpoint não recebe corpo JSON.

Exemplos prontos

curl -X POST "https://connect.zyronstack.com/api/v1/messages/42/read" \
  -H "Authorization: Bearer SUA_CHAVE_API"

Respostas

200Leitura confirmada.
422Tipo de conexão não suporta leitura.