Requests, pagination and filtering
The list contract shared by every collection endpoint.
Format
- Request and response bodies are JSON (
Content-Type: application/json), UTF-8. - Timestamps are ISO 8601 in UTC, for example
2026-10-01T09:30:00.000Z. - Money is a JSON number in the record's currency.
- IDs are opaque strings. Don't parse them.
- Most endpoints reject unknown body fields with
400, so typos fail loudly rather than being ignored.
Pagination
Collection endpoints (GET /v1/leads, /contacts, /accounts,
/opportunities, /tasks, /quotes, /orders, /activities, /cases, …) are
offset-paginated:
| Parameter | Default | Notes |
|---|---|---|
page | 1 | 1-based |
limit | 50 | Capped at 200 |
Walk a collection by incrementing page until hasMore is false. Leads also
return nextCursor; pass it back as cursor for stable infinite scrolling.
Sorting
| Parameter | Values |
|---|---|
sortBy | A field the endpoint allows, for example createdAt, updatedAt, name, amount, closeDate |
sortOrder | asc or desc |
Each endpoint has an allow-list of sortable fields. A field outside it falls back to the endpoint's default order instead of failing.
Filtering
Each endpoint documents its own filters in the reference, for example
status, stage, accountId or ownerId. Leads, contacts, accounts,
opportunities and tasks also share:
| Parameter | Meaning |
|---|---|
search | Free-text match on the record's name, email and similar fields |
owner=me | Only records you own |
open=true | Only open records (not converted, closed or completed) |
createdAfter | ISO date; only records created on or after it |
ids | Comma-separated IDs |
Filters only narrow what you can already see. They never widen record visibility.
Custom fields
Custom field values for a record are at
GET /v1/custom-fields/values/{entityType}/{entityId}. They include computed
formula and roll-up values, flagged computed: true. GraphQL exposes the same
values as customFields on each record. See custom objects.