Authentication
The API takes two bearer credentials: an API key, a workspace's server-to-server credential for the inference API and the SDKs, and a person's access token, issued to the person's own tools by sign-in. Use a key for a server or an SDK; hi and HIPS Code sign in. Every request is attributed to one workspace and one plan; the plan decides limits, the request-data policy and which requirements are allowed.
Parts list: Authentication
CredentialAuthorization: Bearerfollowed by the key. Created in the Console's API keys view, named, of a kind, shown once, stored as a hash. Public idkey_. The key's value is read fromHIPS_API_KEY; no key value appears on any page.Where keys liveOn the server or in a secret store. Keep keys on the server or in an appropriate secret store, rather than shipping them in a public browser application. The gateway sends no cross-origin headers for live keys Not decided yet.
Publishable keysReserved for a later browser path and not part of this version of the contract Not decided yet.
A person's toolsThe
hiCLI, the provider app and HIPS Code need no API key: they sign in as the person with OAuth 2.0 device authorization. The tool shows a user codeXXXX-XXXXand its link, the person approves it in the Console while signed in and chooses the workspace, and the tool receives a short-lived, scoped access token with a refresh token. The gateway accepts that token as the bearer beside API keys and attributes usage to the chosen workspace. The access token lasts 1 hour and the refresh token 30 days, replaced on each use; an expired access token answers 401token_expired, and a token without theinferencescope 403insufficient_scope. The steps are on Sign in with device authorization.Key defaultsEach key carries defaults for the four request requirements (pool, pricing mode, region, fallback), set in the Console.
Key kindfullorinference_onlyfullreaches every route;inference_onlythe inference routes alone (chat completions, responses, models, tasks, jobs, uploads and the jobs it created). Fixed at creation. A route the kind excludes is a 403key_scope_denied. A per-key model or deployment allow-list is open Not decided yet.Workspace stateA key of a paused or deleted workspace answers 403
workspace_suspendedon every route; a key of a workspace whose owner has not passed identity verification answers 403permission_errorwith the codeworkspace_unverified.
| Status | Type | Code | Situation | Retry |
|---|---|---|---|---|
| 401 | authentication_error | missing_api_key | No Authorization header, or not a bearer | No |
| 401 | authentication_error | invalid_api_key | Unknown, malformed or revoked key. The message never says which | No |
| 403 | permission_error | key_scope_denied | The key's kind excludes the route | No |
| 403 | permission_error | workspace_unverified | The workspace's owner has not passed identity verification; the message names the Console's verification screen | After verification |
| 403 | workspace_suspended | workspace_paused | The workspace is paused: by balance, by an administrator, by a dispute, by a budget hard stop or by an owner. The message says which and where to resolve it | After resolution |
| 403 | workspace_suspended | plan_lapsed | The subscription lapsed and no owner has yet acknowledged the free plan's request-data policy or paid; the policies hold meanwhile | After acknowledgment or payment |
| 403 | workspace_suspended | workspace_deleted | The workspace is deleted (restorable 30 days) | After restore |
- Status
- 401
- Type
authentication_error- Code
missing_api_key- Situation
- No
Authorizationheader, or not a bearer - Retry
- No
- Status
- 401
- Type
authentication_error- Code
invalid_api_key- Situation
- Unknown, malformed or revoked key. The message never says which
- Retry
- No
- Status
- 403
- Type
permission_error- Code
key_scope_denied- Situation
- The key's kind excludes the route
- Retry
- No
- Status
- 403
- Type
permission_error- Code
workspace_unverified- Situation
- The workspace's owner has not passed identity verification; the message names the Console's verification screen
- Retry
- After verification
- Status
- 403
- Type
workspace_suspended- Code
workspace_paused- Situation
- The workspace is paused: by balance, by an administrator, by a dispute, by a budget hard stop or by an owner. The message says which and where to resolve it
- Retry
- After resolution
- Status
- 403
- Type
workspace_suspended- Code
plan_lapsed- Situation
- The subscription lapsed and no owner has yet acknowledged the free plan's request-data policy or paid; the policies hold meanwhile
- Retry
- After acknowledgment or payment
- Status
- 403
- Type
workspace_suspended- Code
workspace_deleted- Situation
- The workspace is deleted (restorable 30 days)
- Retry
- After restore
Related sheets
- Sheet
- 11 of 13
- Detail
- A
- Updated
- 2026-10-21
- Status
- Preview