Rate limits and plan quotas

QCOS enforces limits at four layers. Every layer answers with an explicit machine-readable error — see Errors.

Request rate limits

Health and documentation endpoints (/health, /ready, /docs, /openapi.json) are excluded.

Subscription tier quotas

Current enforced defaults per tier (your contract may differ — the API is the authority at runtime): Exceeding a daily job quota returns 429 with the message Daily job limit reached (N). Upgrade to increase limit. Exceeding a qubit or shot ceiling returns 403 with plan_qubit_limit_exceeded / plan_shot_limit_exceeded.

License plan ceilings

License-level capability ceilings are served live at GET /api/v2/plan-limits (no prices — pricing belongs to the Platform): An unrecognized plan name resolves to the tighter ceiling — limits fail closed.

Entitlement gate

Before a billable execution, QCOS validates the entitlement with the SoftQuantus Platform (which owns the wallet):
  • QPU backends fail closed — if the platform is unreachable, hardware execution is refused (503).
  • Simulators fail open — free simulator work continues during a platform outage.
  • Denials return 402 with entitlement_denied, the machine reason, your remaining credits and an upgrade_url.

Practical guidance

  • Batch related circuits into a session instead of hammering the submit endpoint.
  • Use ?dry_run=true to validate and estimate without consuming a job slot.
  • Watch the X-Request-ID response header and include it when reporting a limit you believe is wrong.