Pular para o conteúdo

Kanban

O Kanban da TopTalking organiza as conversas em etapas (colunas), como um funil de vendas ou de atendimento. Cada contato está em no máximo uma etapa. As etapas são configuradas no painel em Configurações → Etapas do Kanban.

A etapa com is_final: true (normalmente “Finalizado”) é especial: mover um card para ela finaliza a conversa, igual ao painel.

{
"id": "9b2f5a8e-6a3b-4d0e-9a51-2a7f4f1d0c11",
"object": "stage",
"name": "Negociação",
"color": "#8b5cf6",
"position": 2,
"is_final": false
}
Campo Tipo Descrição
id UUID ID da etapa. Use em stage_id.
object string Sempre stage.
name string Nome da coluna.
color string Cor da coluna no painel (hexadecimal).
position inteiro Ordem da coluna (0 = primeira).
is_final booleano Etapa terminal (“Finalizado”). Mover um card para ela finaliza a conversa.

Nos contatos e nos webhooks, a etapa aparece resumida (id, name, is_final).

GET/v1/stages

Devolve as etapas na ordem das colunas. Use para descobrir o id de cada etapa antes de mover cards ou filtrar contatos.

Não tem parâmetros. A lista vem inteira numa página (has_more: false).

Janela do terminal
curl https://platform.toptalking.com.br/v1/stages \
-H "Authorization: Bearer $TOPTALKING_API_KEY"
{
"object": "list",
"data": [
{
"id": "e63d8231-3992-457e-a8b0-d1be2fa591d4",
"object": "stage",
"name": "Novo lead",
"color": "#3b82f6",
"position": 0,
"is_final": false
},
{
"id": "5f861a0a-9667-4215-b498-3be9da314b60",
"object": "stage",
"name": "Em atendimento",
"color": "#f59e0b",
"position": 1,
"is_final": false
},
{
"id": "9b2f5a8e-6a3b-4d0e-9a51-2a7f4f1d0c11",
"object": "stage",
"name": "Negociação",
"color": "#8b5cf6",
"position": 2,
"is_final": false
},
{
"id": "3c671a88-07fb-4ccc-80db-184be834360c",
"object": "stage",
"name": "Finalizado",
"color": "#22c55e",
"position": 3,
"is_final": true
}
],
"has_more": false,
"next_cursor": null
}

Só os gerais: 401 (chave) e 429 (limite por minuto). Veja Erros.

Para mover um contato de etapa, use PATCH /contacts/{contact_id} com stage_id:

PATCH/v1/contacts/{contact_id}

Corpo Efeito
{ "stage_id": "<id da etapa>" } Move o card para a etapa.
{ "stage_id": "<id da etapa final>" } Move para a etapa final e finaliza a conversa.
{ "stage_id": null } Tira o card de qualquer etapa.
Janela do terminal
curl -X PATCH https://platform.toptalking.com.br/v1/contacts/3f1c2b9a-7d4e-4c55-8a0e-1b2c3d4e5f60 \
-H "Authorization: Bearer $TOPTALKING_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "stage_id": "9b2f5a8e-6a3b-4d0e-9a51-2a7f4f1d0c11" }'

A resposta 200 é o contato atualizado, já com o novo stage. Um stage_id que não é etapa da organização responde 400 invalid_field (param: "stage_id"); um contato inexistente, 404 resource_not_found.

Para montar o seu próprio Kanban, busque as etapas e depois os contatos de cada uma com o filtro stage_id:

const API = 'https://platform.toptalking.com.br/v1';
const headers = { Authorization: `Bearer ${process.env.TOPTALKING_API_KEY}` };
const { data: etapas } = await (await fetch(`${API}/stages`, { headers })).json();
const quadro = [];
for (const etapa of etapas) {
const url = `${API}/contacts?stage_id=${etapa.id}&archived=false&limit=100`;
const { data: cards } = await (await fetch(url, { headers })).json();
quadro.push({ ...etapa, cards });
}

Assine o webhook contact.stage_changed. Ele chega toda vez que um card muda de coluna — pelo painel, pela IA ou pela API — com a etapa nova e a anterior.