Error envelope
Every error has the same shape:typeis the broad kind of error. See the table below.codeis stable. Branch on it.messageis for people. It can change, so do not parse it.paramnames the field at fault, or isnull.request_idmatches theX-Request-Idheader. Quote it if you contact us.
Status codes
Common codes
Request
Billing and plan
Permission
Not found
Each area has its own code, such asclient_not_found, document_not_found, member_not_found, report_not_found or webhook_endpoint_not_found. All are 404. An id from another firm is treated as not found.
Conflicts
Rate limits
Each API key, and each connected app, may make 120 requests a minute. The window is a fixed minute. Every successful response carries these headers:
Over the limit, the API answers
429 with code rate_limited and a Retry-After header in seconds. Wait that long, then try again.
Retrying
- Retry
429afterRetry-After. - Retry
500,502and503with a backoff. - Do not retry
400,401,402,403,404or409without changing something first. - Not every write is safe to repeat. A
POSTthat creates something can create it twice. Read before you retry a create.
Pagination
Lists return one page at a time:limitsets the page size, from 1 to 100. The default is 25.- When
has_moreistrue, passnext_cursorascursorto get the next page, or callnext_page_url. - Keep the other query parameters the same while you page.
- When
has_moreisfalse,next_cursorandnext_page_urlarenull.

