Подключите любой AI‑клиент
Claude Code, расширения VS Code и существующие OpenAI- или Anthropic-приложения работают через единый ключ Emerald.
https://emeraldai-ruby.vercel.app
Быстрый старт
Создайте ключ
Откройте кабинет и выпустите API-ключ для своего приложения.
Выберите формат
OpenAI Chat Completions или Anthropic Messages — оба работают через API v1.
Отправьте запрос
Укажите публичный ID модели. Расход вернётся в ответе и заголовках.
Авторизация
Не размещайте ключ в браузерном JavaScript и публичных репозиториях. Передавайте его с серверной стороны одним из способов:
Authorization: Bearer sk-em-•••••••• # Anthropic-совместимый вариант x-api-key: sk-em-•••••••• anthropic-version: 2023-06-01
Endpoints
/v1/modelsКаталог доступных моделей/v1/accountБаланс и статистика аккаунта/v1/chat/completionsOpenAI Chat Completions/v1/messagesAnthropic Messages/v1/messages/count_tokensОценка контекста для Claude CodeВыберите, что подключаете
Для CLI и агентных расширений поддерживаются tool calls, результаты инструментов и потоковые ответы.
Claude Code через Emerald
Claude Code умеет работать через LLM gateway. Укажите базовый URL без /v1, ключ Emerald и публичный ID модели.
macOS / Linux / WSL
npm install -g @anthropic-ai/claude-code export ANTHROPIC_BASE_URL="https://emeraldai-ruby.vercel.app" export ANTHROPIC_AUTH_TOKEN="sk-em-..." export ANTHROPIC_MODEL="claude-sonnet-5" export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5" export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-sonnet-5" export ANTHROPIC_DEFAULT_HAIKU_MODEL="deepseek-v4-flash" export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 claude --model claude-sonnet-5
Windows PowerShell
$env:ANTHROPIC_BASE_URL = "https://emeraldai-ruby.vercel.app" $env:ANTHROPIC_AUTH_TOKEN = "sk-em-..." $env:ANTHROPIC_MODEL = "claude-sonnet-5" $env:ANTHROPIC_DEFAULT_OPUS_MODEL = "claude-opus-5" $env:ANTHROPIC_DEFAULT_SONNET_MODEL = "claude-sonnet-5" $env:ANTHROPIC_DEFAULT_HAIKU_MODEL = "deepseek-v4-flash" $env:CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY = "1" claude --model claude-sonnet-5
GET /v1/models, а переменные ANTHROPIC_DEFAULT_* привязывают встроенные алиасы opus, sonnet и haiku к профилям Emerald. ANTHROPIC_AUTH_TOKEN отправляется как Bearer‑ключ. Не сохраняйте ключ в репозитории.Cline и Continue
Сам VS Code не выбирает API‑провайдера. Установите агентное расширение и укажите OpenAI‑совместимый URL Emerald.
Cline
Визуальная настройка- Откройте Cline → Settings
- API Provider: OpenAI Compatible
- Base URL:
https://emeraldai-ruby.vercel.app/v1 - API Key:
sk-em-... - Model ID:
claude-sonnet-5
Continue
config.yamlname: Emerald AI
version: 0.0.1
schema: v1
models:
- name: Emerald Sonnet
provider: openai
model: claude-sonnet-5
apiBase: https://emeraldai-ruby.vercel.app/v1
apiKey: sk-em-...
roles: [chat, edit, apply]
Roo Code, свои приложения и SDK
Выберите провайдера OpenAI Compatible, URL https://emeraldai-ruby.vercel.app/v1, ключ Emerald и любой ID из каталога.
base_url="https://emeraldai-ruby.vercel.app/v1" и обычный Bearer‑ключ. Поддерживаются streaming и function calling.
base_url="https://emeraldai-ruby.vercel.app" и ключ через api_key. Поддерживаются Messages и tools.
Chat Completions
/v1/chat/completionsfrom openai import OpenAI
client = OpenAI(
api_key="sk-em-...",
base_url="https://emeraldai-ruby.vercel.app/v1",
)
response = client.chat.completions.create(
model="claude-fable-5",
messages=[{"role": "user", "content": "Привет!"}],
)
print(response.choices[0].message.content)
print(response.usage.total_tokens)
Messages
/v1/messagesfrom anthropic import Anthropic
client = Anthropic(
api_key="sk-em-...",
base_url="https://emeraldai-ruby.vercel.app",
)
message = client.messages.create(
model="gemini-3-1-pro",
max_tokens=1024,
messages=[{"role": "user", "content": "Привет!"}],
)
print(message.content[0].text)
print(message.usage.output_tokens)
Запрос через cURL
curl https://emeraldai-ruby.vercel.app/v1/chat/completions \
-H "Authorization: Bearer sk-em-..." \
-H "Content-Type: application/json" \
-d '{
"model": "qwen-3-6",
"messages": [{"role": "user", "content": "Привет!"}]
}'
Потоковые ответы
Передайте stream=true. Сервер вернёт события Server-Sent Events и завершит поток маркером, совместимым с выбранным SDK.
OpenAI
Получайте части текста из choices[0].delta.content.
Anthropic
Обрабатывайте события content_block_delta и итоговый message_stop.
tool_use и tool_result; в OpenAI-формате — tools и tool_calls. Emerald преобразует оба формата и сохраняет списание по фактическому usage.Модели и коэффициенты
Публичный ID стабилен. Коэффициент показывает, сколько токенов баланса будет списано за один фактический токен запроса и ответа.
claude-fable-5Claude FABLE 5×15gemini-3-1-proGemini 3.1 Pro×4gpt-5-6-solGPT 5.6 SOL×8claude-opus-5Claude Opus 5×7grok-4GROK 4×5claude-opus-4-8Claude Opus 4.8×5.5gpt-5-5GPT 5.5×5claude-sonnet-5Claude Sonnet 5×6claude-opus-4-6Claude Opus 4.6×4deepseek-v4-proDeepSeek V4 Pro×3.5kimi-k3Kimi K3×7qwen-3-6Qwen 3.6×5qwen-3-8-maxQwen 3.8 MAX×8gemini-3-6-flashGemini 3.6 Flash×6minimax-m3MiniMax M3×4gpt-5-4-miniGPT 5.4 mini×3deepseek-v4-flashDeepSeek V4 Flash×2.5Баланс и списание
/v1/accountФормула: ceil((input_tokens + output_tokens) × multiplier).
billing, стандартном объекте usage и заголовке x-emerald-charged-tokens. В api_key_limits ответа /v1/account доступны дневной лимит запросов, месячный лимит токенов и текущий расход выбранного ключа. Лимиты настраиваются отдельно для каждого ключа в кабинете; значение 0 означает без ограничений.Коды ошибок
Ответ всегда содержит JSON-объект error. Машиночитаемый код также доступен в заголовке x-emerald-error-code.
invalid_requestПроверьте JSON, модель и обязательные поля.invalid_api_keyПроверьте ключ и заголовок авторизации.insufficient_balanceНедостаточно токенов на балансе.account_bannedДоступ аккаунта или адреса заблокирован.api_key_limit_exceededИсчерпан дневной или месячный лимит этого ключа. Тип лимита указан в x-emerald-limit-type.upstream_unavailableПровайдер временно недоступен; повторите с задержкой.