Перейти к содержимому
DrakeDrakeAPI DOCS
Регистрация

DEVELOPER PORTAL

Документация API

Подключите приложения к API DrakeAPI. Выберите совместимый протокол и используйте только модели, доступные вашему ключу.

API BASE URLhttps://drakezakuru.com/v1

Используйте этот адрес как base_url в SDK.

РАЗДЕЛ

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

Адрес API, ключ и первый запрос.

  1. Создайте API-ключ в кабинете. Секрет показывается только при создании. Сохраните его локально в переменной окружения DRAKE_API_KEY.
  2. Получите список моделей. Выполните запрос ниже с тем же активным ключом.
  3. Отправьте chat-запрос. Выберите из списка модель, совместимую с Chat Completions, и подставьте её id вместо MODEL_ID_FROM_V1_MODELS в примере чата.

Не каждая модель из списка поддерживает чат. Проверьте совместимость в каталоге моделей.

Запустите пример в своём терминале с переменной окружения DRAKE_API_KEY. Не вводите секрет на этой странице.

GET /v1/models · cURL
curl "https://drakezakuru.com/v1/models" \
  -H "Authorization: Bearer $DRAKE_API_KEY"
Пример структуры ответа
{
  "object": "list",
  "data": [
    {
      "id": "<available-model-id>",
      "object": "model",
      "owned_by": "<provider>"
    }
  ]
}

Это иллюстрация, а не результат запроса. Список может быть пустым; состав зависит от ключа и его группы доступа.

РАЗДЕЛ

Аутентификация

Bearer, заголовки и формат API-ключа.

Заголовки и ключи

Для OpenAI-совместимых запросов используйте Authorization: Bearer <API_KEY>. Шлюз также принимает ключ в заголовках x-api-key, api-key и x-goog-api-key. Для Messages используйте x-api-key и заголовок версии Anthropic.

Новые ключи создаются с префиксом sk-drake-; сервер хранит хеш, а полный секрет показывается только при создании. Не помещайте его в URL и не отправляйте в клиентскую аналитику.

БезопасностьХраните ключ в переменной окружения или защищённом хранилище. Если он раскрыт, отзовите его и создайте новый в кабинете.

РАЗДЕЛ

Chat Completions

OpenAI-совместимый чат endpoint и формат ответа.

POST /v1/chat/completions принимает JSON-объект с доступным model и массивом messages. В примере также используется max_tokens; допустимый диапазон выходного лимита шлюза — от 1 до 131 072.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/chat/completions" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID_FROM_V1_MODELS","messages":[{"role":"user","content":"Say hello briefly."}],"max_tokens":128}'

# Форма ответа (текст и идентификаторы выдаются моделью):
# {"id":"<completion-id>","object":"chat.completion","model":"<model-id>",
#  "choices":[{"index":0,"message":{"role":"assistant","content":"<generated text>"},"finish_reason":"stop"}],
#  "usage":{"prompt_tokens":<number>,"completion_tokens":<number>,"total_tokens":<number>}}

Ответ сохраняет формат Chat Completions: choices[].message и usage. Сгенерированный текст, идентификаторы и значения токенов динамические.

Для reasoning-моделей задавайте max_tokens с запасом 200–500 токенов: иначе ответ уходит в reasoning_content, а content остаётся пустым при finish_reason length.

РАЗДЕЛ

Responses

Responses API: input, output и JSON-ответ.

POST /v1/responses принимает Responses API-поля, например model, input и max_output_tokens. Используйте идентификатор модели, доступный ключу.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/responses" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID_FROM_V1_MODELS","input":"Say hello briefly.","max_output_tokens":128}'

# Форма ответа Responses API:
# {"id":"<response-id>","object":"response","status":"completed",
#  "model":"<model-id>","output":[{"type":"message","role":"assistant",
#    "content":[{"type":"output_text","text":"<generated text>"}]}]}

Успешный ответ имеет формат Responses API: object: response, состояние и элементы output. Состав содержимого зависит от запроса и модели.

РАЗДЕЛ

Messages (Anthropic)

Anthropic Messages endpoint и заголовки.

POST /v1/messages — Anthropic Messages-совместимый маршрут. Запрос содержит model, max_tokens и массив messages; используйте заголовки x-api-key и anthropic-version.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/messages" \
  -H "x-api-key: $DRAKE_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID_FROM_V1_MODELS","max_tokens":128,"messages":[{"role":"user","content":"Say hello briefly."}]}'

# Форма ответа Anthropic Messages:
# {"id":"<message-id>","type":"message","role":"assistant","model":"<model-id>",
#  "content":[{"type":"text","text":"<generated text>"}],"stop_reason":"end_turn",
#  "usage":{"input_tokens":<number>,"output_tokens":<number>}}

Python-пример использует стандартную библиотеку HTTP: OpenAI SDK-примеры выше относятся к Chat Completions и Responses, а здесь показан отдельный Anthropic-совместимый протокол.

Для приблизительного подсчёта входных токенов код также регистрирует POST /v1/messages/count_tokens с JSON-полем messages. При выключенной функции он отвечает 404; этот вызов не тарифицируется.

РАЗДЕЛ

Модели

Доступные модели через GET /v1/models и каталог цен.

GET /v1/models требует действующий API-ключ и возвращает список моделей, видимый именно этому ключу. Результат может быть ограничен разрешёнными моделями, провайдером и группой доступа. Ответ содержит массив data с полями id, object и owned_by.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/models" -H "Authorization: Bearer $DRAKE_API_KEY"

# Ответ: {"object":"list","data":[{"id":"<available-model-id>",
#  "object":"model","owned_by":"<provider>"}]}.
# Состав каталога зависит от API-ключа и его группы.

Текущий каталог и цены смотрите на странице Модели и цены. Стоимость и доступность не фиксируются в документации и зависят от настроек.

В /v1/models перечислены канонические ID с префиксом провайдера. Короткие имена работают как алиасы, но могут не отображаться в списке. jb-модели — тот же маршрут, а не отдельная модель.

РАЗДЕЛ

JEV: классификация текста

POST /v1/classify — zero-shot разметка по вашим меткам.

POST /v1/classify — zero-shot разметка текста по вашим меткам. Модель одна: jev; поле model можно не передавать.

Поля запроса
ПолеТипОписание
inputsstring[]1…1000 непустых текстов.
labelsstring[]Непустой список меток.
modelstringНеобязательно; по умолчанию jev.
BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/classify" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"jev","inputs":["Win a free iPhone","Your order has shipped"],"labels":["spam","not spam"]}'

# Response:
# {"results":[{"label":"spam","confidence":0.98},{"label":"not spam","confidence":0.91}]}

Ответ содержит results в том же порядке, что и inputs; каждый элемент — label и confidence.

Лимиты: до 1000 текстов за запрос. Пустые inputs или labels → 400; нет ключа → 401. Стоимость — по тарифу classify в настройках сайта; при нулевом тарифе запрос бесплатный.

РАЗДЕЛ

ElevenLabs: TTS и STT

POST /v1/audio/speech и /v1/audio/transcriptions — озвучка и распознавание речи.

POST /v1/audio/speech — озвучка текста (TTS), POST /v1/audio/transcriptions — распознавание речи (STT). Оба маршрута OpenAI-совместимы и работают через мост ElevenLabs.

TTS: /v1/audio/speech

Поля: model, input (до ~5000 символов), voice, response_format (mp3, opus, pcm, wav, ulaw), speed 0.7…1.2 и stream.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/audio/speech" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"elevenlabs/eleven_flash_v2_5","input":"Hello from DrakeAPI","voice":"nova","response_format":"mp3"}' \
  -o speech.mp3

STT: /v1/audio/transcriptions

Multipart-поля: file (обязательно), model, language, response_format (json или verbose_json).

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/audio/transcriptions" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -F "model=elevenlabs/scribe_v1" \
  -F "[email protected]"

Модели и голоса

TTS: eleven_flash_v2_5 (по умолчанию), eleven_turbo_v2_5, eleven_multilingual_v2, eleven_v3, eleven_flash_v2, eleven_turbo_v2. STT: scribe_v1, scribe_v2. OpenAI-алиасы: tts-1, tts-1-hd, gpt-4o-mini-tts, whisper-1.

Голоса: alloy, echo, fable, onyx, nova, shimmer или любой voice_id ElevenLabs.

Лимиты и оплата

TTS принимает до 5000 символов за запрос (eleven_v3 — до 3000). Более длинный текст отклоняется с 400 — делите его на части.

  • speed — только 0.7…1.2; flac/aac требуют Pro-план ElevenLabs.
  • STT: слишком короткий файл может вернуть 400 audio_too_short.

TTS тарифицируется за 1000 символов. Доступность оплаты бонусом зависит от модели и настроек кошелька; актуальную цену смотрите в каталоге.

Очень длинная генерация может упереться в 100-секундный таймаут Cloudflare (524); делите текст на части.

РАЗДЕЛ

Потоковая передача

Потоковые ответы и Server-Sent Events.

Для Chat Completions включите stream: true. При доступности потоковой выдачи шлюз передаёт ответ как text/event-stream; формат событий соответствует выбранному протоколу и может отличаться у Chat Completions, Responses и Messages.

BASE_URL='https://drakezakuru.com/v1'
curl -N "$BASE_URL/chat/completions" \
  -H "Authorization: Bearer $DRAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"MODEL_ID_FROM_V1_MODELS","messages":[{"role":"user","content":"Say hello briefly."}],"stream":true}'

# Поток — SSE. Для Chat Completions фрагменты имеют choices[].delta;
# маркер завершения и дополнительные поля зависят от совместимого upstream.

Поток чата передаёт текстовые части в choices[].delta. Для другого протокола используйте его собственный формат событий; не разбирайте все потоки как один универсальный JSON-объект.

РАЗДЕЛ

Ошибки

Форматы ошибок и HTTP-статусы.

Для шлюзовых OpenAI-совместимых ошибок используется объект error с полями message, type и code (код может быть null). На маршруте Messages тело соответствует Anthropic: type: error и вложенный объект error.

Частые HTTP-статусы, формируемые шлюзом
СтатусПричина
400Некорректный JSON или тело запроса, отсутствующая модель либо недопустимый лимит токенов.
401Ключ отсутствует, не найден, отозван или просрочен.
402Недостаточный баланс либо достигнут бюджет ключа.
403Ограничение доступа, например IP-адрес не разрешён ключу.
404Модель не найдена или дополнительный endpoint выключен.
429Превышен RPM, групповое ограничение или применимая квота.
502 / 503Сбой соединения с upstream или временно недоступный маршрут. Ответы 5xx upstream также могут быть возвращены клиенту.

Проверяйте HTTP-статус и тело ответа. При временной ошибке повторяйте запрос с задержкой; не повторяйте автоматически ошибку авторизации или недостатка средств.

РАЗДЕЛ

Лимиты

RPM, ключевые бюджеты и настраиваемые квоты.

Ограничения задаются политикой ключа, группы и аккаунта; они могут различаться между пользователями.

  • RPM. Для ключа и группы может быть установлен лимит запросов в минуту. Для ключа проверяется скользящее 60-секундное окно.
  • Бюджет ключа. Ограничение расходов в USD и срок действия проверяются до проксирования.
  • Доступ к моделям и IP. Ключ может иметь allowlist моделей или IP; каталог моделей учитывает эти ограничения.
  • Квоты аккаунта. Администратор может включить окна расходов 1 час, 24 часа и 7 дней, а также подписочную квоту. Для бесплатных моделей может применяться настраиваемый дневной лимит.

Лимит расходов задаётся на ключе в кабинете. Если лимит не задан, GET /v1/usage возвращает null в limit_usd и remaining_usd.

GET /v1/usage показывает агрегаты за 5h, 1d и 7d; это периоды статистики ключа, они сами по себе не означают, что соответствующие квоты включены.

ПараллельностьКлюч и аккаунт могут иметь лимит одновременных запросов (0 — без лимита): сверх лимита шлюз возвращает 429. Лимит ключа задаётся при создании, лимит аккаунта — администратором; запрос на увеличение отправляется со страницы «Профиль». Оператор может также ограничивать одновременные запросы на канале провайдера.

РАЗДЕЛ

Биллинг и баланс

Расчёт стоимости, кошелёк и статистика ключа.

Стоимость рассчитывается сервером по фактическому использованию и настроенным тарифам модели; при наличии тарифов учитываются входные и выходные токены и отдельно тарифицируемые cache read/write. Для группы может применяться собственный коэффициент. Цены меняются вместе с настройками — актуальные значения смотрите в каталоге цен.

Запросы с оплатой требуют доступного баланса, бонусных средств или применимого разрешённого режима. Недостаток средств возвращает 402; шлюз резервирует сумму до upstream-запроса и завершает расчёт по возвращённому использованию. Баланс аккаунта смотрите в биллинге.

Расход и лимит API-ключа

GET /v1/usage принимает ключ теми же заголовками, что и inference, и возвращает статус ключа, расходы, бюджет, срок действия, агрегаты за 5 часов / 1 день / 7 дней, сегодняшнюю статистику и дневной ряд за последние семь дней. Он не возвращает баланс аккаунта. Endpoint может быть выключен и ограничивается по частоте.

BASE_URL='https://drakezakuru.com/v1'
curl "$BASE_URL/usage" -H "Authorization: Bearer $DRAKE_API_KEY"

# Ответ начинается с object="usage" и содержит status, spent_usd, limit_usd,
# remaining_usd, expires_at, окна 5h/1d/7d, today и массив daily.

Успешный ответ имеет object: usage; status может быть active, disabled, expired или quota_reached. Вложенные агрегаты соответствуют доступным данным ключа.

↑ ↓ для навигации · Enter для перехода · Esc для закрытия

Оглавление

ПРИЛОЖЕНИЕ