Responder ao cliente
Envia texto ou mídia em uma conversa e baixa a mídia que o cliente mandou.
Quando um atendente assume uma conversa, ele responde por estas rotas. A resposta sai pelo número da conversa (o do seller, se houver). Só funciona dentro da janela de 24 horas aberta pela última mensagem do cliente; depois disso a Meta recusa texto livre e a rota devolve 502 (use um template, em Mensagens enviadas).
Responder com texto
Envia o texto, registra a mensagem na conversa como enviada manualmente e desliga o assistente da conversa.
/api/v1/admin/whatsapp/threads/{id}/replyAdminEnvia uma mensagem de texto ao cliente da conversa
Parâmetros de caminho
idstringobrigatórioCorpo da requisição
bodystringobrigatórioExemplo de requisição (Responder com texto)
Resposta (Responder com texto)
Campos da resposta
successbooleantrue.messageobjectErros (Responder com texto)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido ou body vazio. | {"error":"body required"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access 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). | {"error":"Cloud API send failed: ..."} |
Responder com mídia
Envia um arquivo que a Meta busca em uma URL pública. Primeiro envie o arquivo à loja (mídia da plataforma) e use a URL pública resultante. Diferente da resposta de texto, esta rota não desliga o assistente.
/api/v1/admin/whatsapp/threads/{id}/reply-mediaAdminEnvia imagem, vídeo, áudio ou documento ao cliente
Parâmetros de caminho
idstringobrigatórioCorpo da requisição
media_urlstringobrigatóriomedia_typestringobrigatórioimagevideoaudiodocumentcaptionstringidempotency_keystringExemplo de requisição (Responder com mídia)
Resposta (Responder com mídia)
Campos da resposta
successbooleantrue.messageobjectErros (Responder com mídia)
| Status | Quando | Corpo |
|---|---|---|
| 400 | media_url ausente, media_type não suportado ou conversa sem telefone. | {"error":"whatsapp media reply: media_url required","message":null} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access required"} |
| 404 | A conversa não existe. | {"error":"thread not found"} |
| 502 | A Meta recusou o envio (URL inacessível, fora da janela...). A resposta traz o erro e a mensagem registrada com falha. | {"error":"...","message":{}} |
Baixar a mídia de uma mensagem
Entrega o arquivo que o cliente enviou, com o Content-Type correto. A primeira chamada busca na Meta e guarda uma cópia; as seguintes saem do cache da plataforma (Cache-Control: private, max-age=3600). Mensagens cuja mídia é um link externo respondem com redirecionamento 302.
/api/v1/admin/whatsapp/media/{message_id}AdminDevolve os bytes da mídia (imagem, áudio, documento) de uma mensagem
Parâmetros de caminho
message_idintegerobrigatórioid das mensagens da conversa).Exemplo de requisição (Baixar a mídia de uma mensagem)
Resposta (Baixar a mídia de uma mensagem)
Erros (Baixar a mídia de uma mensagem)
| Status | Quando | Corpo |
|---|---|---|
| 400 | message_id não numérico, mensagem sem mídia, esquema de URL não suportado ou id de mídia ausente. | {"error":"message has no media"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_orders"} ou {"error":"admin access required"} |
| 404 | Mensagem inexistente. | {"error":"message not found"} |
| 502 | Falha ao buscar a mídia na Meta (por exemplo, a mídia expirou). | {"error":"media fetch failed: ..."} |
| 503 | Token da API do WhatsApp não configurado. | {"error":"whatsapp api token not configured"} |