Paginação
As listagens são paginadas com cursores keyset assinados, ordenados por id crescente. A página padrão é 50 e o máximo é 100.
{ "data": [ /* … */ ], "pagination": { "limit": 50, "has_more": true, "next_cursor": "cur_..." }}Itere pelo has_more, nunca por data.length
Seção intitulada “Itere pelo has_more, nunca por data.length”Este é o erro de integração mais comum contra esta API.
Uma página pode voltar curta, ou até vazia, com has_more em true. O
serviço limita quanto varre por requisição, então numa janela esparsa as linhas
restantes vêm na chamada seguinte, em vez de numa resposta única e lenta.
// Certolet cursor = null;do { const page = await fetchPage(cursor); await handle(page.data); cursor = page.pagination.next_cursor;} while (cursor);// Errado — para cedo numa janela esparsalet page = await fetchPage();while (page.data.length > 0) { /* … */ }O cursor amarra seus filtros
Seção intitulada “O cursor amarra seus filtros”O next_cursor é assinado e cobre todos os filtros da requisição que o gerou.
Devolva-o sem alterar, com os mesmos filtros. Mudar um filtro no meio da
travessia, ou editar o cursor, devolve 400 INVALID_CURSOR em vez de retornar
silenciosamente uma fatia diferente.
Para trocar de filtro, comece uma travessia nova, sem cursor.
O que a ordenação por id garante
Seção intitulada “O que a ordenação por id garante”Ordenar por id crescente torna a travessia estável sem snapshot: registros criados enquanto você pagina recebem ids maiores, então caem depois da sua posição atual e nunca deslocam uma página que você já leu.
O trade-off é o espelho disso: um registro que fica concluído depois de você já ter passado pelo id dele não entra na travessia em andamento. Ele aparece na sua próxima passada por aquela janela.
É por isso que a v1 não tem sync incremental — não existe carimbo dedicado de
“ficou visível” que tornasse um delta honesto. O updated_at é informativo; não
use como marca d’água de sincronização. Reconsulte por período:
curl ".../v1/meetings?meeting_after=2026-01-01T00:00:00Z&meeting_before=2026-02-01T00:00:00Z"Filtros
Seção intitulada “Filtros”| Parâmetro | Filtra por |
|---|---|
meeting_after / meeting_before | Quando a reunião ou ligação aconteceu. É o filtro que a maioria das integrações quer. |
created_after / created_before | Quando o registro foi criado na Salesbud. |
owner_email | Dono exato, sem diferenciar maiúsculas. |
type | video ou audio — a mídia, não o tipo de recurso. |
audience | internal ou external. |
has_transcript | Se existe recurso de transcrição. |
Todos os carimbos de tempo são RFC 3339 com offset explícito.
2026-01-01T00:00:00Z é válido; 2026-01-01 não é, e devolve
400 INVALID_DATETIME.