Pular para o conteúdo

Com a API de mensagens você pode enviar mensagens e consultar o histórico de um chat.

Se você só precisa listar e transferir conversas, veja: Chats.

Listar Mensagens

GET https://api.tinko.com.br/v1/chats/{id}/messages

Retorna todas as mensagens de um chat específico.

Headers

NomeTipoObrigatórioDescrição
AuthorizationstringSimToken de autenticação. Ex: Bearer seu_token

Path Parameters

NomeTipoObrigatórioDescrição
idstringSimID do chat

Query Parameters

NomeTipoObrigatórioDescrição
pageintegerNãoNúmero da página. Default: 1
per_pageintegerNãoRegistros por página (máx: 100). Default: 20
typestringNãoFiltrar por tipo: text, image, video, audio, document, sticker, vcard, template. Default: todos
directionstringNãoFiltrar por direção: incoming (recebida), outgoing (enviada). Default: todos
visibilitystringNãoFiltrar por visibilidade: client (visível), internal (nota interna). Default: todos
attendantstringNãoFiltrar por ID do atendente. Default: todos
contentstringNãoBuscar no conteúdo da mensagem (busca parcial)

Exemplo de requisição

Terminal window
curl -X GET "https://api.tinko.com.br/v1/chats/01arz3ndektsv4rrffq69g5fav/messages?direction=incoming&type=text" \
-H "Authorization: Bearer SEU_TOKEN"

Response

{
"success": true,
"data": [
{
"id": "01arz3ndektsv4rrffq69g5fav",
"signature": null,
"content": "Oi",
"type": "text",
"direction": "incoming",
"visibility": "client",
"created_at": "2025-10-29T17:58:47.000000Z",
"is_forwarded": false,
"user": null,
"file": null
},
{
"id": "01hxyz123abc456def789ghjkm",
"signature": "João Silva",
"content": "oi",
"type": "text",
"direction": "outgoing",
"visibility": "client",
"created_at": "2025-10-29T17:58:36.000000Z",
"is_forwarded": false,
"user": {
"id": "01j7m8n9p0q1r2s3t4u5v6w7x",
"name": "João Silva",
"email": "joao.silva@exemplo.com.br",
"type": "admin"
},
"file": null
}
],
"pagination": {
"total": 2,
"per_page": 20,
"current_page": 1,
"last_page": 1
}
}

Campos do Response

CampoTipoDescrição
idstringID da mensagem
signaturestring/nullAssinatura do atendente
contentstringConteúdo da mensagem
typestringTipo: text, image, video, audio, document, sticker, vcard, template
directionstringincoming (recebida) ou outgoing (enviada)
visibilitystringclient (visível) ou internal (nota interna)
is_forwardedbooleanSe foi encaminhada
userobject/nullUsuário que enviou (apenas outgoing)
fileobject/nullArquivo anexado

Enviar Mensagem

POST https://api.tinko.com.br/v1/messages

Envia uma mensagem para um contato. Suporta texto, mídia e templates.

Headers

NomeTipoObrigatórioDescrição
AuthorizationstringSimToken de autenticação. Ex: Bearer seu_token

Request Body

NomeTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país. Ex: 5511999999999
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringNãoTipo: text, image, video, audio, document, sticker, vcard, template. Default: text
contentstringCondicionalConteúdo da mensagem. Obrigatório para type: text
pathstringCondicionalURL pública do arquivo. Obrigatório para tipos de mídia
captionstringNãoLegenda do arquivo (para mídia)
namestringCondicionalNome do contato. Obrigatório para type: vcard
contactstringCondicionalTelefone do contato. Obrigatório para type: vcard
templatestringCondicionalID do template. Obrigatório para type: template
componentsarrayCondicionalComponentes com variáveis. Obrigatório para type: template

Tipos de Envio


Mensagem de texto

POST https://api.tinko.com.br/v1/messages

Envia uma mensagem de texto simples para o contato.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringSimtext
contentstringSimConteúdo da mensagem
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"content": "Olá! Como posso ajudar você hoje?",
"type": "text"
}'

Imagem

POST https://api.tinko.com.br/v1/messages

Envia uma imagem para o contato. Formatos suportados: JPG, JPEG, PNG.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringSimimage
pathstringSimURL pública da imagem
captionstringNãoLegenda da imagem
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"path": "https://exemplo.com/produto.jpg",
"caption": "Confira nossa promoção!",
"type": "image"
}'

Vídeo

POST https://api.tinko.com.br/v1/messages

Envia um vídeo para o contato. Formatos suportados: MP4.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringSimvideo
pathstringSimURL pública do vídeo
captionstringNãoLegenda do vídeo
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"path": "https://exemplo.com/video.mp4",
"caption": "Tutorial do produto",
"type": "video"
}'

Áudio

POST https://api.tinko.com.br/v1/messages

Envia um áudio para o contato. Formatos suportados: MP3, OGG.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringSimaudio
pathstringSimURL pública do áudio
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"path": "https://exemplo.com/audio.mp3",
"type": "audio"
}'

Documento

POST https://api.tinko.com.br/v1/messages

Envia um documento para o contato. Formatos suportados: PDF, DOC, DOCX, XLS, XLSX, TXT, ZIP.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
attendantstringNãoID do atendente a ser vinculado à mensagem
typestringSimdocument
pathstringSimURL pública do documento
captionstringNãoLegenda do documento
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"path": "https://exemplo.com/catalogo.pdf",
"caption": "Catálogo de produtos 2025",
"type": "document"
}'

Sticker

POST https://api.tinko.com.br/v1/messages

Envia um sticker para o contato. Formato suportado: WEBP.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
typestringSimsticker
pathstringSimURL pública do sticker
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"path": "https://exemplo.com/sticker.webp",
"type": "sticker"
}'

Contato (vCard)

POST https://api.tinko.com.br/v1/messages

Envia um cartão de contato para o destinatário.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
typestringSimvcard
namestringSimNome do contato a ser compartilhado
contactstringSimTelefone do contato a ser compartilhado
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"name": "João Silva",
"contact": "+55 31 90000 0000",
"type": "vcard"
}'

Template (somente texto)

POST https://api.tinko.com.br/v1/messages

Envia um template de mensagem contendo apenas texto com variáveis.

CampoTipoObrigatórioDescrição
phonestringSimNúmero do destinatário com código do país
channelstringSimID do canal que enviará a mensagem
typestringSimtemplate
templatestringSimID do template cadastrado
componentsarraySimComponentes com as variáveis do template
Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"type": "template",
"template": "01arz3ndektsv4rrffq69g5fav",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "João" },
{ "type": "text", "text": "BEMVINDO10" }
]
}
]
}'

Template com Header (imagem)

POST https://api.tinko.com.br/v1/messages

Envia um template de mensagem com imagem no cabeçalho e variáveis no corpo.

Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"type": "template",
"template": "01hxyz123abc456def789ghjkm",
"components": [
{
"type": "header",
"parameters": [
{ "type": "image", "path": "https://exemplo.com/pedido.jpg" }
]
},
{
"type": "body",
"parameters": [
{ "type": "text", "text": "João" },
{ "type": "text", "text": "12345" },
{ "type": "text", "text": "25/12/2025" }
]
}
]
}'

Template com Botão Dinâmico

POST https://api.tinko.com.br/v1/messages

Envia um template de mensagem com botão de URL dinâmica.

Terminal window
curl -X POST "https://api.tinko.com.br/v1/messages" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "5511999999999",
"channel": "01arz3ndektsv4rrffq69g5fav",
"type": "template",
"template": "01j7m8n9p0q1r2s3t4u5v6w7x",
"components": [
{
"type": "body",
"parameters": [
{ "type": "text", "text": "Carlos" },
{ "type": "text", "text": "98765" },
{ "type": "text", "text": "150,00" }
]
},
{
"type": "button",
"sub_type": "url",
"index": 0,
"parameters": [
{ "type": "text", "text": "ABC123XYZ" }
]
}
]
}'

Estrutura dos Componentes do Template

CampoTipoObrigatórioDescrição
typestringSimTipo: header, body, button
parametersarraySimLista de parâmetros/variáveis
sub_typestringCondicionalSubtipo do botão: url, quick_reply. Obrigatório para type: button
indexintegerCondicionalÍndice do botão, começando em 0. Obrigatório para type: button

Tipos de Parâmetros

TipoCampoDescrição
texttextTexto simples
imagepathURL pública de imagem
videopathURL pública de vídeo
documentpathURL pública de documento

Response

{
"success": true,
"message": "Mensagem enviada com sucesso.",
"data": {
"message": {
"id": "01arz3ndektsv4rrffq69g5fav",
"content": "Olá! Como posso ajudar você hoje?",
"type": "text",
"direction": "outgoing",
"visibility": "client",
"created_at": "2025-11-27T14:30:00.000000Z"
},
"chat": {
"id": "01hxyz123abc456def789ghjkm",
"status": "waiting",
"is_open": true
},
"contact": {
"phone": "5511999999999",
"name": "João Silva"
}
}
}

Erros

Exemplo de erro estruturado:

{
"success": false,
"message": "Não foi possível enviar a mensagem.",
"errors": [
{
"code": "CHANNEL_DISCONNECTED",
"message": "O canal está desconectado. É necessário reconectar para enviar mensagens."
}
]
}