Reference · Reliability

What you can rely on.

Layer X1 is built to be the boring part of your stack. This page is the contract: the behaviors you can design an agent around, stated as outcomes — not implementation.

Always on

Zero downtime is the design target, not a status-page apology. Serving is watched and rebalanced continuously, and capacity is provisioned so that your traffic never depends on any single model deployment being healthy.

  • No scheduled maintenance windows — the API does not go down on purpose.
  • Model launches, catalog updates, and platform releases are invisible in-band: no API version bumps that break a running agent.

Sessions keep moving

Agent runs are long and stateful, so the guarantee that matters is continuity: if a model can't answer, the engine keeps your session moving. You don't write failover lists, health checks, or fallback logic — a request that can be served, will be.

When a response genuinely cannot be produced, you get a clean, protocol-shaped 5xx that says so (The model did not return a response. Please retry.) — transient by design, built to be retried. See Errors for the recipe.

Honest streams

A stream either completes or tells you it didn't. If a streamed turn cannot finish, it ends with a protocol-shaped error event — you will never receive a silent empty 200 that your agent mistakes for "the model had nothing to say."

Predictable limits

Rate limiting is boring on purpose — published numbers, standard signals, machine-readable timing:

BehaviorContract
Published limitsRequests/min and concurrency per plan, printed on Plans & limits — no unpublished throttles to discover in production.
Self-pacingEvery response carries x-ratelimit-* headers so clients can slow down before hitting the limit.
On the limit429 with retry-after in seconds — never a hang, never a dropped connection.
Out of usageSessions are never interrupted mid-run. Near the edge of a plan, the heaviest models pace to your plan while everything else keeps full speed.
Note

Everything on this page is observable from the outside — statuses, headers, and stream events. If a behavior isn't stated here or on Errors / Headers, don't build against it.