Responses API
جدیدPOST /v1/responses دستورالعملها و فهرستی از آیتمهای ورودی میگیرد و یک شیء پاسخ متشکل از آیتمهای خروجی را با فرمت OpenAI Responses برمیگرداند. از آن با responses API در SDK مربوط به OpenAI و ابزارهای ساختهشده روی آن، مانند Codex CLI، استفاده کنید. این endpoint هیچ وضعیتی را نگه نمیدارد: کل گفتگو را با هر درخواست بفرستید.
POST https://api.shannon-ai.com/v1/responses
کوچکترین درخواست یک شناسه مدل و یک متن است. پاسخ stream نمیشود مگر اینکه آن را بخواهید.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.responses.create(
model="shannon-3",
input="Say hello in one sentence.",
)
print(response.output_text) import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const response = await client.responses.create({
model: "shannon-3",
input: "Say hello in one sentence.",
});
console.log(response.output_text); curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"input": "Say hello in one sentence."
}' پاسخ یک شیء response است. output آن استدلال، اگر مدل استدلال کرده باشد، و پیام را دارد:
{
"id": "resp_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"object": "response",
"created_at": 1791625200,
"model": "shannon-3",
"status": "completed",
"error": null,
"incomplete_details": null,
"instructions": null,
"metadata": {},
"parallel_tool_calls": true,
"temperature": null,
"tool_choice": "auto",
"tools": [],
"top_p": null,
"output": [
{
"id": "rs_8a2e6c1f4b7d4e03b9c5a1d70f3e2b64",
"type": "reasoning",
"summary": [
{
"type": "summary_text",
"text": "The user wants a greeting in one sentence. Keep it short and friendly."
}
]
},
{
"id": "msg_1c7b9e3a5d2f4a86b0e4c8d19a6f7e25",
"type": "message",
"role": "assistant",
"status": "completed",
"content": [
{
"type": "output_text",
"text": "Hello, it is good to meet you.",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 1184,
"output_tokens": 46,
"total_tokens": 1230
}
} فیلدهای درخواست
model و input چیزهایی هستند که یک درخواست لازم دارد. ستون اعمالشده توسط مدلهایی را نام میبرد که یک فیلد روی آنها پاسخ را تغییر میدهد. مدلهای open-weight میزبانیشده دوازده شناسه فهرست مدلها هستند؛ خانواده Shannon 3 شامل shannon-3، shannon-3-pro، shannon-3.1 و shannon-3.1-pro است. مدلها و قیمتها
| فیلد | نوع | پیشفرض | توضیحات | اعمالشده توسط |
|---|---|---|---|---|
model | string | الزامی. یک شناسه از فهرست مدلها. تطبیق به حروف بزرگ و کوچک حساس نیست. شناسهای که وجود ندارد یا منتشر نشده 400 unknown model برمیگرداند. | همه مدلها | |
input | string | array | یک رشته، که بهعنوان یک پیام کاربر خوانده میشود، یا آرایهای از آیتمهای ورودی. بخش «آیتمهای ورودی» را در ادامه ببینید. | همه مدلها | |
instructions | string | دستورالعملها برای مدل، یعنی system prompt در این فرمت. | مدلهای open-weight میزبانیشده، shannon-1.6-*، shannon-2-*، shannon-coder-1 | |
stream | boolean | false | true پاسخ را بهصورت server-sent events میفرستد. بخش «Streaming» را در ادامه ببینید. | همه مدلها |
max_output_tokens | integer | 4096 | حد بالای پاسخ، بر حسب توکن. مقداری خارج از بازه 1 تا 65,536 به همان بازه برگردانده میشود. همچنین مقداری است که تا پایان درخواست از موجودی شما کنار گذاشته میشود. بخش «حد خروجی» را در ادامه ببینید. | مدلهای open-weight میزبانیشده، shannon-1.6-*، shannon-2-*، shannon-coder-1 |
temperature | number | دمای نمونهبرداری. در مدلهای open-weight میزبانیشده مقادیر بین 0 و 2 نگه داشته میشوند. | مدلهای open-weight میزبانیشده؛ shannon-1.6-*، shannon-2-* و shannon-coder-1 در پاسخهایی که stream نمیشوند | |
top_p | number | نمونهبرداری هستهای (nucleus). مقادیر بین 0 و 1 نگه داشته میشوند. | مدلهای open-weight میزبانیشده | |
tools | array | توابعی که مدل میتواند فراخوانی کند، به شکل تخت این فرمت: {"type": "function", "name", "description", "parameters"}. بخش «Tools» را در ادامه ببینید. | همه مدلها | |
tool_choice | string | object | auto | "auto" تصمیم را به مدل میسپارد. "required" مدل را به فراخوانی یک ابزار وادار میکند. {"type": "function", "name": "…"} او را به فراخوانی همان ابزار وادار میکند. | مدلهای open-weight میزبانیشده |
reasoning | object | {"effort": "…"} با off، low، medium یا high. هر مقدار دیگری 400 برمیگرداند. | مدلهای open-weight میزبانیشده | |
text | object | {"format": {…}} پاسخ JSON میخواهد. بخش «خروجی ساختاریافته» را در ادامه ببینید. | همه سطوح Shannon؛ مدلهای open-weight میزبانیشده بهصورت فهرستشده برای هر شناسه |
previous_response_id، store، metadata، parallel_tool_calls، truncation، include، user و prompt_cache_key پذیرفته میشوند تا کد کلاینت موجود بدون تغییر اجرا شود. آنها پاسخ را تغییر نمیدهند. چون گفتگویی ذخیره نمیشود، درخواست بعدی نوبتهای قبلی را در input همراه دارد.
آیتمهای ورودی
آیتم ورودی یا یک پیام است، با role و content، یا آیتمی تایپدار که فراخوانی ابزار یا نتیجه آن را حمل میکند. content یک رشته است یا آرایهای از بخشها.
| آیتم | توضیحات | اعمالشده توسط |
|---|---|---|
{"role": "user", "content": …} | آنچه میپرسید. content یک رشته است یا بخشهای input_text و input_image. | همه مدلها |
{"role": "assistant", "content": …} | پاسخ قبلی مدل. content یک رشته است یا بخشهای output_text. | همه مدلها |
{"role": "system", "content": …}{"role": "developer", "content": …} | دستورالعملها داخل گفتگو. | مدلهای open-weight میزبانیشده |
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} | فراخوانی ابزاری که مدل در پاسخ قبلی انجام داده است. arguments یک رشته JSON است. | همه مدلها |
{"type": "function_call_output", "call_id": "…", "output": "…"} | نتیجه آن فراخوانی. call_id شناسه فراخوانی و output نتیجه بهصورت رشته است. | همه مدلها |
دستورالعملها را در فیلد instructions بگذارید. با شناسهای از خانواده Shannon 3، دستورالعملهایی را که باید رعایت شوند در پیام user بگذارید.
آیتمهای output یک پاسخ را میتوان همانطور که هستند به input برگرداند: آیتمهای message و function_call خوانده میشوند و آیتمهای reasoning نادیده گرفته میشوند.
بخشهای محتوا
| بخش | توضیحات | در دسترس روی |
|---|---|---|
{"type": "input_text", "text": "…"} | متن پیام کاربر. | همه مدلها |
{"type": "output_text", "text": "…"} | متن پیام assistant. | همه مدلها |
{"type": "input_image", "image_url": "…"} | یک تصویر، بهصورت URL از نوع data: با محتوای base64 یا بهصورت URL از نوع http(s). | خانواده Shannon 3، shannon-1.6-lite، shannon-1.6-pro و مدلهای open-weight میزبانیشدهای که ورودی تصویر را فهرست کردهاند |
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} | یک سند (PDF، Word، PowerPoint یا Excel): file_data یک URL از نوع data: دارد، یا file_url یک URL از نوع http(s). | خانواده Shannon 3 |
در سطوح Shannon، تصاویر و فایلها از آخرین آیتم user در input خوانده میشوند. اندازهها و محدودیتها صفحه خودشان را دارند. تصاویر و فایلها
درخواست با دستورالعملها و گزینهها
این درخواست دستورالعملها، یک گفتگو بهصورت آیتمهای ورودی، حد خروجی، temperature و میزان تلاش استدلال را میفرستد. از یک مدل open-weight میزبانیشده استفاده میکند که همه آنها را اعمال میکند.
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
response = client.responses.create(
model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
instructions="You are a physics teacher. Answer in two sentences.",
input=[
{"role": "user", "content": "Why is the sky blue?"},
{"role": "assistant", "content": "Air scatters blue light more than red light."},
{"role": "user", "content": "And why are sunsets red?"},
],
max_output_tokens=512,
temperature=0.3,
reasoning={"effort": "low"},
)
for item in response.output:
if item.type == "reasoning":
print("reasoning:", item.summary[0].text)
elif item.type == "message":
print("answer:", item.content[0].text)
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.responses.create({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
instructions: "You are a physics teacher. Answer in two sentences.",
input: [
{ role: "user", content: "Why is the sky blue?" },
{ role: "assistant", content: "Air scatters blue light more than red light." },
{ role: "user", content: "And why are sunsets red?" },
],
max_output_tokens: 512,
temperature: 0.3,
reasoning: { effort: "low" },
});
for (const item of response.output) {
if (item.type === "reasoning") console.log("reasoning:", item.summary[0].text);
if (item.type === "message") console.log("answer:", item.content[0].text);
}
console.log(response.usage); curl https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"instructions": "You are a physics teacher. Answer in two sentences.",
"input": [
{"role": "user", "content": "Why is the sky blue?"},
{"role": "assistant", "content": "Air scatters blue light more than red light."},
{"role": "user", "content": "And why are sunsets red?"}
],
"max_output_tokens": 512,
"temperature": 0.3,
"reasoning": {"effort": "low"}
}' پاسخ مدل open-weight میزبانیشده id، object، model، created_at، status، output و usage دارد. usage آن توکنهای خواندهشده از کش و توکنهای صرفشده برای استدلال را اضافه میکند:
{
"usage": {
"input_tokens": 58,
"input_tokens_details": {
"cached_tokens": 0
},
"output_tokens": 67,
"output_tokens_details": {
"reasoning_tokens": 19
},
"total_tokens": 125
}
} شیء پاسخ
id، object، status، output و usage در هر پاسخ هستند. کد خود را روی آنها بسازید.
| فیلد | نوع | توضیحات | ارسالشده توسط |
|---|---|---|---|
id | string | resp_ و پس از آن 32 نویسه هگزادسیمال. | همه مدلها |
object | string | همیشه response. | همه مدلها |
status | string | completed. در stream ابتدا in_progress است، و در رویداد response.failed برابر failed. | همه مدلها |
output | array | آیتمهای خروجی به ترتیبی که مدل تولید کرد: reasoning، message، function_call. | همه مدلها |
usage | object | input_tokens، output_tokens و total_tokens. | همه مدلها |
usage.input_tokens_details | object | cached_tokens: توکنهای ورودی که از کش پرامپت خوانده شدهاند. | مدلهای open-weight میزبانیشده |
usage.output_tokens_details | object | reasoning_tokens: توکنهای خروجی که صرف استدلال شدهاند. | مدلهای open-weight میزبانیشده |
model | string | شناسه استاندارد مدلی که پاسخ داد. | خانواده Shannon 3، مدلهای open-weight میزبانیشده |
created_at | integer | زمان پاسخ، بر حسب ثانیه Unix. | خانواده Shannon 3، مدلهای open-weight میزبانیشده |
instructions, tools, temperature, … | instructions، tools و temperature درخواست را تکرار میکنند. error و incomplete_details برابر null هستند، metadata برابر {} است، parallel_tool_calls برابر true است، tool_choice برابر auto است و top_p برابر null. | خانواده Shannon 3 |
آیتمهای خروجی
| آیتم | توضیحات |
|---|---|
{"id": "rs_…", "type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} | استدلال مدل بهصورت یک بخش summary_text. فقط وقتی مدل استدلال کرده باشد وجود دارد. |
{"id": "msg_…", "type": "message", "role": "assistant", "content": [{"type": "output_text", "text": "…"}]} | پاسخ: یک بخش output_text با متن. |
{"id": "fc_…", "type": "function_call", "call_id": "call_…", "name": "…", "arguments": "…"} | یک فراخوانی ابزار. arguments یک رشته JSON است. نتیجه را با همان call_id پس بفرستید. |
SDKهای OpenAI متن پیام را برای شما در response.output_text به هم میچسبانند.
Streaming
برای server-sent events مقدار stream را true بگذارید. هر فریم یک خط event: با نام رویداد و یک خط data: با یک شیء JSON دارد؛ شیء نام را در type تکرار میکند. deltaها را با output_index به آیتمشان وصل کنید.
با SDK مربوط به OpenAI، رویدادها را از روی type بخوانید:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.shannon-ai.com/v1",
)
stream = client.responses.create(
model="shannon-3",
input="Explain server-sent events in three sentences.",
stream=True,
)
for event in stream:
kind = getattr(event, "type", "error") # an event without a type is an error event
if kind == "response.reasoning_summary_text.delta":
pass # a piece of reasoning: event.delta
elif kind == "response.output_text.delta":
print(event.delta, end="", flush=True)
elif kind == "response.output_item.done" and event.item.type == "function_call":
print("\ntool call:", event.item.name, event.item.arguments)
elif kind == "response.completed":
print("\n", event.response.usage)
elif kind in ("response.failed", "error"):
raise RuntimeError("the stream failed, send the request again") import OpenAI from "openai";
const client = new OpenAI({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com/v1",
});
const stream = await client.responses.create({
model: "shannon-3",
input: "Explain server-sent events in three sentences.",
stream: true,
});
for await (const event of stream) {
if (event.type === "response.reasoning_summary_text.delta") {
// a piece of reasoning: event.delta
} else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
} else if (event.type === "response.output_item.done" && event.item.type === "function_call") {
console.log("\ntool call:", event.item.name, event.item.arguments);
} else if (event.type === "response.completed") {
console.log("\n", event.response.usage);
} else if (event.type === "response.failed" || event.type === "error") {
throw new Error("the stream failed, send the request again");
}
} curl -N https://api.shannon-ai.com/v1/responses \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"input": "Explain server-sent events in three sentences.",
"stream": true
}' رویدادها به این ترتیب میرسند. گروههای استدلال، پیام و فراخوانی ابزار فقط وقتی پاسخ آنها را دارد ظاهر میشوند.
| رویداد | محتوا | زمان |
|---|---|---|
response.created | response | همیشه اول است. response.status برابر in_progress و response.output خالی است. |
response.in_progress | response | همیشه دوم است، با همان شیء. |
response.output_item.added | output_index, item | استدلال شروع میشود: آیتم reasoning با summary خالی. |
response.reasoning_summary_text.delta | output_index, summary_index, delta | یک تکه از استدلال. |
response.reasoning_summary_text.done | output_index, summary_index, text | استدلال کامل است: کل text آن. |
response.output_item.done | output_index, item | آیتم reasoning تکمیلشده. |
response.output_item.added | output_index, item | پاسخ شروع میشود: آیتم message با وضعیت in_progress و بدون محتوا. |
response.content_part.added | output_index, content_index, part | یک بخش output_text خالی باز میشود. |
response.output_text.delta | output_index, content_index, delta | یک تکه از پاسخ. |
response.output_text.done | output_index, content_index, text | پاسخ کامل است: کل text آن. |
response.content_part.done | output_index, content_index, part | بخش output_text تکمیلشده. |
response.output_item.done | output_index, item | آیتم message تکمیلشده، با وضعیت completed. |
response.output_item.added | output_index, item | یک فراخوانی ابزار شروع میشود: آیتم function_call با call_id، name و arguments خالی. |
response.function_call_arguments.delta | output_index, delta | آرگومانهای فراخوانی، کامل در یک delta. |
response.function_call_arguments.done | output_index, arguments | همان آرگومانها، بهصورت arguments. |
response.output_item.done | output_index, item | آیتم function_call تکمیلشده. |
response.completed | response | در حالت موفق همیشه آخر است: کل شیء response با output و usage. |
event: response.created
data: {"type":"response.created","response":{"id":"resp_5f0c…","object":"response","status":"in_progress","output":[], …}}
event: response.in_progress
data: {"type":"response.in_progress","response":{"id":"resp_5f0c…","object":"response","status":"in_progress","output":[], …}}
event: response.output_item.added
data: {"type":"response.output_item.added","output_index":0,"item":{"id":"msg_1c7b…","type":"message","role":"assistant","status":"in_progress","content":[]}}
event: response.content_part.added
data: {"type":"response.content_part.added","output_index":0,"content_index":0,"part":{"type":"output_text","text":""}}
event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"content_index":0,"delta":"Server-sent"}
event: response.output_text.delta
data: {"type":"response.output_text.delta","output_index":0,"content_index":0,"delta":" events let a server push text over one HTTP reply."}
event: response.output_text.done
data: {"type":"response.output_text.done","output_index":0,"content_index":0,"text":"Server-sent events let a server push text over one HTTP reply."}
event: response.content_part.done
data: {"type":"response.content_part.done","output_index":0,"content_index":0,"part":{"type":"output_text","text":"Server-sent events let a server push text over one HTTP reply."}}
event: response.output_item.done
data: {"type":"response.output_item.done","output_index":0,"item":{"id":"msg_1c7b…","type":"message","role":"assistant","status":"completed","content":[{"type":"output_text","text":"Server-sent events let a server push text over one HTTP reply.","annotations":[]}]}}
event: response.completed
data: {"type":"response.completed","response":{"id":"resp_5f0c…","object":"response","status":"completed","output":[…],"usage":{"input_tokens":1190,"output_tokens":18,"total_tokens":1208}, …}} streamی که با خطا مواجه میشود
در سطوح Shannon، پاسخ ناموفق بهجای response.completed با response.failed پایان مییابد. response.status آن failed است و response.error یک code، rate_limit_exceeded یا server_error، و یک message دارد.
در مدلهای open-weight میزبانیشده، شکست یک رویداد error با code برابر api_error و یک message است. response.completed همچنان بعد از آن میآید.
stream را وقتی ناموفق در نظر بگیرید که response.failed یا رویداد error داشته باشد، و درخواست را دوباره بفرستید.
Tools
ابزار تابعی است که کد شما اجرا میکند. آن را در tools توصیف کنید؛ وقتی مدل آن را بخواهد، پاسخ بهجای پیام، یا در کنار آن، آیتم function_call دارد.
تعریف یک ابزار در tools:
[
{
"type": "function",
"name": "get_weather",
"description": "Current weather for a city.",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] output پاسخی که آن را فراخوانی میکند:
[
{
"id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"type": "function_call",
"name": "get_weather",
"call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"arguments": "{\"city\":\"Paris\"}"
}
] تابع را اجرا کنید، سپس درخواست را دوباره بفرستید و فراخوانی و نتیجهاش را به input اضافه کنید:
[
{
"role": "user",
"content": "What is the weather in Paris?"
},
{
"type": "function_call",
"call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"arguments": "{\"city\":\"Paris\"}"
},
{
"type": "function_call_output",
"call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"output": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
}
] فقط ابزارهایی از نوع function خوانده میشوند. روی shannon-1.6-*، shannon-2-* و shannon-coder-1 schema مربوط به parameters به کلیدواژههای مشترک JSON Schema کاهش مییابد: oneOf مانند anyOf خوانده میشود و کلیدواژههایی مانند $ref، additionalProperties، const، default و title به مدل داده نمیشوند.
مقادیر required و تابع نامبرده برای tool_choice را مدلهای open-weight میزبانیشده اعمال میکنند.
حلقه ابزار بهطور کامل در صفحه خودش توضیح داده شده است. فراخوانی توابع
خروجی ساختاریافته
این فرمت خروجی ساختاریافته را به شکل text.format مینویسد. schema مستقیماً در format، کنار name و strict، قرار میگیرد، نه زیر عضو json_schema مانند Chat Completions.
{"type": "json_object"}هر شیء JSON را میخواهد.{"type": "json_schema", "name", "schema", "strict"}JSONای را میخواهد که از schema شما پیروی کند.strictوقتی آن را حذف کنیدtrueاست.
{
"model": "shannon-1.6-lite",
"input": "Extract the city and the date: 'The conference opens in Lisbon on 12 May 2027.'",
"text": {
"format": {
"type": "json_schema",
"name": "event",
"strict": true,
"schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
},
"date": {
"type": "string",
"description": "ISO 8601 date"
}
},
"required": [
"city",
"date"
]
}
}
}
} JSON بهصورت متن در بخش output_text پیام میرسد؛ خودتان آن را parse کنید. مدل open-weight میزبانیشده بدون خروجی ساختاریافته 400 برمیگرداند.
{"city": "Lisbon", "date": "2027-05-12"} اینکه کدام مدل کدام شکل را میپذیرد در صفحه خودش فهرست شده است. خروجیهای ساختاریافته
استدلال
مدلی که استدلال میکند استدلال خود را بهصورت یک آیتم خروجی از نوع reasoning پیش از پیام برمیگرداند. در stream بهصورت رویدادهای response.reasoning_summary_text.delta میرسد.
مدلهای open-weight میزبانیشده reasoning.effort را اعمال میکنند: off، low، medium یا high، و وقتی چیزی نفرستید high. off هیچ آیتم استدلالی برنمیگرداند. آن را بهصورت شیء بفرستید؛ رشته ساده در این endpoint خوانده نمیشود.
میزانهای تلاش در صفحه خودشان توضیح داده شدهاند. میزان تلاش استدلال
حد خروجی
max_output_tokens وقتی آن را نفرستید 4,096 است. تعداد توکنهایی است که هنگام شروع درخواست از موجودی شما کنار گذاشته میشود؛ وقتی پاسخ کامل شود، این مقدار با آنچه درخواست مصرف کرده جایگزین میشود. مقداری که در موجودی باقیمانده شما جا نشود 429 Quota exceeded برمیگرداند.
طول پاسخ را روی shannon-1.6-*، shannon-2-* و shannon-coder-1 و طول متن پاسخ را روی مدلهای open-weight میزبانیشده محدود میکند.
روی این endpoint، shannon-coder-1 مثل هر مدل دیگر بر حسب توکن از موجودی شما محاسبه میشود.
بدنه درخواست میتواند تا 32 MiB باشد. محدودیتها و موجودی
خطاها
خطاها از بدنه خطای OpenAI استفاده میکنند: یک شیء error با type و message؛ برخی code و param را هم با مقدار null دارند. جدول رایجترین مواردی را که این endpoint برمیگرداند فهرست میکند. فهرست کامل، همراه با اینکه کدام را دوباره امتحان کنید، صفحه خودش را دارد. مدیریت خطا
| وضعیت | نوع | پیام | زمان |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | هیچ کلید API ارسال نشده، یا کلید ناشناخته یا ابطالشده است. |
400 | invalid_request_error | unknown model: <id> | model وجود ندارد یا شناسه منتشرشده نیست. |
400 | invalid_request_error | No user message provided. | سطوح Shannon: input متن کاربر ندارد. |
400 | invalid_request_error | <id> does not accept image input | یک تصویر به مدل open-weight میزبانیشدهای فرستاده شد که ورودی تصویر ندارد. |
400 | invalid_request_error | <id> does not accept response_format | text.format به مدل open-weight میزبانیشدهای فرستاده شد که خروجی ساختاریافته ندارد. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning.effort مقداری خارج از فهرست دارد. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | بدنه JSON معتبر است اما نوع یک فیلد نادرست است. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_output_tokens از باقیمانده موجودی شما بزرگتر است. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | محافظت در برابر هجوم درخواست (flood protection): بیش از 120 درخواست در یک دقیقه روی حساب شما. |
500 | api_error | The model backend failed to answer. Please retry. | مدل پاسخی تولید نکرد. درخواست را دوباره بفرستید. |
502 | api_error | The model backend failed to answer. Please retry. | همین، روی مدلهای open-weight میزبانیشده. |
504 | api_error | upstream timed out | یک مدل open-weight میزبانیشده بیش از محدودیت زمانیِ پاسخی که stream نمیشود طول کشید. آن را با stream برابر true بفرستید. |