Half Off Dev docs
Call Claude, GPT and Gemini through their native APIs at half the official list price. Swap the base URL and key; your code stays the same.
Half Off Dev gives you the frontier models from Anthropic, OpenAI and Google for 50% of what their official price lists charge, on every model. The catch is that there isn't one: you keep your SDK, your request bodies and your favourite CLI, and change two values, the base URL (https://halfoff.dev) and the API key. Billing is per token from a prepaid balance.
From sign-up to a first answer in about a minute.
Claude Code, Codex CLI, Gemini CLI, desktop chat apps and anything that takes an OpenAI endpoint.
Try it with the SDK you have#
Here is a Claude request through the Anthropic SDK. Compared with calling Anthropic directly, only the base URL and the key differ.
curl https://halfoff.dev/v1/messages \
-H "x-api-key: $HALFOFF_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5.5",
"max_tokens": 512,
"messages": [{"role": "user", "content": "Give me three names for a code review bot."}]
}'The same key also calls GPT models through the OpenAI SDK and Gemini models through the Google Gen AI SDK.
Where to point each SDK#
| You use | Set the base URL to | The key goes in |
|---|---|---|
| Anthropic SDK, Claude Code | https://halfoff.dev | x-api-key or Authorization: Bearer |
| OpenAI SDK, Codex CLI, OpenAI-compatible apps | https://halfoff.dev/v1 | Authorization: Bearer |
| Google Gen AI SDK, Gemini CLI | https://halfoff.dev | x-goog-api-key |
Why it's a drop-in swap#
- Half the list price, every model. Each token costs 50% of the official rate for that model. Live prices are in
GET /v1/modelsand on Pricing. - No format translation. A Messages request is answered as a Messages request, a Chat Completions request as Chat Completions, a Gemini request as Gemini. Streaming, function calling, extended thinking and prompt caching behave as the vendor documents them. See How the gateway works.
- Three channel groups. Claude · Value, GPT · Value and Gemini · Value run on pooled capacity. Short bursts wait a few seconds in a queue rather than erroring, and a failed call is retried on another channel before it reaches you. See Channel groups and Rate limits.
- Caches stay warm. A conversation sticks to the channel holding its prompt cache, so repeated context keeps its cached-input price. See Prompt caching.
- Prepaid, no invoices. You top up a balance with PayPal and requests draw from it. At zero, requests stop; nothing is billed after the fact. See Billing.
- A log line per call. Tokens, charge, latency and status for each request land in your dashboard logs. See Usage.
Feed these docs to your assistant
Append .md to any docs URL to get the page as plain Markdown, or hand your coding assistant /llms.txt for the whole index.
Need a hand?#
For a question about a specific call, a charge or your account, open a ticket from Support and paste the x-halfoff-request-id response header if you have it. Live service health is on the status page.