Skip to main content
All API errors use a consistent JSON envelope. The HTTP status code indicates the category of failure; the error field provides a human-readable description.

Response format

Every error response has this shape:
Successful responses use the same envelope with a data field instead:
The error and data fields are mutually exclusive — only one will be present.

HTTP status codes

4xx Client errors

5xx Server errors

Common error messages

400 Bad Request

401 Unauthorized

Returned when a protected endpoint is accessed without a valid session or token.

403 Forbidden

404 Not Found

409 Conflict

410 Gone

Returned for invite links that are no longer valid. Unlike 404, this means the resource once existed but is intentionally unavailable.

429 Too Many Requests

Rate limit exceeded. The response includes a Retry-After: 1 header.
See Rate Limiting for limits and retry strategies.

500 Internal Server Error

Handling errors

The error string is safe to display directly in a UI. For internationalization, match specific error strings to localized messages.