Chat Completions
POST /v1/chat/completions hëlt e Gespréich un a gëtt déi nächst Message vum Modell am OpenAI-Chat-Completions-Format zréck. Benotzt et vun all OpenAI-SDK aus oder iwwer pure HTTP; dës Säit ass d'Referenz, Feld fir Feld.
POST https://api.shannon-ai.com/v1/chat/completions
Déi klengst Ufro ass eng Modell-ID an eng Benotzermessage.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "Say hello in one sentence."}],
)
print(response.choices[0].message.content) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' D'Äntwert ass een JSON-Objet:
{
"id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"object": "chat.completion",
"created": 1791625200,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello, it is good to meet you.",
"reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1184,
"completion_tokens": 46,
"total_tokens": 1230
}
} Headers
Ufro-Headers
| Header | Wäert | Beschreiwung |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | Äre API-Schlëssel. x-api-key: YOUR_API_KEY gëtt amplaz dovun op all Endpoint akzeptéiert. |
Content-Type | application/json | Erfuerderlech. All anere Wäert gëtt 415 zréck. |
x-request-id | Optional. Är eege ID fir d'Ufro. Si kënnt onverännert an der Äntwert zréck. |
Äntwert-Headers
| Header | Beschreiwung |
|---|---|
x-request-id | Op all Äntwert, Feeler a Streams abegraff: de Wäert, deen Dir geschéckt hutt, oder 12 hexadezimal Zeechen, wann Dir keen geschéckt hutt. Gitt en un, wann Dir e Problem mellt. |
content-type | application/json, oder text/event-stream, wann stream true ass. |
Request-Felder
Nëmmen messages ass erfuerderlech. D'Kolonn Ugewannt vun nennt d'Modeller, bei deenen e Feld d'Äntwert ännert. D'Hosted Open-Weight-Modeller sinn déi zwielef IDen aus der Modellëscht; d'Shannon-3-Famill ass shannon-3, shannon-3-pro, shannon-3.1 an shannon-3.1-pro. Modeller a Präisser
| Feld | Typ | Standard | Beschreiwung | Ugewannt vun |
|---|---|---|---|---|
model | string | shannon-1.6-lite | De Modell, dee äntwert: eng ID aus der Modellëscht. Schéckt se bei all Ufro mat. D'Zuerdnung ënnerscheet net tëscht Groß- a Kleinschreiwung. Eng ID, déi net verëffentlecht ass, gëtt 400 unknown model zréck. | All Modeller |
messages | array | Erfuerderlech. D'Gespréich, eelst Message als éischt. Kuckt ënnen Messagen. | All Modeller | |
stream | boolean | false | true schéckt d'Äntwert als Server-sent Events, während se geschriwwe gëtt. | All Modeller |
max_tokens | integer | 4096 | Uewergrenz vun der Äntwert, an Tokens. E Wäert ausserhalb vun 1 bis 65,536 gëtt an dee Beräich geréckelt. Et ass och de Betrag, dee vun Ärem Solde reservéiert gëtt, während d'Ufro leeft. Kuckt ënnen Output-Längt. | Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Datselwecht wéi max_tokens. Wann béid geschéckt ginn, gëtt max_tokens benotzt. | Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Sampling-Temperatur. Bei den Hosted Open-Weight-Modeller ass de Standard 1 an d'Wäerter ginn tëscht 0 an 2 gehalen. | Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus-Sampling. D'Wäerter ginn tëscht 0 an 1 gehalen. | Hosted Open-Weight-Modeller |
seed | integer | Seed vum Sampler, eng beléiebeg ganz Zuel. Ouni hie gëtt de Seed aus dem Modell an dem Gespréich ofgeleet, sou datt déiselwecht Ufro, zweemol geschéckt, deeselwechte Seed benotzt. | Hosted Open-Weight-Modeller | |
stop | string | array | E String oder en Array vu Strings. Bis zu 4 ginn benotzt. D'Äntwert hält virum éischten op, deen optrëtt; de Stop-Text selwer gëtt net zréckgeschéckt. | Hosted Open-Weight-Modeller | |
reasoning_effort | string | high | Wéi vill de Modell reasonéiert, éier hien äntwert: off, low, medium oder high. none an minimal bedeuten off, default bedeit medium, max bedeit high. All anere Wäert gëtt 400 zréck. | Hosted Open-Weight-Modeller |
reasoning | object | Déiselwecht Astellung an Objetform: {"effort": "low"}. Wann béid geschéckt ginn, gëtt reasoning_effort benotzt. | Hosted Open-Weight-Modeller | |
tools | array | D'Funktiounen, déi de Modell opruffe kann, jidderee als {"type": "function", "function": {"name", "description", "parameters"}}. D'Ufruffer vum Modell kommen an tool_calls zréck; Äre Code féiert se aus. | All Modeller | |
tool_choice | string | object | auto | "auto" léisst de Modell entscheeden. "required" zwéngt en, en Tool opzeruffen. {"type": "function", "function": {"name": "…"}} zwéngt en, dat Tool opzeruffen. | Hosted Open-Weight-Modeller |
response_format | object | {"type": "json_object"} fir eng JSON-Äntwert, oder {"type": "json_schema", "json_schema": {…}} fir eng Äntwert, déi Ärem Schema follegt. | All Shannon-Niveauen; Hosted Open-Weight-Modeller wéi se pro ID opgelëscht sinn | |
web_search | boolean | false | true léisst de Modell um Web sichen, éier hien äntwert. | shannon-1.6-*, shannon-2-*, Shannon-3-Famill |
Aner OpenAI-Felder, wéi n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store an prompt_cache_key, ginn akzeptéiert, sou datt bestehende Client-Code onverännert leeft. Si änneren d'Äntwert net: et gëtt ëmmer eng Choice, an e Stream endet ëmmer mat Usage.
E Feld mam falsche JSON-Typ, zum Beispill "max_tokens": "100", gëtt 422 zréck. Eng Ufro ouni messages och.
Tools, strukturéierten Output, Reasoning a Websich hunn all hir eege Säit: Funktiounsofruff, Strukturéiert Output, Reasoning-Effort, Integréiert Websich.
Eng Ufro mat Optiounen
Dës Ufro setzt eng System-Message, d'Sampling-Felder an den Reasoning-Effort. Si benotzt en Hosted Open-Weight-Modell, dee se all applizéiert.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.chat.completions.create(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages=[
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"},
],
max_tokens=512,
temperature=0.3,
top_p=0.9,
seed=7,
stop=["\n\n"],
reasoning_effort="low",
)
message = response.choices[0].message
print(message.reasoning_content) # the reasoning
print(message.content) # the answer
print(response.usage) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.chat.completions.create({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages: [
{ role: "system", content: "You are a physics teacher. Answer in two sentences." },
{ role: "user", content: "Why is the sky blue?" },
],
max_tokens: 512,
temperature: 0.3,
top_p: 0.9,
seed: 7,
stop: ["\n\n"],
reasoning_effort: "low",
});
const message = response.choices[0].message;
console.log(message.reasoning_content); // the reasoning
console.log(message.content); // the answer
console.log(response.usage); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"messages": [
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"}
],
"max_tokens": 512,
"temperature": 0.3,
"top_p": 0.9,
"seed": 7,
"stop": ["\n\n"],
"reasoning_effort": "low"
}' D'Äntwert huet déiselwecht Form wéi uewen. Hir usage füügt bei den Hosted Open-Weight-Modeller zwee Detailer derbäi: d'Prompt-Tokens, déi aus dem Cache gelies goufen, an d'Tokens, déi fir Reasoning ausgi goufen.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Output-Längt
max_tokens mécht zwou Saachen. Éischtens ass et d'Zuel vun den Tokens, déi vun Ärem Solde reservéiert ginn, wann d'Ufro ufänkt. Wann d'Äntwert komplett ass, gëtt dee Betrag duerch d'Tokens ersat, déi d'Ufro benotzt huet. Wann max_tokens méi grouss ass wéi dat, wat vun Ärem Solde iwwreg ass, gëtt d'Ufro 429 Quota exceeded zréck, och wann d'Äntwert selwer gepasst hätt. Schéckt e méi niddrege max_tokens, fir manner ze reservéieren.
shannon-coder-1 gëtt op dësem Endpoint anescht gezielt: all Ufro ass ee vun de Shannon-Coder-Ufruffer vun Ärem Plan, a fir si ginn keng Tokens reservéiert. Limiten a Solde
Zweetens begrenzt et d'Längt vun der Äntwert bei dëse Modeller:
| Modeller | Wat max_tokens mécht |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | D'Äntwert hält op, wann se d'Limit erreecht. E Stream endet dann mat finish_reason length. |
| Hosted Open-Weight-Modeller | Den Äntwerttext hält bei max_tokens op. D'Reasoning gëtt net derbäi gezielt. Wäerter ënner 256 gëllen als 256. |
Ouni max_tokens oder max_completion_tokens ass de Wäert 4,096. Bei shannon-coder-1 ass en 65,536.
Messagen
All Message ass en Objet mat enger role an engem content. content ass e String oder en Array vun Deeler, wann d'Message méi wéi Text dréit.
| Roll | Beschreiwung | Ugewannt vun |
|---|---|---|
system | Instruktioune fir de Modell. Setzt se als éischt. Bei de Shannon-Niveaue gëtt déi éischt system-Message benotzt. | Hosted Open-Weight-Modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Gëtt als system gelies. | Hosted Open-Weight-Modeller |
user | Dat, wat Dir freet. Bei de Shannon-Niveaue ass déi lescht user-Message de Prompt an d'Messagen dovir sinn de Verlaf. | All Modeller |
assistant | Fréier Äntwerte vum Modell. Behaalt seng tool_calls, wann Dir en Tool-Resultat dernach schéckt. | All Modeller |
tool | D'Resultat vun engem Tool-Opruff: tool_call_id enthält d'ID vum Opruff an content d'Resultat als String. | All Modeller |
Bei enger ID aus der Shannon-3-Famill setzt Instruktioune, déi gëllen, an d'user-Message.
Bei de Shannon-Niveaue gëtt eng Ufro ouni Benotzertext a ouni tools 400 No user message provided zréck.
Content-Deeler
| Deel | Beschreiwung | Verfügbar bei |
|---|---|---|
{"type": "text", "text": "…"} | Purren Text. | All Modeller |
{"type": "image_url", "image_url": {"url": "…"}} | E Bild, als data:-URL mat base64-Inhalt oder als http(s)-URL. | Shannon-3-Famill, shannon-1.6-lite, shannon-1.6-pro, an d'Hosted Open-Weight-Modeller, déi Bild-Input opféieren |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | En Dokument (PDF, Word, PowerPoint oder Excel), als base64 oder iwwer URL. | Shannon-3-Famill |
Gréissten, Limite an déi komplett Lëscht vun de Forme hunn hir eege Säit. Biller a Fichieren
Dat Äntwert-Objet
| Feld | Typ | Beschreiwung |
|---|---|---|
id | string | chatcmpl- gefollegt vun 32 hexadezimale Zeechen. |
object | string | Ëmmer chat.completion. |
created | integer | Zäit vun der Äntwert, a Unix-Sekonnen. |
model | string | Déi kanonesch ID vum Modell, dee geäntwert huet. Si kann an der Schreifweis vun der ID ofwäichen, déi Dir geschéckt hutt. |
choices | array | Ëmmer genee eng Choice, mam index 0. |
choices[0].message.role | string | Ëmmer assistant. |
choices[0].message.content | string | null | Den Äntwerttext. Mat tool_calls ass hien bei de Shannon-Niveauen null; d'Hosted Open-Weight-Modeller kënnen Text nieft den Ufruffer schécken. |
choices[0].message.reasoning_content | string | null | D'Reasoning, déi de Modell virun der Äntwert geschriwwen huet, oder null, wann et keng gëtt. |
choices[0].message.tool_calls | array | Nëmmen do, wann de Modell Tools rifft. All Entrée huet eng id, den type function, an function mam name an den arguments als JSON-String. |
choices[0].message.annotations | array | Just bei enger Ufro mat web_search: true, där hir Sich eppes fonnt huet. Eng url_citation fir all Quell, déi eng Markéierung an content nennt, mat url, title, start_index an end_index (d'Positioun vun der Markéierung, an Zeechen gezielt, d'Enn ass net abegraff). |
choices[0].finish_reason | string | Firwat d'Äntwert opgehalen huet. Kuckt Finish-Reasons. |
usage | object | D'Tokens vun der Ufro. Kuckt Usage. |
sources | array | Just bei enger Ufro mat web_search: true, där hir Sich eppes fonnt huet: d'Resultater, déi de Modell kritt huet, all mat index, title an url. [1] an der Äntwert ass den Androck mat index 1. |
Finish-Reasons
| finish_reason | Beschreiwung |
|---|---|
stop | De Modell huet seng Äntwert fäerdeg gemaach, oder e stop-String ass opgetruede. |
tool_calls | De Modell rifft een oder méi Tools op. Féiert se aus a schéckt d'Resultater an tool-Messagen. |
length | D'Äntwert gouf um Output-Limit ofgeschnidden. Gëtt a Streams vun shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 an der Shannon-3-Famill gemellt. |
Eng Äntwert, déi net gestreamt gëtt, mellt stop oder tool_calls.
Usage
| Feld | Typ | Beschreiwung | Verfügbar bei |
|---|---|---|---|
usage.prompt_tokens | integer | Input-Tokens. | All Modeller |
usage.completion_tokens | integer | Output-Tokens: Reasoning, Äntwert an Tool-Ufruffer zesummen. | All Modeller |
usage.total_tokens | integer | prompt_tokens plus completion_tokens. | All Modeller |
usage.prompt_tokens_details.cached_tokens | integer | Den Deel vun prompt_tokens, deen aus dem Prompt-Cache gelies gouf. | Hosted Open-Weight-Modeller |
usage.completion_tokens_details.reasoning_tokens | integer | Den Deel vun completion_tokens, deen fir Reasoning ausgi gouf. | Hosted Open-Weight-Modeller |
Bei den Hosted Open-Weight-Modeller ass prompt_tokens Är Messagen an Tool-Definitiounen, gezielt mam eegenen Tokenizer vum Modell, plus d'Tokens vu Biller. D'Endpoints fir d'Token-Zielung ginn déiselwecht Zuel zréck, éier Dir schéckt. Tokenzielung
Bei de Shannon-Niveaue zielt prompt_tokens alles, wat de Modell gelies huet, fir d'Äntwert ze schreiwen, dofir ass et méi grouss wéi nëmmen den Text vun Ären Messagen.
Streaming
Wann stream op true gesat ass, kënnt d'Äntwert als chat.completion.chunk-Events a endet mat data: [DONE]. De leschte Chunk dovir dréit finish_reason an usage; stream_options sinn net néideg. D'Chunk-Forme, Keep-alive-Zeilen a Feeler an engem Stream hunn hir eege Säit. Streaming
Feeler
E Feeler ass en JSON-Objet mat engem error-Member. D'Kontrolle lafen an dëser Reiefolleg: API-Schlëssel, Ufro-Body, Modell-ID, dann Solde. D'Tabell lëscht, wat dësen Endpoint am heefegsten zréckgëtt. Déi komplett Lëscht, mat deem, wat Dir nei probéiere sollt, huet hir eege Säit. Feelerbehandlung
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Status | Typ | Message | Wéini |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Et gouf kee API-Schlëssel geschéckt, oder de Schlëssel ass onbekannt oder widderruff. |
400 | invalid_request_error | unknown model: <id> | model ass keng verëffentlecht ID. |
400 | invalid_request_error | No user message provided | Shannon-Niveauen: d'Ufro huet keen Benotzertext a keng tools. |
400 | invalid_request_error | <id> does not accept image input | E Bild-Deel gouf un en Hosted Open-Weight-Modell ouni Bild-Input geschéckt. |
400 | invalid_request_error | <id> does not accept response_format | response_format gouf un en Hosted Open-Weight-Modell ouni strukturéierten Output geschéckt. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort enthält e Wäert ausserhalb vun der Lëscht. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages feelt, oder e Feld huet de falsche JSON-Typ. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens ass méi grouss wéi dat, wat vun Ärem Solde iwwreg ass. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood-Schutz: méi wéi 120 Ufroen an enger Minutt op Ärem Kont. |
500 | server_error | The model backend failed to answer. Please retry. | De Modell huet keng Äntwert produzéiert. Schéckt d'Ufro nach eng Kéier. |
502 | api_error | The model backend failed to answer. Please retry. | Datselwecht, bei der Shannon-3-Famill an den Hosted Open-Weight-Modeller. |