ethereal speaks the same wire format as api.anthropic.com —
same headers, same SSE, same SDKs. Switch ANTHROPIC_BASE_URL and your existing
Claude Code, Cursor, or Cline keeps working. Sonnet 4.5, Opus 4.7, prompt caching, batches and tool use included.
ethereal говорит ровно тем же wire-форматом, что и api.anthropic.com —
те же заголовки, тот же SSE, те же SDK. Поменяй ANTHROPIC_BASE_URL — и твой
Claude Code, Cursor или Cline продолжат работать как ни в чём не бывало. Sonnet 4.5, Opus 4.7, prompt caching, batches и tool use из коробки.
Every endpoint, every header, every SSE event in the Anthropic protocol — verbatim.
Plus the OpenAI Chat Completions shape on /v1/chat/completions for tools that don't speak Anthropic natively.
Каждый эндпойнт, каждый заголовок, каждое SSE-событие протокола Anthropic — байт в байт.
Плюс форма OpenAI Chat Completions на /v1/chat/completions для клиентов, которые не говорят по-Anthropic.
Identical request/response shape to Anthropic. Your existing SDK, retries, and error-handling code keep working unchanged.
Идентичная форма запросов и ответов. Твой SDK, ретраи и обработка ошибок работают без изменений.
/v1/messages for Claude SDKs. /v1/chat/completions for Codex CLI, LiteLLM, Cursor, Zed and friends.
/v1/messages для Claude-SDK. /v1/chat/completions для Codex CLI, LiteLLM, Cursor, Zed и компании.
Server-sent events with message_start, content_block_delta, tool_use deltas — byte-for-byte the upstream format.
Server-sent events с message_start, content_block_delta, tool_use дельтами — байт в байт upstream-формат.
Set cache_control on a message and it's cached transparently. Cache reads bill at a fraction of input tokens.
Поставь cache_control на сообщение — оно кешируется прозрачно. Чтения из кеша тарифицируются как доля от input.
Submit hundreds of requests, poll for results. Same shape as the Anthropic Batches API. Cheap throughput for offline jobs.
Отправь сотни запросов, опрашивай результаты. Та же форма, что Anthropic Batches API. Дешёвый throughput для офлайн-задач.
Pass image blocks (base64 or URL), get tool_use blocks back. Native function-calling round-trips work without translation layers.
Передавай image-блоки (base64 или URL), получай tool_use блоки. Function-calling round-trips работают без слоёв перевода.
Mint sk-ant-api03-... keys with token budgets and per-minute caps. Revoke individually. Mass-mint up to 500 in one call.
Создавай ключи sk-ant-api03-... с бюджетом по токенам и rpm-кепами. Отзывай по одному. Mass-mint до 500 за вызов.
Live dashboard with request volume, error rate, token spend per key, account-pool health. No third-party SaaS.
Live-дашборд: объём запросов, error rate, расход токенов по ключу, здоровье пула. Без сторонних SaaS.
Point ANTHROPIC_BASE_URL at us; point it back. Nothing in your code changes — zero friction either way.
Поменяй ANTHROPIC_BASE_URL на нас; поменяй обратно. В коде ничего не меняется — нулевое трение в обе стороны.
Pass any of these as model. Versioned ids resolve directly; aliases like
claude-3-5-sonnet-latest route to the most recent compatible release.
Передавай любую как model. Versioned id резолвится напрямую;
алиасы вроде claude-3-5-sonnet-latest ведут на самый свежий совместимый релиз.
| ModelМодель | ContextКонтекст | Max outputМакс. output | Best forПодходит для | StatusСтатус |
|---|---|---|---|---|
| claude-opus-4-7 opus-4 | 200K | 32K | hardest reasoning, long horizonsсложный reasoning, длинные горизонты | live |
| claude-sonnet-4-5 sonnet-4 | 200K | 64K | everyday agent / coding defaultежедневный агент / coding по умолчанию | live |
| claude-3-7-sonnet-latest | 200K | 8K | 3.7-series, tool use3.7-серия, tool use | live |
| claude-3-5-sonnet-latest | 200K | 8K | cheaper bulk inferenceдешевле для bulk-инференса | live |
| claude-3-5-haiku-latest | 200K | 8K | low-latency / classifiersнизкая латентность / классификаторы | live |
→ call GET /v1/models for the live, machine-readable list.
→ вызови GET /v1/models для live machine-readable списка.
Anything that takes an Anthropic or OpenAI base URL plugs in directly. Tool-use, streaming, vision and prompt-caching all pass through.
Всё, что принимает Anthropic или OpenAI base URL, втыкается напрямую. Tool-use, streaming, vision и prompt-caching пробрасываются насквозь.
Paste a prompt — see token counts and the per-call cost across the Claude family. Estimation is heuristic (Anthropic's exact tokenizer is server-side); typical accuracy is ±5–10% for English, ±15% for mixed scripts.
Вставь промпт — увидишь токены и цену вызова по всем моделям Claude. Оценка эвристическая (точный токенайзер Anthropic — на стороне сервера); типичная точность ±5–10% для английского, ±15% для смешанных алфавитов.
Mint a key in the dashboard, drop the base URL into your client, and send a request. Nothing else moves.
Создай ключ в дашборде, подставь base URL в клиента, отправь запрос. Больше ничего не нужно.
curl · /v1/messagescurl https://api.ethereal.llc/v1/messages \ -H "x-api-key: $ETHEREAL_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 256, "messages": [ {"role": "user", "content": "Explain SSE in two sentences."} ] }'
python · anthropic SDKfrom anthropic import Anthropic client = Anthropic( base_url="https://api.ethereal.llc", api_key=os.environ["ETHEREAL_KEY"], ) msg = client.messages.create( model="claude-sonnet-4-5", max_tokens=256, messages=[{"role": "user", "content": "hi"}], ) print(msg.content[0].text)
Tiers mirror Anthropic's naming so you know exactly what you're getting. Need raw pay-as-you-go? Mint a key with a token budget and forget about plans.
Тиры повторяют названия Anthropic — чтобы было сразу понятно, что покупаешь. Нужен чистый pay-as-you-go? Создай ключ с бюджетом по токенам и забудь о тарифах.
Daily-driver agent budget. Same usage envelope as Claude Pro on the consumer side.
Бюджет на каждый день. Тот же envelope, что у Claude Pro на consumer-стороне.
For real coding agent loops: parallel sessions, long contexts, mid-day reruns.
Для серьёзных циклов агента: параллельные сессии, длинные контексты, реран посреди дня.
max_tokens ceilingmax_tokensHeaviest tier. Multiple agents, batch jobs and reasoning-heavy Opus work.
Самый тяжёлый тир. Несколько агентов, batch-задачи, тяжёлый reasoning на Opus.
→ No plan? Mint a raw key with N million tokens in admin. Plans are quality-of-service envelopes; the underlying API is the same for everyone. → Без тарифа? Создай raw-ключ с N миллионами токенов в админке. Тарифы — это envelope для качества обслуживания; сам API одинаковый для всех.
Yes — every endpoint, every header, every SSE event the official server emits, we emit too. The proxy validates request shapes against the upstream schema before forwarding, so divergence shows up as a 400 here, not a silent corruption upstream.
The OpenAI Chat Completions adapter on /v1/chat/completions handles the legacy clients (Codex CLI, Zed config, LiteLLM) so you don't have to rewrite anything to use Claude through them.
About ~80ms p50 on the gateway hop, mostly TLS + auth + a token-budget read. Streaming is forwarded chunk-by-chunk — first-byte time is dominated by upstream, not us.
Two paths: subscribe to a tier (Pro / Max 5× / Max 20×) for a fixed monthly envelope, or mint a key with a hard token budget and pay per million tokens. Both share the same underlying API; the only difference is who bears the metering burden.
Yes. Per-key budgets and per-minute rate limits are first-class. The admin panel mass-mints keys with arbitrary budgets in one call — useful for issuing scoped credentials to a team or letting users self-serve under your master pool.
Yes — set cache_control: {"type":"ephemeral"} on a content block exactly like upstream. Cache reads are billed at the upstream cache-read rate (~10% of input price). Cache lifetime mirrors upstream; we don't re-implement the storage layer, we forward the directive.
No. We don't store request/response bodies past the request lifetime, and we don't train on traffic. Headers, model id, token counts and timestamps go to the metering store — nothing else.
Switching is one line. Set ANTHROPIC_BASE_URL=https://api.ethereal.llc in your shell, the SDK or your client config. Switch back any time — we don't store anything that locks you in.
Да — каждый эндпойнт, каждый заголовок, каждое SSE-событие, что эмитит официальный сервер, эмитим и мы. Прокси валидирует форму запросов по upstream-схеме перед форвардом — расхождение всплывает как 400 здесь, а не как тихая порча на upstream.
OpenAI Chat Completions адаптер на /v1/chat/completions обслуживает legacy-клиентов (Codex CLI, Zed config, LiteLLM), так что переписывать ничего не нужно.
~80мс p50 на gateway-хопе, в основном TLS + auth + чтение бюджета токенов. Streaming форвардится чанк за чанком — first-byte time определяется upstream'ом, не нами.
Два пути: подписка на тариф (Pro / Max 5× / Max 20×) с фиксированным месячным envelope, либо ключ с жёстким бюджетом по токенам и плата за миллион токенов. API одинаковый; разница только в том, кто несёт бремя metering'а.
Да. Бюджеты на ключ и rpm-лимиты — first-class. Админка mass-mint'ит ключи с произвольными бюджетами в один вызов — удобно для scoped-креденшелов команде или self-serve под твоим master-пулом.
Да — поставь cache_control: {"type":"ephemeral"} на content-блок ровно как в upstream. Чтения из кеша тарифицируются по upstream cache-read ставке (~10% от input). Lifetime кеша зеркалирует upstream; мы не переделываем storage-слой, мы пробрасываем директиву.
Нет. Тела запросов и ответов не хранятся за пределами жизни запроса, на трафике мы не учим. В metering уходят заголовки, model id, счётчики токенов и таймстемпы — больше ничего.
Переключение — одна строка. Поставь ANTHROPIC_BASE_URL=https://api.ethereal.llc в шелле, SDK или конфиге клиента. Переключайся обратно в любой момент — мы не храним ничего, что бы тебя залочило.