Paginação
Todas as listas usam cursor:
{ "data": [ … ], "next_cursor": "eyJ2Ijpb…", "has_more": true }
limit: 1 a 100 (padrão 25).- Para a próxima página, repita a requisição com os mesmos filtros e
cursor=<next_cursor>. Pare quandohas_moreforfalse. - O cursor é opaco, assinado, vale 24 horas e só para a mesma chave e os mesmos filtros; caso contrário,
422 invalid_cursor. Não tente interpretá-lo. - A ordem é sempre total (desempate por
id), então páginas não pulam nem repetem registros mesmo com gravações acontecendo.
Sincronização incremental
Contatos com updated_since vêm do mais antigo para o mais novo (updated_at, id). Guarde o maior updated_at que
você viu e use-o na próxima sincronização:
curl "https://atende.suporteja.com.br/v1/contacts?updated_since=2026-10-20T00:00:00Z&limit=100" \
-H "Authorization: Bearer $ATENDLLY_API_KEY"
Mensagens de uma conversa vêm da mais nova para a mais antiga; use before_id com o next_before_id da resposta.