Огляд
Карта API: кожен ендпоінт, як виглядають запит і помилка, як оплачуються виклики та що варто знати, якщо ви переходите з SDK OpenAI або Anthropic.
Ендпоінти
Кожен ендпоінт розташований під одним базовим URL і обслуговується через HTTPS.
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 | Підрахуйте токени тексту або чат-запиту для хостованої open-weight моделі. Безкоштовно. |
POST /v1/messages/count_tokens | Підрахунок токенів Anthropic | Підрахуйте вхідні токени запиту Messages для хостованої open-weight моделі. Безкоштовно. |
Три ендпоінти, що створюють текст, доходять до тих самих моделей. Обирайте той, формат якого вже використовує ваш код.
Основи запитів
| Заголовок | Опис |
|---|---|
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 на сторінці Models & pricing. Регістр не має значення.
Відповідь — це JSON або стрім server-sent events, якщо запит задає stream у true. Кожен ендпоінт відповідає у власному форматі. Кожна відповідь має заголовок x-request-id.
Що проходить запит
Запит перевіряється у фіксованому порядку, перш ніж запуститься модель. Відповідає перша перевірка, що не пройшла, тож 401 ще нічого не говорить про тіло.
| Перевіряється в такому порядку | Статус при невдачі |
|---|---|
| API-ключ | 401 |
| Тіло: розмір, тип вмісту, JSON, типи полів | 413 · 415 · 400 · 422 |
| Id моделі | 400 |
| Захист від флуду: 120 запитів на хвилину на обліковий запис | 429 |
| Баланс: бюджет виводу запиту має вміститися | 429 |
Форма помилки
Помилка — це JSON-об'єкт з error, що містить type і message. /v1/messages загортає її так, як очікують SDK Anthropic; усі інші шляхи використовують форму OpenAI.
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: gpt-4o"
}
} {
"type": "error",
"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 запитів на хвилину на обліковий запис. Запити, надіслані паралельно, чекають у черзі.
Ліміти та баланс Моделі та ціни Ключі та використання
Поля, що залежать від моделі
Кожна модель приймає однаковий запит. Кілька полів діють лише на деяких моделях; таблиця вказує, на яких. Сторінки ендпоінтів перелічують кожне поле.
| Поле | Опис | Застосовують |
|---|---|---|
system | Інструкції для моделі: повідомлення system у Chat Completions, system у Messages, instructions у Responses. | Хостовані open-weight моделі, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
temperature | Температура семплювання. | Хостовані open-weight моделі, shannon-1.6-*, shannon-coder-1 |
top_p | Nucleus-семплювання. | Хостовані open-weight моделі |
seed | Фіксований seed для семплювання. | Хостовані open-weight моделі |
stop | До 4 послідовностей зупинки. | Хостовані open-weight моделі |
reasoning_effort | Скільки модель міркує перед відповіддю. reasoning.effort у Responses, thinking у Messages. | Хостовані open-weight моделі |
web_search | true дозволяє моделі шукати в вебі для цього запиту. Поле цього API, у Chat Completions і Messages. | Моделі Shannon, крім shannon-coder-1 |
max_tokens | Бюджет виводу. На кожній моделі він задає суму, що резервується з вашого балансу. | Як обмеження довжини відповіді: хостовані open-weight моделі, shannon-1.6-*, shannon-coder-1 |
Якщо ви переходите з SDK OpenAI
- Вкажіть базовий 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. - Відповідь має один варіант (choice).
- Шляхи API OpenAI, яких немає в таблиці вище, як-от
/v1/embeddings, отримують відповідь404.
Якщо ви переходите з SDK Anthropic
- Вкажіть базовий 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-інструменти для кодування