Responder ao cliente
Envia texto, mídia ou template, marca a conversa como lida e atribui a um usuário.
Responder com texto
Envia uma mensagem de texto ao cliente pelo número da conversa. Ao responder, a conversa passa para atendimento humano (H) e o assistente se cala, salvo se a loja desligou "Pausar bot ao atender".
/api/v1/admin/whatsapp-confluence/threads/{id}/replyAdminResponde com texto
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
bodystringobrigatóriotext).textstringbody, usado se body vier vazio.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/e661b36c-fe1b-450f-b75b-49d10c1ead48/reply" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"body": "Oi, Maria! Já vou te ajudar."}'Resposta
{
"id": 42,
"thread_id": "e661b36c-fe1b-450f-b75b-49d10c1ead48",
"wamid": "wamid.HBgLNTUxMTk4NzY1NDMyMRUCABEYEjQ1QTE",
"direction": "O",
"origin": "A",
"msg_type": "text",
"body": "Oi, Maria! Já vou te ajudar.",
"status": "S",
"meta_timestamp": "2026-10-10T18:43:02Z",
"created_at": "2026-10-10T18:43:02Z"
}Campos da resposta
idintegerthread_iduuidwamidstringdirectionstringIOoriginstringCABEHmsg_typestringtext, interactive, template, image, audio, video, document e outros que a Meta envia.bodystringmedia_idstringmedia_mimestringmedia_captionstringfilenamestringmedia_urlstringtranscriptionstringinteractiveobjectorder_payloadobjectstatusstringQSDRFerrorstringstatus é F.meta_timestampstringcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo ausente, vazio ou JSON inválido. | {"error":"body required"} |
| 404 | A conversa não existe. | {"error":"thread not found"} |
| 502 | A Meta recusou o envio (por exemplo, fora da janela de 24 horas) ou não há número pronto para enviar. A mensagem fica gravada com status F. | {"error":"...","message":{"id":43,"status":"F","error":"..."}} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
Responder com mídia
Envia imagem, áudio, vídeo ou documento. Aceita multipart (envio do arquivo, até 16 MB, que a plataforma converte quando preciso) ou JSON com uma media_url pública que a Meta busca sozinha. Também passa a conversa para atendimento humano.
/api/v1/admin/whatsapp-confluence/threads/{id}/reply-mediaAdminResponde com mídia
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
filefilemedia_typestringimageaudiovideodocumentimage.captionstringfilenamestringvoicestring1 envia o áudio como mensagem de voz.media_urlstringExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/e661b36c-fe1b-450f-b75b-49d10c1ead48/reply-media" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@foto.jpg" \
-F "caption=Segue a foto do produto"Resposta
{
"id": 42,
"thread_id": "e661b36c-fe1b-450f-b75b-49d10c1ead48",
"wamid": "wamid.HBgLNTUxMTk4NzY1NDMyMRUCABEYEjQ1QTE",
"direction": "O",
"origin": "A",
"msg_type": "image",
"body": "Segue a foto do produto",
"status": "S",
"meta_timestamp": "2026-10-10T18:43:02Z",
"created_at": "2026-10-10T18:43:02Z",
"media_mime": "image/jpeg",
"media_caption": "Segue a foto do produto"
}Campos da resposta
idintegerthread_iduuidwamidstringdirectionstringIOoriginstringCABEHmsg_typestringtext, interactive, template, image, audio, video, document e outros que a Meta envia.bodystringmedia_idstringmedia_mimestringmedia_captionstringfilenamestringmedia_urlstringtranscriptionstringinteractiveobjectorder_payloadobjectstatusstringQSDRFerrorstringstatus é F.meta_timestampstringcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Multipart inválido, sem file ou arquivo vazio. | {"error":"file required"} |
| 400 | JSON sem media_url. | {"error":"media_url required"} |
| 404 | A conversa não existe. | {"error":"thread not found"} |
| 502 | Conversão, upload ou envio recusados. | {"error":"...","message":{"status":"F"}} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
Enviar um template
Envia um template aprovado. É o único jeito de falar com o cliente depois que a janela de 24 horas fechou. Veja os templates disponíveis em Produtos e templates.
/api/v1/admin/whatsapp-confluence/threads/{id}/send-templateAdminEnvia um template
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
namestringobrigatóriolanguagestringpt_BR). Se faltar, vale o idioma padrão da loja.componentsarrayExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/e661b36c-fe1b-450f-b75b-49d10c1ead48/send-template" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "pedido_confirmado", "language": "pt_BR", "components": [{"type": "body", "parameters": [{"type": "text", "text": "Maria"}]}]}'Resposta
{
"id": 42,
"thread_id": "e661b36c-fe1b-450f-b75b-49d10c1ead48",
"wamid": "wamid.HBgLNTUxMTk4NzY1NDMyMRUCABEYEjQ1QTE",
"direction": "O",
"origin": "A",
"msg_type": "template",
"body": "pedido_confirmado",
"status": "S",
"meta_timestamp": "2026-10-10T18:43:02Z",
"created_at": "2026-10-10T18:43:02Z"
}Campos da resposta
idintegerthread_iduuidwamidstringdirectionstringIOoriginstringCABEHmsg_typestringtext, interactive, template, image, audio, video, document e outros que a Meta envia.bodystringmedia_idstringmedia_mimestringmedia_captionstringfilenamestringmedia_urlstringtranscriptionstringinteractiveobjectorder_payloadobjectstatusstringQSDRFerrorstringstatus é F.meta_timestampstringcreated_atstringErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | name ausente ou JSON inválido. | {"error":"name required"} |
| 404 | A conversa não existe. | {"error":"thread not found"} |
| 502 | A Meta recusou o envio (por exemplo, fora da janela de 24 horas) ou não há número pronto para enviar. A mensagem fica gravada com status F. | {"error":"...","message":{"id":43,"status":"F","error":"..."}} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
Marcar como lida
Zera o contador unread_count da conversa. Chame quando um atendente abrir a conversa.
/api/v1/admin/whatsapp-confluence/threads/{id}/readAdminMarca a conversa como lida
Parâmetros de caminho
iduuidobrigatórioExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/e661b36c-fe1b-450f-b75b-49d10c1ead48/read" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"success": true
}Campos da resposta
successbooleantrue.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 500 | Falha ao gravar (por exemplo, id que não é UUID). | {"error":"..."} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |
Atribuir a um usuário
Define quem da equipe cuida da conversa, ou remove a atribuição. Alimenta o filtro mine da lista.
/api/v1/admin/whatsapp-confluence/threads/{id}/assignAdminAtribui a conversa
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
user_iduuiduser_id vazio remove a atribuição.assignee_iduuiduser_id. null remove a atribuição.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-confluence/threads/e661b36c-fe1b-450f-b75b-49d10c1ead48/assign" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"user_id": "5b0c9f3e-2d1a-4c8e-9f7a-6e5d4c3b2a10"}'Resposta
{
"success": true
}Campos da resposta
successbooleantrue.Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo com tipo errado (por exemplo assignee_id numérico). | {"error":"invalid request body: json: cannot unmarshal number into Go struct field ..."} |
| 500 | Falha ao gravar (por exemplo, user_id que não é UUID). | {"error":"..."} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O usuário não tem papel de administrador. | {"error":"insufficient permissions"} |