Errors & plan limits

Ingest API errors return JSON { error: string, code?: string }. Use code for programmatic handling where present.

HTTP status codes

StatusBody
401Missing or invalid Authorization bearer token
403Organization mismatch; org suspended; forbidden scope
402 / 429Plan limit — events/month or feature cap (code: plan_limit)
404Resource not found (approvals, events)
409Conflict — e.g. approval not in approved state
422Validation — invalid JSON, signature, envelope fields
503Dependency unavailable (database, policy engine)

SDK errors

  • PolicyDeniedError — wrapFetch policy returned deny; no HTTP call made
  • ApprovalRequiredError — includes approvalId for obligation flow
  • Network errors include hint to start pnpm dev when API unreachable

Free plan defaults (typical)

  • 5,000 events / month
  • 3 ingest API keys
  • 5 members
  • 90-day retention

Exact limits are shown in Console → Settings → Plan & usage.

Idempotency

Re-posting the same event with the same Idempotency-Key returns 200 with status: "replayed" — safe for retries after network failures.