Ethereal на одном экране.
Прокси к семейству Claude от Anthropic с долларовым кошельком. Один API-ключ обслуживает и нативный Anthropic Messages API, и зеркало Chat Completions в форме OpenAI — выбирай тот формат, который уже знает твой инструмент.
Самая частая 404 во всех инструментах ниже — неправильный base URL. Правило:
- Anthropic-клиенты (Claude Code, anthropic-py, @anthropic-ai/sdk) хотят голый хост:
https://api.ethereal.llc. Они сами припишут/v1/messages. - OpenAI-клиенты (Cursor, Cline, openai-py) хотят базу с /v1:
https://api.ethereal.llc/v1. Они сами припишут/chat/completions.
Каждая интеграция на этой странице проверена end-to-end на живом ключе в 2026. Где инструмент закрывает кастомные эндпоинты за платным планом (Cursor) — это явно отмечено. Где у инструмента есть собственный баг (провайдер «OpenAI» без Base URL у Cline, Agent-режим Cursor) — упомянуто рядом.
Быстрый старт
Три минуты от ключа до первого токена.
1. Получи ключ
Открой дашборд и вставь выданный тебе ключ. Дашборд дёрнет /v1/whoami и покажет долларовый баланс, историю запросов и расход по моделям.
Если ключа ещё нет — попроси у того, кто тебя сюда направил. Ключи выглядят как sk-ant-api03-… и используются как bearer-credential для всех эндпоинтов.
2. Выбери формат
Оба формата работают на одном ключе и едят один кошелёк. Используй тот, что твой инструмент уже понимает — конвертация между ними бесплатна.
curl 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-6", "max_tokens": 1024, "messages": [{"role":"user","content":"hello, ethereal"}] }'
curl https://api.ethereal.llc/v1/chat/completions \ -H "Authorization: Bearer $ETHEREAL_KEY" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [{"role":"user","content":"hello, ethereal"}] }'
3. Подключи инструмент
Переходи к нужной интеграции: Claude Code, Cursor, Aider, Continue.dev, Cline / Roo Code, Zed. Или возьми готовый SDK-вызов: Anthropic · OpenAI.
Аутентификация
Один bearer-токен, два названия заголовка — в зависимости от того, какой формат ты вызываешь.
| Формат | Заголовок | Значение |
|---|---|---|
| /v1/messages | x-api-key | sk-ant-api03-… |
| /v1/messages | anthropic-version | 2023-06-01 |
| /v1/chat/completions | Authorization | Bearer sk-ant-api03-… |
| /v1/whoami | — | x-api-key / Authorization: Bearer |
У ключей собственный долларовый баланс и счётчики использования по моделям. Ключ не привязан к одному формату — прокси сводит обе формы заголовка к одной внутренней проверке. /v1/whoami — канонический эндпоинт интроспекции; дашборд просто рендерит его ответ.
Обращайся с ключами как с паролями. Дашборд кладёт вставленный ключ в localStorage для удобства — на общем устройстве сотри его перед уходом. В логи прокси попадает только md5-fingerprint ключа, не сам ключ.
Модели
Четыре id, доступны в обоих форматах. Никаких алиасов кроме перечисленных — любой другой id вернёт HTTP 400.
| id | тир | контекст | примечания |
|---|---|---|---|
| claude-opus-4-7 | flagship | 200K | strongest reasoning, tool use, vision |
| claude-opus-4-7-1m | flagship · 1M | 1,000K | same model, expanded input ceiling, same per-token rate |
| claude-sonnet-4-6 | balanced | 200K | recommended default for most agentic loops |
| claude-haiku-4-5 | fast | 200K | 1/5 the price of Sonnet — good for cheap classifiers and routers |
OpenAI-style алиасы
Эндпоинт Chat Completions принимает небольшой словарь OpenAI-алиасов, чтобы не переучивать существующих клиентов. gpt-4o / gpt-4 идут на claude-sonnet-4-6; gpt-4o-mini / gpt-3.5-turbo — на claude-haiku-4-5. В новом коде используй канонический Claude-id.
Живой список: GET /v1/models — см. справочник /v1/models.
Тарифы и биллинг
USD за миллион токенов. Совпадает с публичным прайсом Anthropic на апрель 2026. Кеш-чтение — 10% от обычной входной ставки.
| id | вход / Mtok | выход / Mtok | множитель токенайзера |
|---|---|---|---|
| claude-opus-4-7 | $5.00 | $25.00 | 1.35× cl100k |
| claude-opus-4-7-1m | $5.00 | $25.00 | 1.35× cl100k |
| claude-sonnet-4-6 | $3.00 | $15.00 | 1.0× cl100k |
| claude-haiku-4-5 | $1.00 | $5.00 | 1.0× cl100k |
Почему 1.35× у Opus 4.7?
Anthropic пишет, что Opus 4.7 идёт с новым токенайзером, который выдаёт примерно на 35% больше токенов, чем старые Claude на том же тексте. Так как часть путей биллинга у нас всё ещё считает в стиле cl100k, мы накладываем 1.35× — чтобы кошелёк был честным. Sonnet 4.6 и Haiku 4.5 остаются на 1.0×: cl100k достаточно близко к их BPE.
Web-search инструмент
Если запрос включает серверный инструмент web_search_20250305 и модель его вызывает — каждый поиск стоит дополнительно $0.01 и тарифицируется отдельно от токенов. Совпадает с прайсом Anthropic ($10 за 1000 поисков).
Чтение кошелька
Каждый успешный ответ списывает с кошелька, привязанного к ключу. Дёрни GET /v1/whoami чтобы увидеть текущий баланс, общий расход, разбивку по моделям и last_used. Дашборд рисует это на одном экране; /v1/stats/{md5} отдаёт ту же payload публично (без ключа) — для Grafana или алертов.
Стриминг
Оба формата поддерживают SSE. Каждая форма повторяет родительский API в точности — никаких ethereal-специфичных фреймов.
Anthropic-формат
Поставь "stream": true в теле и читай ответ как Server-Sent Events. Типы фреймов: message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop + периодические ping. Финальный usage приходит в message_delta. Один в один с документацией Anthropic по стримингу.
OpenAI-формат
Поставь "stream": true и читай SSE-чанки вида data: {"choices":[{"delta":{"content":"…"}}]}. Терминальный фрейм — data: [DONE]. Опционально запроси "stream_options": {"include_usage": true} чтобы получить финальный usage перед [DONE].
Длинные SSE-стримы идут через Sozu с таймаутом 600s front/back. Тяжёлые reasoning-ходы могут молчать десятки секунд между дельтами — это нормально. Если клиент отваливается на тишине — подними его таймаут хотя бы до 120s.
Claude Code
Первоклассный CLI от Anthropic. Из коробки знает ANTHROPIC_BASE_URL — указывай голый хост, SDK сам припишет /v1/messages.
Вариант A — env-переменные
export ANTHROPIC_BASE_URL="https://api.ethereal.llc" export ANTHROPIC_API_KEY="sk-ant-api03-…" export ANTHROPIC_MODEL="claude-sonnet-4-6" claude
setx ANTHROPIC_BASE_URL "https://api.ethereal.llc" setx ANTHROPIC_API_KEY "sk-ant-api03-…" setx ANTHROPIC_MODEL "claude-sonnet-4-6"
[Environment]::SetEnvironmentVariable("ANTHROPIC_BASE_URL", "https://api.ethereal.llc", "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_API_KEY", "sk-ant-api03-…", "User") [Environment]::SetEnvironmentVariable("ANTHROPIC_MODEL", "claude-sonnet-4-6", "User")
Вариант B — settings.json
Кросс-платформенно, переживает рестарт терминала. Путь: ~/.claude/settings.json на macOS/Linux, %USERPROFILE%\.claude\settings.json на Windows.
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.ethereal.llc",
"ANTHROPIC_AUTH_TOKEN": "sk-ant-api03-…",
"ANTHROPIC_MODEL": "claude-sonnet-4-6"
}
}
Прокси принимает обе формы — ANTHROPIC_API_KEY (как x-api-key) и ANTHROPIC_AUTH_TOKEN (как Authorization: Bearer). Бери ту, которую уже задаёт окружение.
У VS Code-варианта Claude Code есть известный баг — он игнорирует ANTHROPIC_BASE_URL из env. Воркэраунд: settings.json.
Cursor
Настройка «Override OpenAI Base URL» в Cursor отправляет Chat-формат на твой эндпоинт. Tab-автодополнение и собственные foundation-модели Cursor она не затрагивает.
На бесплатном плане кастомные эндпоинты не поддерживаются. Override закрыт за Cursor Pro ($20 / мес). Tab-автодополнение всегда работает на проприетарном стеке Cursor — перенаправить нельзя. Agent-режим сейчас шлёт форму OpenAI Responses API, а не Chat Completions, который у нас реализован — Chat и Edit работают, Agent нет.
Настройка
- Открой Cmd+, (или Ctrl+,) → Models.
- Скролл до секции OpenAI API.
- Включи Override OpenAI Base URL, вставь
https://api.ethereal.llc/v1—/v1здесь обязателен. - Вставь ключ в поле OpenAI API Key, нажми Verify.
- В списке моделей отключи встроенные модели Cursor (gpt-5, claude-3.5-sonnet и т.д.) — иначе они попытаются роутиться через твой эндпоинт и упадут на неизвестных id.
- Жми + Add custom model и добавь нужный Claude-id — например
claude-sonnet-4-6. Сохрани. - Выбери эту модель в дропдауне в чат-панели. Должен пойти трафик в твой дашборд.
Известные проблемы
- Sub-agents могут обходить override и бить в инфру Cursor напрямую. На апрель 2026 клиентского фикса нет.
- Если оставишь дефолтные модели Cursor включёнными при кастомном Base URL — редактор может зависнуть на «Planning next step…». Отключай.
- Tab-автодополнение не затрагивается и продолжает есть собственную квоту Cursor.
Aider
Aider ходит через litellm, поэтому работают оба формата. Чаще используют OpenAI-путь; Anthropic-путь полезен когда нужно прокинуть нативные cache-block заголовки.
Путь A — OpenAI-формат (рекомендуется)
export OPENAI_API_BASE="https://api.ethereal.llc/v1" export OPENAI_API_KEY="sk-ant-api03-…" aider --model openai/claude-sonnet-4-6
Путь B — Anthropic-формат
export ANTHROPIC_API_BASE="https://api.ethereal.llc" export ANTHROPIC_API_KEY="sk-ant-api03-…" aider --model anthropic/claude-sonnet-4-6
Если aider жалуется на неизвестный id модели — положи в корень проекта .aider.model.metadata.json с описанием контекста и цены — см. advanced model settings в Aider.
Continue.dev
OSS-плагин для VS Code и JetBrains. ~/.continue/config.yaml принимает и provider: openai, и provider: anthropic с переопределением apiBase. Без ограничений по плану.
name: ethereal version: 1.0.0 schema: v1 models: - name: Sonnet 4.6 (Ethereal · OpenAI) provider: openai apiBase: https://api.ethereal.llc/v1 apiKey: sk-ant-api03-… model: claude-sonnet-4-6 roles: [chat, edit, apply] - name: Opus 4.7 1M (Ethereal · Anthropic) provider: anthropic apiBase: https://api.ethereal.llc apiKey: sk-ant-api03-… model: claude-opus-4-7-1m roles: [chat, edit]
Перезагрузи Continue (Cmd+Shift+P → «Continue: Reload»). Новые модели появятся в дропдауне внизу панели.
Cline · Roo Code
И Cline, и форк Roo Code предоставляют один и тот же провайдер «OpenAI Compatible»; настройка идентичная. Используй именно «OpenAI Compatible», а не «OpenAI» — у второго в 2026 нет поля Base URL (issues #7114 / #7128).
Настройка
- Кликни ⚙ в панели Cline (или Roo Code).
- В API Provider выбери OpenAI Compatible.
-
Заполни:
- Base URL:
https://api.ethereal.llc/v1 - API Key:
sk-ant-api03-… - Model ID:
claude-sonnet-4-6
- Base URL:
- (Опционально) Поставь Context window = 200,000 (или 1,000,000 для Opus 1M) и Max output tokens = 16,384.
- Сохрани и запусти задачу.
Cline-CLI (headless-вариант) ещё не умеет в Base URL для OpenAI-совместимых эндпоинтов — см. issue #9656. Пока используй VS Code-плагин.
Zed
Zed читает конфиг провайдеров из ~/.config/zed/settings.json. Путь openai_compatible позволяет описать свой список моделей; путь anthropic только переопределяет URL.
OpenAI-совместимый (рекомендуется)
{
"language_models": {
"openai_compatible": {
"Ethereal": {
"api_url": "https://api.ethereal.llc/v1",
"available_models": [
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"max_tokens": 200000,
"max_output_tokens": 16384,
"capabilities": { "tools": true, "images": true }
}
]
}
}
}
}
И экспортируй OPENAI_API_KEY=sk-ant-api03-… в шелле — Zed читает ключ из окружения, не из settings.json.
Anthropic-вариант (только URL)
{
"language_models": {
"anthropic": {
"api_url": "https://api.ethereal.llc"
}
}
}
Поставь ANTHROPIC_API_KEY=sk-ant-api03-… в env. Нюанс: этот путь знает только те Anthropic-модели, что Zed поставляет в коробке — имя должно совпадать. Путь openai_compatible выше гибче.
Anthropic SDK
Передавай голый хост в base_url / baseURL — Python и TypeScript SDK сами припишут /v1/messages. Если положить /v1 в базу, получишь /v1/v1/messages и 404.
Python
import anthropic client = anthropic.Anthropic( base_url="https://api.ethereal.llc", api_key="sk-ant-api03-…", ) msg = client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": "hi"}], ) print(msg.content[0].text)
TypeScript
import Anthropic from "@anthropic-ai/sdk"; const client = new Anthropic({ baseURL: "https://api.ethereal.llc", apiKey: process.env.ANTHROPIC_API_KEY!, }); const msg = await client.messages.create({ model: "claude-sonnet-4-6", max_tokens: 1024, messages: [{ role: "user", content: "hi" }], });
Или задай env-переменные и не передавай аргументы в SDK:
export ANTHROPIC_BASE_URL="https://api.ethereal.llc" export ANTHROPIC_API_KEY="sk-ant-api03-…"
OpenAI SDK
Положи /v1 в base_url — OpenAI SDK сам припишет сверху /chat/completions.
Python
from openai import OpenAI client = OpenAI( base_url="https://api.ethereal.llc/v1", api_key="sk-ant-api03-…", ) resp = client.chat.completions.create( model="claude-sonnet-4-6", messages=[{"role": "user", "content": "hi"}], ) print(resp.choices[0].message.content)
TypeScript
import OpenAI from "openai"; const client = new OpenAI({ baseURL: "https://api.ethereal.llc/v1", apiKey: process.env.OPENAI_API_KEY!, }); const r = await client.chat.completions.create({ model: "claude-sonnet-4-6", messages: [{ role: "user", content: "hi" }], });
curl
Удобно для smoke-теста ключа, отладки заголовков и скриптов без SDK.
Anthropic-формат
curl 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-6", "max_tokens": 1024, "messages": [{"role":"user","content":"hi"}] }'
OpenAI-формат
curl https://api.ethereal.llc/v1/chat/completions \ -H "Authorization: Bearer $ETHEREAL_KEY" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [{"role":"user","content":"hi"}] }'
Стриминг (SSE)
curl --no-buffer 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-6", "max_tokens": 256, "stream": true, "messages": [{"role":"user","content":"count to ten"}] }'
Open WebUI · LibreChat · SillyTavern
Open WebUI
- Залогинься админом → Settings → Connections → OpenAI API → Add Connection.
- URL:
https://api.ethereal.llc/v1· API Key:sk-ant-api03-…. - Сохрани. Модели подтянутся из
/v1/models; выбери нужный Claude-id в дропдауне.
LibreChat — librechat.yaml
endpoints: custom: - name: "Ethereal" apiKey: "${ETHEREAL_API_KEY}" baseURL: "https://api.ethereal.llc/v1" models: default: - claude-sonnet-4-6 - claude-opus-4-7 - claude-opus-4-7-1m - claude-haiku-4-5 fetch: false titleConvo: true titleModel: "claude-haiku-4-5" modelDisplayLabel: "Ethereal"
SillyTavern
Иконка вилки → API: Chat Completion → Source: Custom (OpenAI-compatible) → URL: https://api.ethereal.llc/v1 → вставь API Key → Connect. Добавь нужный Claude-id в Available Models.
POST /v1/messages
Anthropic-формат Messages API. Идентичные схемы запроса и ответа с api.anthropic.com/v1/messages.
Заголовки
| имя | обязат. | значение |
|---|---|---|
| x-api-key | yes | — |
| anthropic-version | yes | 2023-06-01 |
| content-type | yes | application/json |
| anthropic-beta | opt | — |
Тело
| поле | тип | примечания |
|---|---|---|
| model | string | required |
| messages | Message[] | required |
| max_tokens | int | required |
| system | string · Block[] | optional |
| tools | Tool[] | optional |
| tool_choice | object | optional |
| temperature | 0..1 | optional, default 1 |
| stream | bool | optional — emit SSE |
Ответ — стандартный объект Message: id, type: "message", role: "assistant", content[] (массив блоков text / tool_use / thinking), stop_reason, usage.
POST /v1/chat/completions
Зеркало Chat Completions в форме OpenAI. Те же модели сверху; форма запроса и ответа совпадает с api.openai.com/v1/chat/completions.
Тело — поддерживаемое подмножество
| поле | тип | примечания |
|---|---|---|
| model | string | required |
| messages | Message[] | required |
| max_tokens | int | optional |
| temperature | 0..2 | optional |
| stream | bool | optional — SSE chunks with data: [DONE] |
| stream_options | object | optional — {include_usage: true} |
| tools | Tool[] | optional |
| tool_choice | object · string | optional |
| response_format | object | optional |
Vision: передавай content-parts типа image_url (data: и https URL — оба принимаются). Прокси декодирует и отправит как Anthropic image-блоки.
POST /v1/messages/count_tokens
Оценить стоимость входных токенов запроса до отправки. Зеркалит одноимённый эндпоинт Anthropic.
Те же поля тела что у /v1/messages, форма ответа: {"input_tokens": <int>}. Полезно для бюджетного контроля на клиенте. Считаются те самые cl100k×множитель цифры, которые потом спишутся с кошелька.
GET /v1/models
Публичный список доступных моделей. Аутентификация не нужна.
{
"data": [
{"id": "claude-opus-4-7", "display_name": "Claude Opus 4.7", "type": "model"},
{"id": "claude-opus-4-7-1m", "display_name": "Claude Opus 4.7 (1M context)", "type": "model"},
{"id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6", "type": "model"},
{"id": "claude-haiku-4-5", "display_name": "Claude Haiku 4.5", "type": "model"}
],
"first_id": "claude-opus-4-7",
"last_id": "claude-haiku-4-5",
"has_more": false
}
GET /v1/whoami
Интроспекция кошелька авторизованного bearer. Требует ключ; именно эту форму рендерит дашборд.
Форма ответа
{
"token": "sk-ant-api03-…",
"name": "my-laptop",
"balance_usd": 12.4567,
"total_spent_usd": 3.1198,
"total_input_tokens": 412903,
"total_output_tokens": 29110,
"total_search_requests": 7,
"created_at": 1738200000,
"last_used_at": 1745650000,
"per_model": {
"claude-sonnet-4-6": { "input_tokens": 390210, "output_tokens": 22011, "spent_usd": 2.41, "search_requests": 5 },
"claude-haiku-4-5": { "input_tokens": 22693, "output_tokens": 7099, "spent_usd": 0.07, "search_requests": 2 }
}
}
GET /v1/stats/{md5}
Публичный (без ключа) поиск статистики кошелька по md5-fingerprint. Поля те же что у /v1/whoami, но без поля token.
Fingerprint считается как md5_hex(lowercase(your_token)) — 32 lowercase hex-символа. Удобно отдать в дашборд или алертинг (Grafana scrape, etc.) без раскрытия самого ключа.
FP=$(printf "%s" "$ETHEREAL_KEY" | md5sum | awk '{print $1}') curl https://api.ethereal.llc/v1/stats/$FP
Reseller API
Программный выпуск prepaid-ключей с баланса личного кабинета. Подходит для перепродажи на маркетплейсах, раздачи внутри команды или любых сценариев, где нужны одноразовые API-ключи с фиксированным балансом.
Механика: вы выпускаете подписанный PASETO v4.local-токен в личном кабинете (POST /api/me/issue-token, cookie-auth). Дальше этот токен используется как Authorization: Bearer на POST /api/keys/issue — каждый вызов атомарно списывает X $ с баланса кабинета и возвращает новый sk-ant-03-… с этим же балансом.
1. Выпуск PASETO
Из личного кабинета (“Reseller API” секция) — выбираете TTL (1ч – 90д) и нажимаете «Выпустить». Токен показывается однократно — сохраните сразу.
Или программно (cookie-сессия в браузере):
curl -X POST https://ethereal.llc/api/me/issue-token -H "content-type: application/json" --cookie "ethereal_session=..." -d '{"ttl_seconds": 86400}'
# → {"token":"v4.local.XXXXX...","expires_at":1777580000,"scope":"issue_keys"}
2. Выпуск препейд-ключа
curl -X POST https://ethereal.llc/api/keys/issue -H "Authorization: Bearer v4.local.XXXXX..." -H "content-type: application/json" -d '{"balance_usd": 50, "name": "funpay-order-12345"}'
# → {
# "api_key": "sk-ant-03-...",
# "balance_usd": 50,
# "name": "funpay-order-12345",
# "cabinet_balance_left": 1280.50,
# "issued_to_user_id": "u_abc...",
# "paseto_exp": 1777580000
# }
Выданный api_key работает как обычный ключ из личного кабинета: x-api-key или Authorization: Bearer на любом эндпоинте (/v1/messages, /v1/chat/completions, /v1/messages/count_tokens). Когда баланс исчерпан — возвращает 400 invalid_request_error (Anthropic-совместимая форма). Купивший ключ может проверить остаток на /dashboard/ без входа.
3. Ограничения
- TTL: 60 с – 90 дней (сверх клампится).
- balance_usd: > 0 и ≤ 100 000 за один вызов.
- scope: фиксирован как
issue_keys; других scope-ов пока нет. - Отзыв: выпущенный PASETO живёт до
exp; явного отзыва одного токена нет. Для полного сброса всех выпущенных — пишите на etherealproduction@proton.me. - Ошибки: 401 — протухший/поддельный PASETO; 400 — недостаточно баланса кабинета («insufficient cabinet balance»).
4. Безопасность
PASETO-токен равносилен балансу вашего кабинета. Держите в серверных процессах / в выделенных secret-storage. Никогда не коммитить, не совать в браузер или логи. При подозрении на утечку — выпустите новый и напишите на etherealproduction@proton.me для ротации серверного PASETO_SECRET (это инвалидирует все выданные ранее токены).
Справочник ошибок
Все ошибки — JSON. Edge-ошибки Sozu (4xx/5xx без прокси-фрейма) приходят в той же обёртке, чтобы клиенту не нужен был отдельный код-путь.
| статус | тип | причина |
|---|---|---|
| 401 | authentication_error | missing or invalid bearer |
| 402 | insufficient_credits | wallet balance hit zero |
| 404 | not_found | typically: wrong base URL |
| 413 | payload_too_large | request body exceeded the model's context window |
| 429 | rate_limit_exceeded | per-key RPM limit reached |
| 502 | upstream_error | upstream returned 5xx |
| 504 | upstream_timeout | SSE stream stalled past 600s |
Стандартная обёртка:
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "authentication required"
}
}
Лимиты
Per-key, скользящее окно. Дефолты намеренно щедрые для интерактивных coding-петель.
- RPM — 600 запросов / мин / ключ на Sonnet и Haiku, 200 на Opus.
- Конкурентность — без жёсткого потолка; edge держит порядка ~10K одновременных TLS-сессий по всем ключам.
- 1-минутная квота токенов — 1 миллион входных / мин / ключ, сглажено leaky-bucket — короткие всплески не триггерят.
На rejection — HTTP 429 с заголовком retry-after в секундах.
Changelog
От свежего к старому. Только behaviour-relevant изменения — внутренние рефакторы, инфра и правки промптов в git history.
2026-04 · Cache discount + always-on web_search
- Cache-read tokens now billed at 10% of base input rate when the upstream reports them.
- The
web_search_20250305server-tool is enabled by default on every request. - CJK retry: requests with mostly-Chinese / Japanese inputs that 4xx upstream now retry once.
2026-03 · Vision graceful fallback
- If the vision-capable upstream is down, image content is described to a text-only fallback model rather than 502'd.
2026-02 · Claude Opus 4.7
- Added
claude-opus-4-7andclaude-opus-4-7-1m. - OpenAI-compat alias mapping updated.
2025-12 · Claude Sonnet 4.6
- Replaced Sonnet 3.7 as the recommended default.