Terms of Service
Effective 29 October 2026 · Excession Labs
Docs
Install the agent, sign in from the terminal, and call the API.
Install
# macOS and Linux
curl -fsSL https://excessionlabs.ai/install.sh | sh
# Windows (PowerShell)
irm https://excessionlabs.ai/install.ps1 | iex
The script puts excession in ~/.local/bin (Windows: %LOCALAPPDATA%\Excession\bin). Set EXCESSION_INSTALL_DIR to choose another folder, or EXCESSION_VERSION to pin a version.
Sign in
excession login
The CLI shows a code like BCDF-GHJK and opens excessionlabs.ai/device. Check that the code matches, then press Approve. The CLI receives its own API key; you can revoke it on the API keys page.
New accounts finish a short access check first: email, a $0 card check, and the Acceptable Use Policy.
API
Base URL https://api.excessionlabs.ai/v1 (also served at https://excessionlabs.ai/v1). Send your key as Authorization: Bearer exl_... or x-api-key: exl_....
| Endpoint | Format |
|---|---|
POST /v1/chat/completions | OpenAI Chat Completions |
POST /v1/responses | OpenAI Responses |
POST /v1/messages | Anthropic Messages |
GET /v1/models | Model list with prices |
GET /v1/me | Account, access status, plan and balance |
All three formats support streaming and tool calls. Every response carries an X-Request-Id header; non-streaming responses also carry X-Cost-Usd.
curl https://api.excessionlabs.ai/v1/chat/completions \
-H "Authorization: Bearer $EXCESSION_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"excession-1","messages":[{"role":"user","content":"hello"}]}'
Errors
| Status | code | Meaning |
|---|---|---|
| 401 | invalid_api_key | Missing, wrong or revoked key. |
| 402 | insufficient_credit | No credit left. Pick a plan or top up. |
| 403 | access_required | Access setup is not finished or is in review. |
| 429 | rate_limited / model_busy | Slow down; honor Retry-After. |
| 503 | service_unavailable | Temporary. You were not charged. |
Device login for tool builders
Any client can sign in the way the CLI does, using the OAuth 2.0 Device Authorization Grant (RFC 8628).
POST /v1/device/code {"client_name": "excession-cli 0.1 on my-laptop"}
→ {"device_code", "user_code": "BCDF-GHJK", "verification_uri", "verification_uri_complete", "expires_in": 900, "interval": 5}
POST /v1/device/token {"device_code": "...", "grant_type": "urn:ietf:params:oauth:grant-type:device_code"}
→ 400 {"error": "authorization_pending"} keep polling every interval seconds
→ 400 {"error": "slow_down"} add 5 seconds to the interval
→ 400 {"error": "access_denied" | "expired_token"}
→ 200 {"access_token": "exl_...", "token_type": "Bearer", "key_id", "email"}
Open verification_uri_complete in the browser. The key is returned once; store it with file mode 0600.