Common Patterns
Response Envelope
Every successful response is wrapped in a data envelope.
Single resource:
Code
List of resources:
Code
Pagination
All list endpoints use cursor-based pagination.
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 25 | Items per page (1–200) |
cursor | string | — | Opaque cursor from previous response |
How to paginate:
- Make your first request (optionally with
limit) - Check the
next_cursorfield in the response - If
next_cursoris not null, pass it as?cursor=VALUEon the next request - Repeat until
next_cursoris null (no more pages)
Code
Timestamps
All timestamps are returned as ISO 8601 strings (e.g., "2025-01-15T14:30:00.000Z").
Several list endpoints support an updated_since filter that accepts ISO 8601 timestamps and returns records modified on or after that time. See Syncing Data for the full list of supported endpoints.
Identifiers
All resources use UUIDs as public identifiers (the id field). Internal system identifiers are never exposed.
Related-resource fields like salesorder_id and shipment_id also reference public IDs. You can use these directly in API calls — for example, pass a salesorder_id from an invoice to GET /v1/sales-orders/{id} without any translation.
Null Fields
Fields that have no value are returned as null, not omitted. This makes it safe to destructure responses without checking for key existence.

