2026-10. Version 2026-09 JSON-parsed query values and ignored unknown parameters; for the differences, see Upgrading to 2026-10.
Value types
externalId=12345 filters on the string "12345", not the number. Don’t wrap a string in quotes: externalId="12345" searches for a value that includes the quote characters.
Dates
Date parameters, such ascreatedAfter and updatedBefore, take one of the following formats:
- A date, such as
2026-10-01. It means midnight UTC at the start of that day. - A date-time with
Zor an offset, such as2026-10-01T08:00:00Zor2026-10-01T10:00:00+02:00. - A date-time without an offset, such as
2026-10-01T08:00:00. The API reads it as UTC, never as the server’s local time.
400 VALIDATION_FAILED with an issue whose message is Expected an ISO 8601 date, such as 2026-10-01, or a date-time, such as 2026-10-01T08:00:00Z.
Date ranges
Lists of resources that change takecreatedAfter, createdBefore, updatedAfter, and updatedBefore. Some lists add ranges of their own, such as completedAfter and completedBefore on GET /api/v1/documents. The event list takes only createdAfter and createdBefore, because events don’t change.
Every bound includes its boundary: createdAfter matches items created at or after the time, and createdBefore matches items created at or before it. Because a date means midnight, createdBefore=2026-10-01 excludes everything later on October 1. To include the whole day, use createdBefore=2026-10-01T23:59:59.999Z.
Multi-value filters
Filters that accept several values, such asstatus and tagId on GET /api/v1/documents or type on GET /api/v1/events, take either form:
status=PENDING, is the same as status=PENDING. A filter with several values matches items that have any of them. Different filters combine, so status=PENDING&tagId=cm4k2x9p10001abcd1234efgh matches pending documents that have the tag. The API reference marks each filter that takes several values with “Comma-separated or repeated”.
Reference filters
A filter that references another resource is named after it and ends inId, such as tagId, templateId, companyId, roleId, and createdById. Most reference filters take several values. folderId, parentFolderId, and eventId take one.
Leave a filter out to match everything
No filter has anALL value. To match every value, leave the filter out. For example, GET /api/v1/members without status returns both active and inactive members.
Top-level folder items
To get only the documents or templates at the top level, outside every folder, sendfolderId=root on GET /api/v1/documents or GET /api/v1/templates. To get items in any folder, leave out folderId.
Search
Lists that support free-text search takequery, such as the document, contact, company, template, member, and block lists. query matches part of a value across several fields, such as a document’s name, externalId, and party names and email addresses.
Other text filters match a whole value. For example, externalId on GET /api/v1/documents and email on GET /api/v1/contacts return only items whose value equals yours exactly. For a partial match, use query. The API reference describes how each filter matches.
Sorting
Some lists takeorderBy and orderDirection. For the lists and their sort fields, see Sort a list.
Expand related data
An endpoint can leave out related data that’s expensive to load, and add it when you ask for it withexpand. expand takes a comma-separated list or a repeated parameter. For example, GET /api/v1/documents/{id} leaves out the document’s content blocks unless you send expand=fields:
GET /api/v1/templates/{id} takes expand=fields too. The API reference lists the values each endpoint accepts.
Unknown parameters
On every endpoint that takes query parameters, a parameter the endpoint doesn’t define returns400 VALIDATION_FAILED. A misspelled filter fails instead of being ignored, so it can’t return every result by mistake:
issues array lists every problem in the query string at once. For the issue codes, see Validation errors.
URL encoding
A query string has its own syntax, so some characters change meaning unless you encode them. The following cases cause most problems:- A plus sign (
+) decodes to a space. A phone number such as+46701234567arrives as46701234567and matches nothing, and an offset such as+02:00makes a date invalid. Encode+as%2B, or useZfor UTC. - An ampersand (
&), a number sign (#), or a space in a free-text search, such asquery, ends the value or the URL. Encode them as%26,%23, and%20. - A comma (
,) separates values in a multi-value filter, so the API readstagId=cm4k2x9p10001abcd1234efgh,cm4k2x9p10002abcd1234efghas two tag IDs, whether or not you encode the comma.
curl -G with --data-urlencode, URLSearchParams, and the params argument of requests each encode + as %2B.
Next steps
- Pagination: walk a list with
limit,cursor, andnextCursor. - Errors: the error shape and every error code.

