VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Mensagens

Responder na thread

Envia uma mensagem de texto, com anexos opcionais, em uma conversa existente.

Use esta rota para o cliente escrever dentro de uma thread já aberta. A mensagem fica gravada com o papel do token (customer), a prévia da thread é atualizada e a plataforma avisa a outra parte em tempo real. A plataforma também emite um evento interno de mensagem criada, que a loja pode usar para notificar por e-mail.

Pontos principais
  • É preciso body ou pelo menos um item em attachments.
  • Os anexos não são enviados aqui: suba o arquivo antes pelo envio de arquivos da plataforma e passe aqui só os metadados (URL, nome, tipo e tamanho). A rota guarda o que você mandar, sem conferir o arquivo.
  • O texto passa por limpeza de HTML. Scripts, atributos de evento e links javascript: saem; o resto vira texto simples.
  • Responder em thread R (resolvida) ou C (arquivada) é permitido e não reabre a thread. Mude o status para open se quiser reabrir.
POST/api/v1/storefront/messages/threads/{id}/replyCliente

Enviar uma mensagem na thread

Parâmetros de caminho

iduuidobrigatório
Id da thread.

Corpo da requisição

bodystring
Texto da mensagem. Obrigatório quando não há anexos.
attachmentsarray
Anexos já hospedados. Obrigatório quando não há body.

Anexo (cada item de attachments)

urlstring
URL do arquivo.
filenamestring
Nome do arquivo para exibir.
content_typestring
Tipo MIME, por exemplo application/pdf.
sizeinteger
Tamanho em bytes.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/messages/threads/$THREAD_ID/reply" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "body": "Segue o comprovante.",
    "attachments": [
      {"url": "https://minhaloja.io.venddor.com.br/uploads/comprovante.pdf", "filename": "comprovante.pdf", "content_type": "application/pdf", "size": 48213}
    ]
  }'

Resposta

201Mensagem criada
json
{
  "id": "9e8d7c6b-5a49-4382-b1a0-9f8e7d6c5b4a",
  "thread_id": "3f0d6c0e-2a8b-4a40-9f69-4a0f7d1e6a77",
  "sender_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
  "sender_type": "customer",
  "body": "Segue o comprovante.",
  "attachments": [
    {
      "url": "https://minhaloja.io.venddor.com.br/uploads/comprovante.pdf",
      "filename": "comprovante.pdf",
      "content_type": "application/pdf",
      "size": 48213
    }
  ],
  "is_read": false,
  "created_at": "2026-10-11T19:05:00Z"
}

Campos da resposta

iduuid
Id da mensagem.
thread_iduuid
Thread da mensagem.
sender_iduuid
Usuário que escreveu (o dono do token).
sender_typestring
Papel de quem escreveu. Para o cliente, customer.
bodystring
Texto já limpo.
attachmentsarray
Anexos recebidos. [] quando não há.
is_readboolean
Sempre false na criação.
created_atstring
Quando foi gravada (RFC 3339).

Erros

StatusQuandoCorpo
400id não é UUID.{"error":"invalid id","detail":"id must be a valid UUID"}
400JSON inválido.{"error":"invalid request body","detail":"..."}
400Sem body e sem attachments.{"error":"body or attachments required"}
401Sem token, ou token inválido.{"error":"missing authorization header"}
403A thread não é do cliente (ou não existe).{"error":"you are not a participant of this thread"}
500Falha ao gravar.{"error":"failed to send message","detail":"..."}
Corpo só com espaços

A checagem de "vazio" olha o texto antes da limpeza: um body de espaços passa e é gravado. Apare o texto no cliente e desabilite o botão de enviar quando ele ficar vazio.

Veja também

  • Ler thread e contexto
  • Entregue e lida
  • Status da thread
Anterior
Ler thread e contexto
Próxima
Entregue e lida
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também