Skip to main content
The DecimalAI API uses standard HTTP status codes and returns structured JSON error bodies.

Error response shape

For validation errors raised by Pydantic, detail is a list of structured field errors:

Status codes

Idempotency

Several endpoints are idempotent by design:
  • POST /api/v1/manifests — same manifest_hash returns the existing manifest_id with status: "existing".
  • POST /api/v1/skills/sync — unchanged skills return {"status": "unchanged"}; changes auto-create a new version.
  • POST /api/v1/traces — duplicate trace_id returns the existing trace.
Re-running these is safe and will not double-count toward your quota.

Rate limits

Indicative rate limits per plan tier (the per-minute numbers are illustrative targets, not a hard contract — limiting is currently global rather than per-plan-enforced): When you hit a limit, responses include:
The SDK respects Retry-After automatically. If you’re calling the API directly, sleep for the indicated number of seconds before retrying.

Reporting an issue

For 5xx errors or unexpected behavior, include the X-Request-ID response header when filing a support ticket — it lets us look up the failing request in logs.