Responder na conversa
v1.0.0https://api.growthaisystem.com/api/v1/conversations/{id}/messages- Exige
Authorization: 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órioV1ConversationMessageSendInputInput
- 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.
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