Pular para o conteúdo
Conversas

Responder na conversa

v1.0.0
POSThttps://api.staging.growthaisystem.com/api/v1/conversations/{id}/messages
  • ExigeAuthorization: Bearer gos_…— Chave de API (gos_…)· escoposconversations.write

Envia texto, áudio, imagem ou PDF ao contato pelo MESMO canal e número da conversa — o mesmo envio do painel de Atendimento. A mensagem aparece na conversa marcada como Integração (actor: "api") e dispara message.sent com actor.keyId = a sua chave (use para ignorar o próprio eco).

Mídia (media): o arquivo vai em base64 no próprio corpo e é guardado no armazenamento do workspace antes de sair — exatamente como um anexo do painel. Formatos aceitos: áudio (audio/ogg, audio/mpeg, audio/mp4, audio/aac, até 5 MB), imagem (image/jpeg, image/png, até 5 MB) e documento (application/pdf, até 8 MB, com filename obrigatório — é o nome que o contato vê). text junto de imagem ou PDF vira legenda; áudio não leva legenda (mande o texto em outra mensagem). Áudio sai como nota de voz no WhatsApp por QR code; no WhatsApp oficial sai como mensagem de áudio da Meta — para tocar como voz, gere audio/ogg com codec Opus. O tamanho vale para o arquivo decodificado; acima dele, 413 payload_too_large. Os primeiros bytes são conferidos contra o mimeType (renomeado = 400).

Use `Idempotency-Key`: um retry com a mesma chave e o mesmo corpo (o arquivo incluído) devolve a mesma mensagem sem mandar de novo ao contato nem guardar o arquivo outra vez — mesmo que a conversa tenha sido pausada depois. A mesma chave com outro arquivo é 409 idempotency_conflict.

Recusas: 409 conversation_paused quando ai.paused é true (passaram para humano ou alguém do time respondeu — nada sai); 422 messaging_window_closed (WhatsApp oficial fora da janela de 24h); 422 send_rejected (canal desconectado, contato com “não perturbe” ou recusa do provedor); 429 rate_limited acima de 6 mensagens por minuto na mesma conversa.

504 send_outcome_unknown: o provedor não confirmou a tempo e a mensagem PODE ter saído. Não repita: confira GET /conversations/{id}/messages em ~30 s. Repetir com a mesma Idempotency-Key devolve o mesmo 504, sem reenviar.

Parâmetros de caminho

Entram no próprio endereço, no lugar das chaves.

  • idstringobrigatório
    • tamanho 1–80

Corpo da requisição

application/jsonobrigatório

V1ConversationMessageSendInputInput

  • textstringopcional
    • tamanho 1–4096
    • typestringobrigatório
      • um de"audio""image""document"
    • mimeTypestringobrigatório
      • um de"audio/ogg""audio/mpeg""audio/mp4""audio/aac""image/jpeg""image/png""application/pdf"
    • base64stringobrigatório
      • tamanho mín. 4
      • regex "^[A-Za-z0-9+/]+={0,2}$"
    • filenamestringopcional
      • tamanho 1–120

Respostas

13 respostas documentadas — o código, o que ele significa nesta rota e a forma do corpo.

200Deu certoapplication/json

A Idempotency-Key repetiu um envio anterior: devolve a MESMA mensagem, com idempotency_replay: true. Nada saiu de novo.

V1ConversationMessageEnviada

    • idstring
    • conversationIdstring
    • contactIdstring | null
    • channelstring
    • connectionIdstring | null
    • directionstring
      • um de"inbound""outbound"
    • actorstring
      • um de"user""contact""ia""automation""system""api""unknown"
    • userIdstring | null
    • typestring
    • textstring | null
    • transcriptionstring | null
    • transcriptionStatusstring | null
    • mediaTypestring | null
    • hasMediaboolean
    • statusstring
    • statusReasonstring | null
    • providerTimestampstring
    • createdAtstring
    • deletedAtstring | null
  • idempotency_replaytruepode faltar
    • sempre true