OctoSolveAjuda
DesenvolvedorComeçar aqui

Paginação

Percorra listas da API da OctoSolve com cursor opaco, limite e filtros estáveis.

Paginação

Listas usam paginação por cursor. O cursor é opaco e assinado: trate-o como uma string e envie exatamente o valor recebido. Decodificar, editar ou montar um por conta própria não funciona, a resposta vem como invalid_cursor.

{
  "data": [],
  "has_more": true,
  "next_cursor": "eyJiIjoie1wiZlwiOi4uLn0iLCJzIjoiLi4uIn0="
}

O cursor mudou de formato em 17/08/2026, quando passou a ser assinado e amarrado à sua conta. Cursor emitido antes disso deixou de valer: se você guardou um, refaça a busca sem cursor para pegar o primeiro da nova sequência. Cursor só vale dentro de uma paginação em andamento, então isso não afeta quem pagina de ponta a ponta.

Junto veio outra regra: mandar cursor vazio agora é erro, não "primeira página". Só inclua o parâmetro quando a variável tiver valor.

Parâmetros

ParâmetroRegra
limitDe 1 a 100, com padrão 50
cursorCursor retornado em next_cursor pela página anterior

Os contatos são ordenados por id em ordem crescente. Essa ordem é estável, mas não é cronológica. Não use a posição na lista para concluir quando um contato foi criado.

O cursor também representa os filtros usados na consulta. Alterar telefone, q, status ou tag e reaproveitar o cursor anterior responde 400 invalid_cursor.

No fim da lista, a API retorna has_more: false e next_cursor: null.

Percorrer páginas com curl

Primeira página:

curl --request GET \
  --url "https://api.octosolve.com.br/api/v1/contacts?status=ativo&limit=50" \
  --header "Authorization: Bearer osk_live_exemplo_ficticio_00000000000000000000000000" \
  --header "Accept: application/json"

Página seguinte, mantendo o mesmo filtro:

curl --request GET \
  --url "https://api.octosolve.com.br/api/v1/contacts?status=ativo&limit=50&cursor=CURSOR_RECEBIDO" \
  --header "Authorization: Bearer osk_live_exemplo_ficticio_00000000000000000000000000" \
  --header "Accept: application/json"

Receita para Make ou n8n

  1. Inicie uma variável cursor vazia e mantenha os filtros em variáveis que não mudam durante a execução.
  2. Faça GET /contacts com limit=100. Só inclua cursor quando a variável tiver valor.
  3. Processe o array data com um iterador.
  4. Copie next_cursor para a variável cursor.
  5. Se has_more for true, volte ao módulo ou nó HTTP com os mesmos filtros.
  6. Se has_more for false, encerre o loop.
  7. Se receber invalid_cursor, descarte o cursor e reinicie desde a primeira página. Não tente corrigir a string.

On this page