Enviar modelo do WhatsApp na conversa
v1.0.0https://api.growthaisystem.com/api/v1/conversations/{id}/template- Exige
Authorization: Bearer gos_…— Chave de API (gos_…)· escoposconversations.writeconversations.outbound
Manda um modelo APROVADO da Meta numa conversa de WhatsApp oficial — o caminho para falar com quem não escreve há mais de 24h (fora da janela a Meta não entrega texto livre: POST /conversations/{id}/messages responde 422 messaging_window_closed). Liste os modelos em GET /whatsapp/templates?connectionId= (o connectionId da conversa).
template.variables preenche os campos na ordem (variables[0] → {{1}}) e precisa ter exatamente variableCount valores. A conversa grava o texto que o contato leu, com os campos preenchidos.
Conversa com alguém do time (ai.paused: true) = 409 conversation_paused, nada sai. Escopos: conversations.write e conversations.outbound. Use `Idempotency-Key` (modelo é cobrado pela Meta: o retry com a mesma chave não manda de novo).
Funcionário digital: o pedido fica para o dono aprovar (202); na aprovação a conversa é conferida de novo e, se alguém do time assumiu ou falou com o contato, nada sai.
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órioV1ConversationTemplateSendInputInput
- namestringobrigatório
- tamanho 1–512
- languagestringobrigatório
- tamanho 1–16
- variablesstring[]opcional
- padrão []
- itens máx. 10
Respostas
14 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