Skip to main content
Every error is JSON with the same three parts: a human-readable message, a stable machine-readable code, and — for input problems — errors keyed by attribute:

Error codes

Branch on the status code, the code, and the attribute keys in errors. message text is written for humans and may change; do not parse it. Codes are stable within the current version — new ones may be added, existing ones are not renamed.

Diagnosing

Every response includes an X-Request-Id. The same id appears against the request on the account’s Developers → API Logs page — status, latency and the caller — and support can trace it from there.

Rate limits

X-RateLimit-Limit and X-RateLimit-Remaining are on every response. Limits are per integration (per API key) — a burst from one integration does not affect another on the same account.