Authentication

API keys

Inference requests authenticate with an UberLLM API key. Keys start with ull_ followed by a random suffix. Pass it as a bearer token:

Authorization: Bearer ull_your_key_here

The Anthropic surface also accepts the key in the x-api-key header.

Create, list, and revoke keys under Dashboard → API Keys. The full secret is displayed once at creation — store it immediately; UberLLM keeps only a hash and can never show it again. Revoking a key takes effect within seconds.

Per-key controls

Each key can carry its own guardrails, set when you create it or later:

  • Spend limit — a cap in USD over a daily, monthly, or lifetime window. Requests that would exceed it are rejected with 402 key_spend_cap_exceeded.
  • Rate limit — a per-minute request ceiling.
  • BYOK provider — pin the key to route through your own provider credential (see below).

BYOK — bring your own key

Add a provider credential under Dashboard → BYOK. Requests routed through a BYOK provider use your credential directly; no credits are reserved and the per-token cost is zero on your UberLLM balance. Stored credentials are encrypted and only ever surfaced as a masked last-4.

Dashboard sessions

The web dashboard authenticates with an email + password login that mints a short-lived JWT, stored in an httpOnly cookie. This session is separate from your ull_ inference keys — dashboard endpoints under /api/v1/* use the cookie; the gateway (/v1/*) uses the API key.

Errors

Auth failures return an OpenAI-style error envelope:

{ "error": { "code": "invalid_api_key", "message": "…", "type": "authentication_error" } }

See Errors & limits for the full list.