Перейти к содержимому
Обзор

Обзор

Карта API: все эндпоинты, как выглядят запрос и ошибка, как оплачиваются вызовы и что нужно знать, если вы пришли из SDK OpenAI или Anthropic.

Эндпоинты

Все эндпоинты находятся под одним базовым URL и обслуживаются по HTTPS.

Базовый URL
https://api.shannon-ai.com
Эндпоинт Формат Для чего
POST /v1/chat/completions OpenAI Chat Completions Отправьте разговор, получите следующий ответ. Со стримингом или без.
POST /v1/messages Anthropic Messages То же самое, в формах запроса и ответа SDK Anthropic.
POST /v1/responses OpenAI Responses То же самое, в формах Responses. Эндпоинт не хранит состояние: отправляйте разговор с каждым запросом.
GET /v1/models Список моделей OpenAI Список моделей с контекстным окном, ценами и возможностями. Ключ не нужен.
POST /v1/tokenize Shannon API Подсчитайте токены текста или чат-запроса для размещенной модели с открытыми весами. Бесплатно.
POST /v1/messages/count_tokens Подсчет токенов Anthropic Подсчитайте входные токены запроса Messages для размещенной модели с открытыми весами. Бесплатно.

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

Основы запросов

Заголовок Описание
Authorization: Bearer <key> Ваш API-ключ. Обязателен на каждом эндпоинте, кроме GET /v1/models, если вы не отправляете x-api-key.
x-api-key: <key> Тот же ключ в заголовке, который отправляют SDK Anthropic. Читается на каждом эндпоинте.
Content-Type: application/json Обязателен на каждом POST. Без него ответ — 415.
x-request-id: <your id> Необязателен. Ваш собственный id запроса; он возвращается в заголовке ответа x-request-id. Без него API создает id из 12 шестнадцатеричных символов.
  • Тело каждого POST — один JSON-объект, до 32 MiB.
  • Поле, которое API не знает, не вызывает ошибки и ни на что не влияет. Запрос, написанный для другого провайдера, не падает из-за лишнего поля.
  • На известное поле с неверным типом JSON или на отсутствие обязательного поля отвечают 422. На тело, не являющееся корректным JSON, отвечают 400.
  • model — один из id на странице «Модели и цены». Регистр не имеет значения.

Ответ — это JSON или поток server-sent events, если в запросе stream равен true. Каждый эндпоинт отвечает в своем формате. В каждом ответе есть заголовок x-request-id.

Какие проверки проходит запрос

Запрос проверяется в строгом порядке до запуска модели. Отвечает первая непройденная проверка, поэтому 401 пока ничего не говорит о теле.

Структура ошибки

Ошибка — это JSON-объект с error, который содержит type и message. /v1/messages оборачивает его так, как ожидают SDK Anthropic; все остальные пути используют форму OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Читайте type и message. code и param присутствуют только в некоторых ошибках: считайте их необязательными. param всегда равен null.
  • После начала потока статус уже 200. Тогда сбой приходит как фрейм ошибки внутри потока.
  • Каждый ответ с ошибкой содержит заголовок x-request-id.
Статус Тип Когда
400 invalid_request_error Тело запроса не является корректным JSON, id модели неизвестен или модель не принимает отправленный вами вид ввода.
401 authentication_error Ключ отсутствует или недействителен.
404 not_found_error Такого пути нет.
405 api_error Путь существует, но метод неверный.
413 invalid_request_error Тело запроса больше 32 MiB.
415 invalid_request_error Content-Type не равен application/json.
422 invalid_request_error У поля неверный тип JSON или отсутствует обязательное поле.
429 rate_limit_error Баланса не хватает на запрос, за минуту пришло больше 120 запросов, вызовы Shannon Coder в окне исчерпаны или модель занята. Сообщение указывает, что именно.
5xx api_error Статус 500, 502, 503 или 504: запрос был корректным, но на него не удалось ответить. Отправьте его снова. У 500 может быть тип server_error.

Обработка ошибок

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

  • На аккаунт приходится один баланс, и чат с API делят его: сначала лимит плана на сегодня, затем купленные кредиты. Собственной квоты у API нет.
  • Запрос резервирует свой бюджет вывода (max_tokens, по умолчанию 4,096), а затем с него списываются токены, которые он реально использовал, по цене модели.
  • Каждый ответ сообщает число токенов в usage. Страница Keys & usage показывает баланс и стоимость каждого запроса.
  • Все запросы обслуживаются одинаково. Единственное ограничение частоты запросов — защита от флуда: 120 запросов в минуту на аккаунт. Параллельно отправленные запросы ждут в очереди.

Лимиты и баланс Модели и цены Keys & usage

Поля, зависящие от модели

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

Поле Описание Применяется на
system Инструкции для модели: сообщение system в Chat Completions, system в Messages, instructions в Responses. Размещенные модели с открытыми весами, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Температура сэмплирования. Размещенные модели с открытыми весами, shannon-1.6-*, shannon-coder-1
top_p Ядерное сэмплирование (nucleus sampling). Размещенные модели с открытыми весами
seed Фиксированный seed для сэмплирования. Размещенные модели с открытыми весами
stop До 4 стоп-последовательностей. Размещенные модели с открытыми весами
reasoning_effort Сколько модель рассуждает перед ответом. reasoning.effort в Responses, thinking в Messages. Размещенные модели с открытыми весами
web_search true позволяет модели искать в интернете для этого запроса. Поле этого API, в Chat Completions и Messages. Модели Shannon, кроме shannon-coder-1
max_tokens Бюджет вывода. На любой модели он задает сумму, резервируемую на вашем балансе. Как предел длины ответа: размещенные модели с открытыми весами, shannon-1.6-*, shannon-coder-1

Chat Completions

Если вы пришли из OpenAI SDK

  • Задайте базовый URL https://api.shannon-ai.com/v1, а в качестве ключа — свой ключ Shannon. Вызовы Chat Completions и Responses тогда работают с SDK как есть.
  • model должен быть id Shannon. На имя модели другого провайдера, например gpt-4o, отвечают 400 и unknown model.
  • Рассуждения приходят в отдельном поле: reasoning_content рядом с content, в сообщении и в дельтах потока.
  • Поток всегда передает usage в последнем чанке вместе с finish_reason.
  • Вызов инструмента в потоке приходит одним чанком с полной строкой arguments.
  • В ответе один вариант.
  • На пути API OpenAI, которых нет в таблице выше, например /v1/embeddings, отвечают 404.

Если вы пришли из Anthropic SDK

  • Задайте базовый URL https://api.shannon-ai.com, без /v1, а в качестве ключа — свой ключ Shannon. SDK отправит его как x-api-key.
  • model должен быть id Shannon.
  • max_tokens в этом API необязателен. Значение по умолчанию — 4,096.
  • Ответ содержит блоки контента типов thinking, text и tool_use. Первый блок не всегда текст: выбирайте блоки по type.
  • stop_reason равен end_turn или tool_use. Поток модели Shannon может также закончиться с max_tokens.
  • anthropic-version и anthropic-beta принимаются, поэтому SDK работает без изменений. Запросу они не нужны.
  • Ошибки на /v1/messages имеют форму Anthropic: {"type": "error", "error": {…}}.

Инструменты для кодинга, работающие с этими форматами, настраиваются так же: базовый URL, ключ и id Shannon в качестве модели. CLI-инструменты для кодинга