Eleven frontier models behind one base_url. Same SDKs you already use. Half the per-token price. Migration is one string.
Three lines. No SDK swap. Pick your language and paste.
# Set your sl- key from https://dashboard.slashed.pro curl https://api.slashed.pro/v1/chat/completions \ -H "Authorization: Bearer $SLASHED_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.4", "messages": [{"role": "user", "content": "Why am I paying full price?"}] }'
# pip install openai — yes, the official one from openai import OpenAI client = OpenAI( base_url="https://api.slashed.pro/v1", api_key="sl-..." ) resp = client.chat.completions.create( model="claude-opus-4.6", messages=[{"role": "user", "content": "Hello, half-price world."}] ) print(resp.choices[0].message.content)
// npm i openai — yes, the official one import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.slashed.pro/v1", apiKey: "sl-...", }); const resp = await client.chat.completions.create({ model: "gemini-3.1-pro", messages: [{ role: "user", content: "Hello, half-price world." }], }); console.log(resp.choices[0].message.content);
All paths under /v1. All proxied 1:1 to upstream provider semantics. Anything OpenAI-spec works unchanged.
| Path | Description | Notes |
|---|---|---|
| POST/v1/chat/completions | Chat completion. Streaming, tool-use, vision, JSON mode all supported per upstream model capability. | Stream via stream:true |
| POST/v1/completions | Legacy completion endpoint. Routed for backwards compat with older SDKs. | Prefer chat/completions |
| POST/v1/embeddings | Vector embeddings. Routed to provider-native embedding model based on requested ID. | Returns data[].embedding |
| GET/v1/models | List of all 11 supported models with their canonical IDs and family. | No auth required |
| GET/v1/usage | Token + cost ledger for the authenticated key (last 30 days). | Mirrors dashboard data |
Per 1M output tokens. Direct list price → SLASHED price. Always 50%, always.
Standard Bearer token. SLASHED keys are prefixed sl- and 32 chars after the prefix. Pre-existing provider keys are honoured during migration.
Authorization: Bearer sl-... on every request. Same as OpenAI.qua-, sk-, or or- key into the dashboard to mirror your current usage and start saving immediately.OpenAI-compatible error envelope. {"error": {"type": "...", "message": "..."}} on every non-2xx.
| Code | Type | What it means |
|---|---|---|
| 400 | invalid_request | Malformed body, missing required field, unknown model. Check the message field for specifics. |
| 401 | invalid_api_key | Missing, malformed, revoked, or expired key. Generate a new one on the dashboard. |
| 402 | quota_exceeded | Per-key spend cap hit, or billing issue. Raise the cap on the dashboard, or top up. |
| 404 | not_found | Path doesn't exist on /v1, or model ID isn't in the supported set. See /v1/models. |
| 429 | rate_limited | Per-key RPM cap hit. We pass through upstream backpressure with a Retry-After header. |
| 500 | internal_error | SLASHED gateway problem. Always retryable. We page on this. |
| 502 | upstream_error | Upstream provider returned a 5xx. Body includes the upstream error verbatim. |
| 503 | unavailable | Upstream model temporarily unavailable. Try a sibling model in the same family. |
Already on Quatarly, OpenRouter, or paying OpenAI direct? Paste your existing key on the dashboard. We'll mirror your usage history, project savings, and let you cut over when you're ready.
Live uptime, p50/p95/p99 latency per model, and incident log at status.slashed.pro. We page on every 500.
The API surface is locked at v1. New models add to the catalogue without changing the contract. See endpoints.