Skip to main content

Error format

All error responses share the same envelope:
The code field is a stable string identifier — use this in your error handling logic. The message field is for humans and may change over time.

Error codes


Examples

400 — Bad request

Returned when required fields are missing, types are wrong, or values fall outside allowed ranges.

401 — Unauthorized

Check that:
  • You’re sending the Authorization: Bearer <key> header
  • The key hasn’t been revoked or expired
  • For key management endpoints, you’re using a Privy JWT, not an API key

403 — Forbidden

Your key is valid but lacks the scope for this operation. For example, calling POST /api/v1/traders with a key that only has traders:read.

404 — Not found

The requested resource doesn’t exist, or you’re not following the specified trader.

409 — Conflict

Returned by POST /api/v1/traders when you attempt to follow a wallet you’re already copying.

422 — Quota exceeded

Returned when a business rule cap is hit, distinct from a validation error.

429 — Rate limited

See Rate Limits for handling strategies.

500 — Internal error

This shouldn’t happen. If you’re seeing consistent 500s, contact support@carboncopy.inc.

Error handling example