Skip to main content

Pagination

List operations take limit and offset:

query {
processes {
listProcessRuns(processId: 5, limit: 10, offset: 0) {
runWorkflowId
phase
startedAt
}
}
}

The server clamps

limit is bounded server-side. Asking for a very large page does not fail — it quietly returns the clamped maximum, which means you cannot tell "that was the last page" from "that was the clamp" by looking at the count alone. Page until you get a short page, and treat a full page as "there may be more".

Start small. limit: 10 is a good default for interactive use and for anything whose results you are about to feed to a model.

Prefer point lookups

If you know which entity you want, ask for it directly rather than listing and filtering client-side:

  • getTask(taskId:) / getTask(publicId:) over listTasks + filter
  • getProcess(publicId:) over listProcessesAndWorkflows + find
  • getProcessRun(...) over listProcessRuns + find

Point lookups are cheaper on both ends and they do not interact with clamping at all.

Select only what you need

GraphQL charges you for breadth. A list query that selects every field of every row is the most common cause of a slow integration against this API — name the three or four fields you actually use.