halfoff.devDocs
Get a key
Documentation

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.

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 useSet the base URL toThe key goes in
Anthropic SDK, Claude Codehttps://halfoff.devx-api-key or Authorization: Bearer
OpenAI SDK, Codex CLI, OpenAI-compatible appshttps://halfoff.dev/v1Authorization: Bearer
Google Gen AI SDK, Gemini CLIhttps://halfoff.devx-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/models and 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.