Errors
The canonical error envelope
Standard API errors share this envelope:
error— a stable, machine-readable code. Branch on this, not the message.message— human-readable; wording may change between releases.request_id— also returned as theX-Request-Idheader. Quote it in support tickets so we can pull the matching server log line.docs_url— deep link to the per-code documentation page.
Validation failures add an errors array of individual messages.
Plan and feature limits
Feature gates use a separate actionable payload with a stable code, the
affected feature_key, and an upgrade_url:
Branch on code for these responses. Period-based limits can also include
current_usage, limit, and resets_at, with Retry-After set when a reset
time is available. Unlike the standard envelope, feature-gate payloads do not
include request_id or docs_url.
Status codes
Cross-workspace access returns 404, not 403, so the API never leaks the
existence of records you can’t see.

