View as Markdown

Lists and pages

Every list answers one page, in the same envelope:

{
  "items": [{ "id": "01J9Z3Q4X5V6W7Y8Z9A0B1C2D3" }],
  "next_cursor": "cD0yMDI2LTA5LTI1"
}
  • items holds the rows of the page.
  • next_cursor is the cursor of the next page, or null on the last page.

Read every page

Send next_cursor back as the cursor query parameter, with the same filters, until next_cursor is null.

GET /api/companies/{company_id}/invoices/?limit=100
GET /api/companies/{company_id}/invoices/?limit=100&cursor=cD0yMDI2LTA5LTI1
  • limit sets the page size, from 1 to 200. The default is 50.
  • A cursor is opaque. Do not build one, and do not keep one for long: use it for the next page only.
  • A malformed cursor, or a cursor of another list, gets 400 validation_error with the error invalid_cursor on cursor. Start again from the first page.

The order

  • The lists of the books (invoices, parties, bank transactions, document records and the others under /api/companies/{company_id}/) come oldest first, in a fixed order that ends with the id: invoices by invoice date, bank transactions by booking date.
  • The other lists (organizations, companies, files) come newest first.

Reports are not lists

The reports (trial balance, general ledger, open items, balance sheet, profit and loss, VAT preview) are not paged. Each call returns the whole answer. They are expensive, so they have their own rate limit: see Rate limits.