Преглед
Мапа на API-то: секој ендпоинт, како изгледаат барање и грешка, како се плаќаат повиците и што да знаете кога доаѓате од SDK на OpenAI или Anthropic.
Ендпоинти
Секој ендпоинт е под еден основен URL и се услужува преку HTTPS.
https://api.shannon-ai.com | Ендпоинт | Формат | За што служи |
|---|---|---|
POST /v1/chat/completions | OpenAI Chat Completions | Испратете разговор, добијте го следниот одговор. Со или без streaming. |
POST /v1/messages | Anthropic Messages | Истото, во обликот на барањата и одговорите на SDK-ата на Anthropic. |
POST /v1/responses | OpenAI Responses | Истото, во облик на Responses. Ендпоинтот не чува состојба: испраќајте го разговорот со секое барање. |
GET /v1/models | OpenAI листа на модели | Ги наведува моделите со контекстен прозорец, цени и способности. Не бара клуч. |
POST /v1/tokenize | Shannon API | Ги брои токените на текст или на chat барање за хостиран open-weight модел. Бесплатно. |
POST /v1/messages/count_tokens | Anthropic броење токени | Ги брои влезните токени на барање Messages за хостиран open-weight модел. Бесплатно. |
Трите ендпоинти што создаваат текст стигнуваат до истите модели. Изберете го оној чиј формат го користи вашиот код.
Основи на барањето
| Header | Опис |
|---|---|
Authorization: Bearer <key> | Вашиот API клуч. Потребен на секој ендпоинт освен GET /v1/models, освен ако не испратите x-api-key. |
x-api-key: <key> | Истиот клуч во header-от што го испраќаат SDK-ата на Anthropic. Се чита на секој ендпоинт. |
Content-Type: application/json | Потребен на секој POST. Без него одговорот е 415. |
x-request-id: <your id> | Изборно. Ваш сопствен ид за барањето; се враќа во header-от на одговорот x-request-id. Без него API-то создава еден од 12 хексадецимални знаци. |
- Телото на секој
POSTе еден JSON објект, до 32 MiB. - Поле што API-то не го познава не предизвикува грешка и нема ефект. Барање напишано за друг провајдер не пропаѓа поради вишок поле.
- Познато поле со погрешен JSON тип, или недостасувачко задолжително поле, се одговара со
422. Тело што не е валиден JSON се одговара со400. modelе еден од идовите на Модели и цени. Големите и малите букви не се важни.
Одговорот е JSON, или streaming од server-sent events кога барањето го поставува stream на true. Секој ендпоинт одговара во свој формат. Секој одговор го има header-от x-request-id.
Низ што поминува барањето
Барањето се проверува по фиксен редослед пред да се изврши моделот. Одговара првата проверка што ќе падне, па 401 сè уште не ви кажува ништо за телото.
| Проверено, по овој редослед | Статус при неуспех |
|---|---|
| API клуч | 401 |
| Тело: големина, тип на содржина, JSON, типови на полиња | 413 · 415 · 400 · 422 |
| Ид на модел | 400 |
| Flood protection: 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. - Откако streaming-от ќе започне, статусот е веќе
200. Неуспехот тогаш пристигнува како фрејм за грешка во streaming-от. - Секој одговор со грешка го содржи header-от
x-request-id.
| Статус | Тип | Кога |
|---|---|---|
400 | invalid_request_error | Телото не е валиден JSON, идот на моделот е непознат, или моделот не прима некој вид влез што сте го испратиле. |
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. Страницата Клучеви и употреба го прикажува салдото и колку чинело секое барање. - Секое барање се услужува еднакво. Единственото ограничување на стапката на барања е flood protection: 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мора да биде Shannon ид. Име на модел од друг провајдер, какоgpt-4o, се одговара со400иunknown model.- Размислувањето доаѓа во посебно поле:
reasoning_contentпокрајcontent, во пораката и во delta-ите на streaming-от. - Streaming секогаш носи
usageво својот последен chunk, заедно соfinish_reason. - Повикот на алатка во streaming пристигнува како еден chunk со целиот стринг
arguments. - Одговорот има еден choice.
- Патеки од API-то на OpenAI што не се во табелата погоре, како
/v1/embeddings, се одговараат со404.
Доаѓате од SDK на Anthropic
- Поставете го основниот URL на
https://api.shannon-ai.com, без/v1, а клучот на вашиот клуч за Shannon. SDK-то го испраќа какоx-api-key. modelмора да биде Shannon ид.max_tokensе изборен на ова API. Стандардната вредност е 4,096.- Одговорот содржи блокови содржина од тип
thinking,textиtool_use. Првиот блок не е секогаш текстот: избирајте блокови споредtype. stop_reasonеend_turnилиtool_use. Streaming на модел Shannon може да заврши и соmax_tokens.anthropic-versionиanthropic-betaсе прифаќаат, па SDK-то работи непроменето. Барањето не ги бара.- Грешките на
/v1/messagesимаат облик на Anthropic:{"type": "error", "error": {…}}.
Алатките за програмирање што го зборуваат овој формат се поставуваат на ист начин: основен URL, клуч и Shannon ид како модел. CLI алатки за програмирање