POSTResponder
Envia uma mensagem do seller em uma conversa existente, com texto, anexos ou os dois.
Use esta rota para responder ao cliente. A mensagem fica gravada, a prévia da conversa e last_message_at são atualizados e o evento message.created é emitido, o que alimenta os avisos em tempo real e as notificações do cliente e do administrador. O texto é limpo de HTML perigoso antes de ser gravado.
/api/v1/vendor/messages/threads/{id}/replySellerEnvia uma mensagem na conversa
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller. Veja Tokens.Parâmetros de caminho
iduuidobrigatórioId da conversa.
Corpo da requisição
bodystringTexto da mensagem. Obrigatório se não houver
attachments. Tags perigosas (script, atributos on*, javascript:) são removidas; o texto volta decodificado como texto simples.attachmentsarrayAnexos já enviados. Os arquivos não sobem por esta rota: envie antes pela API de mídia e passe aqui os metadados. Obrigatório se não houver body.
urlstringURL do arquivo.
filenamestringNome do arquivo.
content_typestringTipo MIME.
sizeintegerTamanho em bytes.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/vendor/messages/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/reply" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"body": "Olá, Maria! Seu pedido sai amanhã e chega em até 3 dias úteis."
}'Resposta
201Mensagem criada
json
{
"id": "d2f4a6b8-1c3e-4a5b-8c7d-9e0f1a2b3c4d",
"thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
"sender_id": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"sender_type": "vendor",
"body": "Olá, Maria! Seu pedido sai amanhã e chega em até 3 dias úteis.",
"attachments": [],
"is_read": false,
"created_at": "2026-10-10T14:32:10Z"
}Campos da resposta
iduuidId da mensagem.
thread_iduuidConversa a que a mensagem pertence.
sender_iduuidId do usuário que enviou.
sender_typestringcustomervendoradminQuem enviou:
customer, vendor ou admin.bodystringTexto da mensagem, já sem HTML perigoso. Pode ser vazio quando há anexos.
attachmentsarrayAnexos, cada um com
url, filename, content_type e size (bytes). Lista vazia sem anexos.is_readbooleantrue quando o destinatário já leu.delivered_atstringQuando a mensagem foi marcada como entregue. Ausente até lá.
read_atstringQuando foi marcada como lida. Ausente até lá.
created_atstringEnvio da mensagem (RFC 3339, UTC).
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário seller (por exemplo, é de administrador). | {"error":"insufficient permissions"} |
| 400 | O {id} do caminho não é um UUID. | {"error":"invalid id","detail":"id must be a valid UUID"} |
| 403 | A conversa não existe ou não pertence ao seller. A API não distingue os dois casos. | {"error":"you are not a participant of this thread"} |
| 400 | Sem body e sem attachments, ou JSON inválido. | {"error":"body or attachments required"} |
| 500 | Falha ao gravar a mensagem. | {"error":"failed to send message","detail":"..."} |