Enviar mensagem do visitante
Mensagem do visitante: entra na caixa de entrada como qualquer canal (o primeiro envio abre o atendimento na fila do webchat). Texto em JSON (text) ou arquivo em multipart (media, até 10 MB; imagem, áudio, vídeo, PDF, DOCX, XLSX ou ZIP). Use Idempotency-Key para não duplicar em reenvio.
Resposta a uma mensagem interativa: interactiveReply com o id da mensagem e o id da opção escolhida (de options ou de interactive). O título gravado vem da própria mensagem, como no WhatsApp: a resposta chega ao atendimento e à automação como texto (o título da opção), citando a interativa. Pedido de localização: location com latitude e longitude, gravada como a localização do WhatsApp. Com interactiveReply ou location, o text é ignorado.
Faltando dado obrigatório: 422 ERR_WEBCHAT_VISITOR_DATA_REQUIRED, com os campos na message (ex.: name,phone). Opção que não está na mensagem (ou mensagem que o visitante não vê): 422 ERR_WEBCHAT_INTERACTIVE_REPLY_INVALID. Coordenada inválida: 422 ERR_WEBCHAT_LOCATION_INVALID. Sessão encerrada: 410.
curl --request POST \
--url https://api.connectadesk.com/api/v1/webchat/{slug}/sessions/{sessionId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Olá, gostaria de um orçamento"
}
'{
"data": {
"message": {
"id": "6f1d2c1e-8a8b-4f35-a1e6-1f2f3c4d5e6f",
"body": "Olá, gostaria de um orçamento",
"fromVisitor": true,
"origin": "visitor",
"agentName": null,
"ack": 1,
"mediaUrl": null,
"mediaType": null,
"fileName": null,
"options": [],
"interactive": {
"type": "button",
"header": null,
"body": "Como prefere pagar?",
"footer": null,
"buttons": [
{
"id": "pix",
"title": "Pix"
},
{
"id": "cartao",
"title": "Cartão"
}
]
},
"location": null,
"quoted": null,
"isDeleted": false,
"isEdited": false,
"createdAt": "2026-10-01T13:45:00.000Z"
},
"ticketId": 123
}
}{
"error": {
"code": "ERR_API_UNAUTHORIZED",
"message": "Token de API ausente ou inválido."
}
}{
"error": {
"code": "ERR_API_FORBIDDEN_SCOPE",
"message": "O token não tem permissão para este método neste módulo. A mensagem real nomeia os dois."
}
}{
"error": {
"code": "ERR_API_NOT_FOUND",
"message": "Registro não encontrado."
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O parâmetro `application` é obrigatório e aceita \"contact\" ou \"card\"."
}
}Autorizações
Token da API no formato sk_live_….
Corpo
4096Mensagem da conversa que esta responde (citada). Mensagem que o visitante não vê é ignorada.
Escolha numa mensagem interativa da empresa.
Show child attributes
Show child attributes
Localização do visitante (resposta a um pedido de localização).
Show child attributes
Show child attributes
Resposta
Criada
Show child attributes
Show child attributes
curl --request POST \
--url https://api.connectadesk.com/api/v1/webchat/{slug}/sessions/{sessionId}/messages \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"text": "Olá, gostaria de um orçamento"
}
'{
"data": {
"message": {
"id": "6f1d2c1e-8a8b-4f35-a1e6-1f2f3c4d5e6f",
"body": "Olá, gostaria de um orçamento",
"fromVisitor": true,
"origin": "visitor",
"agentName": null,
"ack": 1,
"mediaUrl": null,
"mediaType": null,
"fileName": null,
"options": [],
"interactive": {
"type": "button",
"header": null,
"body": "Como prefere pagar?",
"footer": null,
"buttons": [
{
"id": "pix",
"title": "Pix"
},
{
"id": "cartao",
"title": "Cartão"
}
]
},
"location": null,
"quoted": null,
"isDeleted": false,
"isEdited": false,
"createdAt": "2026-10-01T13:45:00.000Z"
},
"ticketId": 123
}
}{
"error": {
"code": "ERR_API_UNAUTHORIZED",
"message": "Token de API ausente ou inválido."
}
}{
"error": {
"code": "ERR_API_FORBIDDEN_SCOPE",
"message": "O token não tem permissão para este método neste módulo. A mensagem real nomeia os dois."
}
}{
"error": {
"code": "ERR_API_NOT_FOUND",
"message": "Registro não encontrado."
}
}{
"error": {
"code": "ERR_API_VALIDATION",
"message": "O parâmetro `application` é obrigatório e aceita \"contact\" ou \"card\"."
}
}
