API v1 · Online

Подключите любой AI‑клиент

Claude Code, расширения VS Code и существующие OpenAI- или Anthropic-приложения работают через единый ключ Emerald.

https://emeraldai-ruby.vercel.app
Claude CodeVS CodeTool callingStreaming SSEOpenAI compatibleAnthropic compatible
3 ШАГА

Быстрый старт

01

Создайте ключ

Откройте кабинет и выпустите API-ключ для своего приложения.

02

Выберите формат

OpenAI Chat Completions или Anthropic Messages — оба работают через API v1.

03

Отправьте запрос

Укажите публичный ID модели. Расход вернётся в ответе и заголовках.

БЕЗОПАСНОСТЬ

Авторизация

Не размещайте ключ в браузерном JavaScript и публичных репозиториях. Передавайте его с серверной стороны одним из способов:

HTTP headers
Authorization: Bearer sk-em-••••••••
# Anthropic-совместимый вариант
x-api-key: sk-em-••••••••
anthropic-version: 2023-06-01
Ключ можно скопировать позже. В кабинете он хранится в зашифрованном виде. Если ключ скомпрометирован — отзовите его и создайте новый.
API V1

Endpoints

GET/v1/modelsКаталог доступных моделей
GET/v1/accountБаланс и статистика аккаунта
POST/v1/chat/completionsOpenAI Chat Completions
POST/v1/messagesAnthropic Messages
POST/v1/messages/count_tokensОценка контекста для Claude Code
ГОТОВЫЕ КЛИЕНТЫ

Выберите, что подключаете

Для CLI и агентных расширений поддерживаются tool calls, результаты инструментов и потоковые ответы.

CLAUDE CODE CLI

Claude Code через Emerald

Claude Code умеет работать через LLM gateway. Укажите базовый URL без /v1, ключ Emerald и публичный ID модели.

Поддержано в API:MessagesStreamingtool_use / tool_resultcount_tokens

macOS / Linux / WSL

Terminal · Bash / Zsh
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

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
Модели появятся в /model. Discovery получает каталог через GET /v1/models, а переменные ANTHROPIC_DEFAULT_* привязывают встроенные алиасы opus, sonnet и haiku к профилям Emerald. ANTHROPIC_AUTH_TOKEN отправляется как Bearer‑ключ. Не сохраняйте ключ в репозитории.
VS CODE

Cline и Continue

Сам VS Code не выбирает API‑провайдера. Установите агентное расширение и укажите OpenAI‑совместимый URL Emerald.

C

Cline

Визуальная настройка
  1. Откройте Cline → Settings
  2. API Provider: OpenAI Compatible
  3. Base URL: https://emeraldai-ruby.vercel.app/v1
  4. API Key: sk-em-...
  5. Model ID: claude-sonnet-5

Continue

config.yaml
YAML
name: 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]
OPENAI COMPATIBLE

Roo Code, свои приложения и SDK

Roo Code / другие агенты

Выберите провайдера OpenAI Compatible, URL https://emeraldai-ruby.vercel.app/v1, ключ Emerald и любой ID из каталога.

OpenAI SDK

base_url="https://emeraldai-ruby.vercel.app/v1" и обычный Bearer‑ключ. Поддерживаются streaming и function calling.

Anthropic SDK

base_url="https://emeraldai-ruby.vercel.app" и ключ через api_key. Поддерживаются Messages и tools.

OPENAI SDK

Chat Completions

POST/v1/chat/completions
Python · openai
from 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)
ANTHROPIC SDK

Messages

POST/v1/messages
Python · anthropic
from 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)
БЕЗ SDK

Запрос через cURL

Terminal
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": "Привет!"}]
  }'
SSE

Потоковые ответы

Передайте stream=true. Сервер вернёт события Server-Sent Events и завершит поток маркером, совместимым с выбранным SDK.

OpenAI

Получайте части текста из choices[0].delta.content.

Anthropic

Обрабатывайте события content_block_delta и итоговый message_stop.

Agent tools: в Anthropic-формате используйте блоки tool_use и tool_result; в OpenAI-формате — tools и tool_calls. Emerald преобразует оба формата и сохраняет списание по фактическому usage.
КАТАЛОГ

Модели и коэффициенты

Публичный ID стабилен. Коэффициент показывает, сколько токенов баланса будет списано за один фактический токен запроса и ответа.

claude-fable-5Claude FABLE 5×15
gemini-3-1-proGemini 3.1 Pro×4
gpt-5-6-solGPT 5.6 SOL×8
claude-opus-5Claude Opus 5×7
grok-4GROK 4×5
claude-opus-4-8Claude Opus 4.8×5.5
gpt-5-5GPT 5.5×5
claude-sonnet-5Claude Sonnet 5×6
claude-opus-4-6Claude Opus 4.6×4
deepseek-v4-proDeepSeek V4 Pro×3.5
kimi-k3Kimi K3×7
qwen-3-6Qwen 3.6×5
qwen-3-8-maxQwen 3.8 MAX×8
gemini-3-6-flashGemini 3.6 Flash×6
minimax-m3MiniMax M3×4
gpt-5-4-miniGPT 5.4 mini×3
deepseek-v4-flashDeepSeek V4 Flash×2.5
USAGE

Баланс и списание

GET/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.

HTTPКодЧто делать
400invalid_requestПроверьте JSON, модель и обязательные поля.
401invalid_api_keyПроверьте ключ и заголовок авторизации.
402insufficient_balanceНедостаточно токенов на балансе.
403account_bannedДоступ аккаунта или адреса заблокирован.
429api_key_limit_exceededИсчерпан дневной или месячный лимит этого ключа. Тип лимита указан в x-emerald-limit-type.
503upstream_unavailableПровайдер временно недоступен; повторите с задержкой.