Envia mensagem no chat com a transportadora de um pedido; aceita anexo(s) via multipart/form-data (campo anexo ou anexo[]) junto ao texto obrigatório, com limites de 2 MB por anexo e 5 anexos por conversa
Módulo: Transportadora
Descrição
Exemplo:
- https://www.allpost.com.br/api/v1/chat/665f1c2a3fdb9612b7f43261/mensagem
Além do id interno do pedido, é possível identificar o pedido pelo número do pedido, número do pedido no canal ou chave da NF-e, informando o parâmetro
chave na querystring (ver "Parâmetros de Path").Dois formatos de envio:
- Só-texto (
application/json): corpo com apenas o campo mensagem.- Com anexo(s) (
multipart/form-data): campo mensagem (texto obrigatório) mais o campo anexo (um arquivo) ou anexo[] (vários arquivos).O texto da mensagem é sempre obrigatório, inclusive ao anexar: o anexo nunca é enviado sozinho (uma mensagem vazia é rejeitada com 400).
Anexos: tipos aceitos: doc, docx, pdf, xls, xlsx, csv, jpg/jpeg, png e gif. Tamanho máximo de 2 MB por anexo e limite de 5 anexos por conversa (somando os anexos de todas as mensagens já enviadas). Se qualquer arquivo violar a whitelist, o tamanho ou o limite de quantidade, nada é persistido (a mensagem e os arquivos são descartados) e o retorno é 400.
Quando há anexo(s), a resposta inclui a lista
anexos (com url, nome, data e o autor). Os anexos ficam vinculados à mensagem e são retornados no histórico pelo endpoint GET api/v1/chat/{idPedido}.O
tipoPedido (envio/reversa) e a transportadora são derivados automaticamente do próprio pedido, não sendo necessário enviá-los.A mensagem é sempre registrada com origem "loja" (qualquer valor de origem enviado no corpo é ignorado). Caso o pedido ainda não possua conversa, uma nova conversa é criada automaticamente com situação "aberto".
Tags HTML e atributos de evento inline são removidos da mensagem antes do armazenamento.
Dica: antes de habilitar o chat, consulte o endpoint
GET api/v1/chat/{idPedido}/elegivel para verificar se a transportadora do pedido está liberada para conversa.Códigos de retorno:
- 200: mensagem registrada.
- 400: dados inválidos (mensagem vazia ou acima de 2000 caracteres, chat finalizado, tipo de arquivo não permitido, anexo acima de 2 MB ou limite de 5 anexos por conversa atingido).
- 401: token ausente, expirado ou inválido.
- 403: o pedido não pertence à loja autenticada, ou a transportadora não está liberada para chat nesta loja.
Parâmetros de Path
| Campo | Descrição | Tipo | Obrigatório |
| idPedido | Identificador do pedido no allPost. Por padrão é o id interno do pedido; combinado com o parâmetro chave (querystring) pode ser também o número do pedido, o número do pedido no canal ou a chave da NF-e. |
string | sim |
| chave | Querystring opcional que define como o valor de idPedido deve ser interpretado. Quando ausente, usa o id interno do pedido. Valores aceitos: id/documento (id interno, padrão), pedido/numeropedido (número do pedido), numeropedidocanal (número do pedido no canal — exige canal), chavenf/chavenfe (chave da NF-e). |
string | não |
| canal | Querystring obrigatória apenas quando chave=numeropedidocanal. Identifica o canal de venda do pedido. |
string | não |
Exemplos:
- por número do pedido: api/v1/chat/PED-10023/mensagem?chave=pedido
- por número do pedido no canal: api/v1/chat/12345/mensagem?chave=numeropedidocanal&canal=mercadolivre
- por chave da NF-e: api/v1/chat/32000000000000000000000000000000000000000000/mensagem?chave=chavenf
Parâmetros de Entrada
| Campo | Descrição | Tipo | Tamanho | Obrigatório |
| mensagem | Conteúdo da mensagem. Tags HTML são removidas antes do armazenamento. Sempre obrigatório, inclusive quando há anexo(s) — o anexo nunca é enviado sozinho. | string | 2000 | sim |
| anexo | Arquivo enviado como multipart/form-data (um arquivo por campo). Tipos aceitos: doc, docx, pdf, xls, xlsx, csv, jpg/jpeg, png e gif. Só utilizado quando se deseja anexar um único arquivo à mensagem. | file (form-data) | 2 MB | não |
| anexo[] | Múltiplos arquivos enviados como multipart/form-data. Use esta forma para anexar vários arquivos na mesma mensagem. Mesma whitelist e limites do campo anexo. |
file[] (form-data) | 2 MB | não |
Envio só-texto (retrocompatível): corpo JSON contendo apenas o campo mensagem (application/json).
Envio com anexo(s): use multipart/form-data com o campo mensagem (texto obrigatório) mais o campo anexo (um arquivo) ou anexo[] (vários arquivos).
Limites do chat: 2 MB por anexo e 5 anexos por conversa (contando todos os anexos já enviados nas mensagens da conversa). Se qualquer arquivo violar a whitelist, o tamanho ou o limite de quantidade, nada é persistido (nem a mensagem, nem os arquivos) e a resposta é HTTP 400.
O tipo do pedido (envio/reversa) e a transportadora são obtidos automaticamente do próprio pedido (o número do pedido já identifica se é envio ou reversa e qual a transportadora do envio). A mensagem é sempre no sentido loja → transportadora.
Body
// Envio só-texto (application/json):
{
"mensagem": "Bom dia, qual o status da coleta?"
}
// Envio com anexo(s) — multipart/form-data (NÃO é JSON):
// mensagem : "Segue o comprovante em anexo" (texto OBRIGATÓRIO)
// anexo : (arquivo) → um arquivo
// anexo[] : (arquivo), (arquivo) → vários arquivos
//
// Exemplo com curl:
// curl -X POST "https://www.allpost.com.br/api/v1/chat/665f1c2a3fdb9612b7f43261/mensagem" \
// -H "Authorization: Bearer SEU_TOKEN" \
// -F "mensagem=Segue o comprovante em anexo" \
// -F "anexo[]=@comprovante.pdf" \
// -F "anexo[]=@foto.jpg"
Response
// Envio só-texto:
{
"id": "a1b2c3d4",
"data": "2025-01-15T10:32:00",
"origem": "loja"
}
// Envio com anexo(s): a resposta inclui a lista "anexos":
{
"id": "a1b2c3d4",
"data": "2025-01-15T10:32:00",
"origem": "loja",
"anexos": [
{
"url": "chat/anexos/665f1c2a/comprovante.pdf",
"nome": "comprovante.pdf",
"data": "2025-01-15T10:32:00",
"idUsuario": 87,
"nomeUsuario": "Atendente HelpyGo",
"idTransportadora": null
}
]
}