কনটেন্টে যান
Responses API

Responses API

নতুন

POST /v1/responses নির্দেশনা ও ইনপুট আইটেমের তালিকা নেয় এবং OpenAI Responses ফরম্যাটে আউটপুট আইটেম দিয়ে তৈরি একটি রেসপন্স অবজেক্ট ফেরত দেয়। এটি OpenAI SDK-র responses API-র সাথে এবং Codex CLI-র মতো তার ওপর গড়া টুলের সাথে ব্যবহার করুন। এন্ডপয়েন্ট কোনো অবস্থা ধরে রাখে না: প্রতিটি রিকোয়েস্টে পুরো কথোপকথন পাঠান।

POST https://api.shannon-ai.com/v1/responses

সবচেয়ে ছোট রিকোয়েস্ট হলো একটি মডেল id ও একটি টেক্সট। আপনি না চাইলে উত্তর স্ট্রিম হয় না।

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)

উত্তর একটি রেসপন্স অবজেক্ট। এর output-এ থাকে রিজনিং, যদি মডেল রিজনিং করে থাকে, এবং মেসেজ:

200 JSON
{
  "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 লাগে। Applied by কলাম বলে কোন মডেলে একটি ফিল্ড উত্তর বদলায়। হোস্টেড ওপেন-ওয়েট মডেল হলো মডেল তালিকার বারোটি id; Shannon 3 পরিবার হলো shannon-3, shannon-3-pro, shannon-3.1 ও shannon-3.1-pro। মডেল ও মূল্য

ফিল্ড টাইপ ডিফল্ট বিবরণ যারা প্রয়োগ করে
model string আবশ্যক। মডেল তালিকার একটি id। মিলানোর সময় বড়-ছোট হাতের অক্ষর গুরুত্বপূর্ণ নয়। id না থাকলে বা প্রকাশিত না হলে 400 unknown model ফেরত আসে। সব মডেল
input string | array একটি string, যা একটি ইউজার মেসেজ হিসেবে পড়া হয়, অথবা ইনপুট আইটেমের অ্যারে। নিচে ইনপুট আইটেম দেখুন। সব মডেল
instructions string মডেলের জন্য নির্দেশনা, এই ফরম্যাটের সিস্টেম প্রম্পট। হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-*, shannon-2-*, shannon-coder-1
stream boolean false true হলে উত্তর server-sent ইভেন্ট হিসেবে পাঠানো হয়। নিচে স্ট্রিমিং দেখুন। সব মডেল
max_output_tokens integer 4096 tokens-এ উত্তরের ঊর্ধ্বসীমা। 1 থেকে 65,536-এর বাইরের মান ওই সীমার মধ্যে আনা হয়। রিকোয়েস্ট চলার সময় আপনার ব্যালেন্স থেকে আলাদা করে রাখা পরিমাণও এটিই। নিচে আউটপুট সীমা দেখুন। হোস্টেড ওপেন-ওয়েট মডেল, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature number স্যাম্পলিং টেম্পারেচার। হোস্টেড ওপেন-ওয়েট মডেলে মান 0 থেকে 2-এর মধ্যে রাখা হয়। হোস্টেড ওপেন-ওয়েট মডেল; স্ট্রিম না করা উত্তরে shannon-1.6-*, shannon-2-* ও shannon-coder-1
top_p number নিউক্লিয়াস স্যাম্পলিং। মান 0 থেকে 1-এর মধ্যে রাখা হয়। হোস্টেড ওপেন-ওয়েট মডেল
tools array মডেল যেসব ফাংশন কল করতে পারে, এই ফরম্যাটের সমতল রূপে: {"type": "function", "name", "description", "parameters"}। নিচে টুলস দেখুন। সব মডেল
tool_choice string | object auto "auto" মডেলকে ঠিক করতে দেয়। "required" তাকে টুল কল করাতে বাধ্য করে। {"type": "function", "name": "…"} তাকে সেই টুল কল করাতে বাধ্য করে। হোস্টেড ওপেন-ওয়েট মডেল
reasoning object off, low, medium বা high সহ {"effort": "…"}। অন্য যেকোনো মানে 400 ফেরত আসে। হোস্টেড ওপেন-ওয়েট মডেল
text object {"format": {…}} JSON উত্তর চায়। নিচে স্ট্রাকচার্ড আউটপুট দেখুন। সব Shannon টিয়ার; হোস্টেড ওপেন-ওয়েট মডেল প্রতি id-র তালিকা অনুযায়ী

previous_response_id, store, metadata, parallel_tool_calls, truncation, include, user ও prompt_cache_key গ্রহণ করা হয় যাতে বিদ্যমান ক্লায়েন্ট কোড অপরিবর্তিত চলে। এগুলো উত্তর বদলায় না। কোনো কথোপকথন সংরক্ষিত হয় না বলে পরবর্তী রিকোয়েস্টে আগের টার্নগুলো input-এ পাঠাতে হয়।

ইনপুট আইটেম

ইনপুট আইটেম হয় role ও content সহ একটি মেসেজ, অথবা টুল কল বা তার ফলাফল বহনকারী টাইপ করা আইটেম। content একটি string বা অংশের অ্যারে।

আইটেম বিবরণ যারা প্রয়োগ করে
{"role": "user", "content": …} আপনি যা জিজ্ঞাসা করেন। content একটি string, অথবা input_text ও input_image অংশ। সব মডেল
{"role": "assistant", "content": …} মডেলের আগের একটি উত্তর। content একটি string, অথবা output_text অংশ। সব মডেল
{"role": "system", "content": …}
{"role": "developer", "content": …}
কথোপকথনের ভেতরের নির্দেশনা। হোস্টেড ওপেন-ওয়েট মডেল
{"type": "function_call", "call_id": "…", "name": "…", "arguments": "…"} মডেল আগের উত্তরে যে টুল কল করেছিল। arguments একটি JSON string। সব মডেল
{"type": "function_call_output", "call_id": "…", "output": "…"} ওই কলের ফলাফল। call_id কলটির id এবং output ফলাফল string হিসেবে। সব মডেল

নির্দেশনা instructions ফিল্ডে রাখুন। Shannon 3 পরিবারের id হলে যে নির্দেশনা অবশ্যই মানতে হবে তা user মেসেজে রাখুন।

উত্তরের output-এর আইটেমগুলো যেমন আছে তেমনই input-এ ফেরত পাঠানো যায়: message ও function_call আইটেম পড়া হয়, reasoning আইটেম বাদ যায়।

কনটেন্ট অংশ

অংশ বিবরণ যেখানে পাওয়া যায়
{"type": "input_text", "text": "…"} ইউজার মেসেজের টেক্সট। সব মডেল
{"type": "output_text", "text": "…"} অ্যাসিস্ট্যান্ট মেসেজের টেক্সট। সব মডেল
{"type": "input_image", "image_url": "…"} একটি ইমেজ, base64 কনটেন্টসহ data: URL হিসেবে অথবা http(s) URL হিসেবে। Shannon 3 পরিবার, shannon-1.6-lite, shannon-1.6-pro, এবং ইমেজ ইনপুট তালিকাভুক্ত করা হোস্টেড ওপেন-ওয়েট মডেল
{"type": "input_file", "file_data": "data:application/pdf;base64,…"} একটি ডকুমেন্ট (PDF, Word, PowerPoint বা Excel): file_data-তে data: URL, অথবা file_url-এ http(s) URL। Shannon 3 পরিবার

Shannon টিয়ারে ইমেজ ও ফাইল input-এর শেষ user আইটেম থেকে পড়া হয়। আকার ও সীমার নিজস্ব পেজ আছে। ইমেজ ও ফাইল

নির্দেশনা ও বিকল্পসহ একটি রিকোয়েস্ট

এই রিকোয়েস্ট নির্দেশনা, ইনপুট আইটেম হিসেবে একটি কথোপকথন, একটি আউটপুট সীমা, একটি টেম্পারেচার এবং একটি রিজনিং এফোর্ট পাঠায়। এটি একটি হোস্টেড ওপেন-ওয়েট মডেল ব্যবহার করে, যা সবগুলোই প্রয়োগ করে।

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)

হোস্টেড ওপেন-ওয়েট মডেলের উত্তরে id, object, model, created_at, status, output ও usage থাকে। এর usage ক্যাশ থেকে পড়া tokens এবং রিজনিংয়ে খরচ হওয়া tokens যোগ করে:

200 JSON
{
  "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। স্ট্রিমে এটি প্রথমে 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: প্রম্পট ক্যাশ থেকে পড়া ইনপুট tokens। হোস্টেড ওপেন-ওয়েট মডেল
usage.output_tokens_details object reasoning_tokens: রিজনিংয়ে খরচ হওয়া আউটপুট tokens। হোস্টেড ওপেন-ওয়েট মডেল
model string যে মডেল উত্তর দিয়েছে তার প্রামাণিক id। Shannon 3 পরিবার, হোস্টেড ওপেন-ওয়েট মডেল
created_at integer উত্তরের সময়, Unix সেকেন্ডে। Shannon 3 পরিবার, হোস্টেড ওপেন-ওয়েট মডেল
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 string। ফলাফল একই call_id দিয়ে ফেরত পাঠান।

OpenAI SDK মেসেজের টেক্সট আপনার জন্য response.output_text-এ জুড়ে দেয়।

স্ট্রিমিং

server-sent ইভেন্টের জন্য stream true করুন। প্রতিটি ফ্রেমে ইভেন্টের নামসহ একটি event: লাইন এবং একটি JSON অবজেক্টসহ একটি data: লাইন থাকে; অবজেক্টটি type-এ নামটি পুনরাবৃত্তি করে। ডেল্টাগুলো তাদের আইটেমের সাথে output_index দিয়ে মেলান।

OpenAI SDK দিয়ে ইভেন্টগুলো তাদের 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")

ইভেন্ট এই ক্রমে আসে। রিজনিং, মেসেজ ও টুল কলের গ্রুপ শুধু তখনই আসে যখন উত্তরে সেগুলো থাকে।

ইভেন্ট পে-লোড কখন
response.created response সবসময় প্রথমে। response.status হলো in_progress এবং response.output খালি।
response.in_progress response সবসময় দ্বিতীয়, একই অবজেক্ট সহ।
response.output_item.added output_index, item রিজনিং শুরু হয়: খালি summary সহ একটি reasoning আইটেম।
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 উত্তর শুরু হয়: in_progress স্ট্যাটাস ও কোনো কনটেন্ট ছাড়া একটি message আইটেম।
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 একটি টুল কল শুরু হয়: call_id, name ও খালি arguments সহ একটি function_call আইটেম।
response.function_call_arguments.delta output_index, delta কলের আর্গুমেন্ট, একটি ডেল্টায় সম্পূর্ণ।
response.function_call_arguments.done output_index, arguments একই আর্গুমেন্ট, arguments হিসেবে।
response.output_item.done output_index, item সমাপ্ত function_call আইটেম।
response.completed response সফল হলে সবসময় শেষে: output ও usage সহ পুরো রেসপন্স অবজেক্ট।
200 text/event-stream
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}, …}}

যে স্ট্রিম ব্যর্থ হয়

Shannon টিয়ারে ব্যর্থ উত্তর response.completed-এর জায়গায় response.failed দিয়ে শেষ হয়। এর response.status হলো failed এবং response.error-এ একটি code, rate_limit_exceeded বা server_error, ও একটি message থাকে।

হোস্টেড ওপেন-ওয়েট মডেলে ব্যর্থতা হলো code api_error ও একটি message সহ error ইভেন্ট। এরপরও response.completed আসে।

স্ট্রিমে response.failed বা error ইভেন্ট থাকলে তাকে ব্যর্থ ধরুন এবং রিকোয়েস্ট আবার পাঠান।

টুলস

টুল হলো এমন ফাংশন যা আপনার কোড চালায়। এটি tools-এ বর্ণনা করুন; মডেল এটি চাইলে উত্তরে মেসেজের জায়গায় বা পাশে একটি function_call আইটেম থাকে।

tools-এ একটি টুল সংজ্ঞা:

tools
[
  {
    "type": "function",
    "name": "get_weather",
    "description": "Current weather for a city.",
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        }
      },
      "required": [
        "city"
      ]
    }
  }
]

যে উত্তর এটি কল করে তার output:

200 output
[
  {
    "id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "type": "function_call",
    "name": "get_weather",
    "call_id": "call_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "arguments": "{\"city\":\"Paris\"}"
  }
]

ফাংশনটি চালান, তারপর কল ও তার ফলাফল input-এ যোগ করে রিকোয়েস্ট আবার পাঠান:

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 type-এর টুল পড়া হয়। shannon-1.6-*, shannon-2-* ও shannon-coder-1-এ parameters schema সাধারণ JSON Schema কিওয়ার্ডে ছোট করা হয়: oneOf পড়া হয় anyOf হিসেবে, এবং $ref, additionalProperties, const, default ও title-এর মতো কিওয়ার্ড মডেলকে দেওয়া হয় না।

tool_choice-এর মান required এবং নাম দেওয়া ফাংশন হোস্টেড ওপেন-ওয়েট মডেল প্রয়োগ করে।

টুল লুপ নিজস্ব পেজে পুরোপুরি বর্ণিত। ফাংশন কলিং

স্ট্রাকচার্ড আউটপুট

এই ফরম্যাট স্ট্রাকচার্ড আউটপুট লেখে text.format হিসেবে। schema সরাসরি format-এ থাকে, name ও strict-এর পাশে, Chat Completions-এর মতো json_schema সদস্যের নিচে নয়।

  • {"type": "json_object"} যেকোনো JSON অবজেক্ট চায়।
  • {"type": "json_schema", "name", "schema", "strict"} আপনার schema মেনে চলা JSON চায়। বাদ দিলে strict হলো true।
POST /v1/responses
{
  "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 অংশে টেক্সট হিসেবে আসে; নিজে পার্স করুন। স্ট্রাকচার্ড আউটপুট নেই এমন হোস্টেড ওপেন-ওয়েট মডেল 400 ফেরত দেয়।

output_text
{"city": "Lisbon", "date": "2027-05-12"}

কোন মডেল কোন রূপ নেয় তা নিজস্ব পেজে তালিকাভুক্ত। স্ট্রাকচার্ড আউটপুট

রিজনিং

যে মডেল রিজনিং করে সে মেসেজের আগে reasoning type-এর একটি আউটপুট আইটেম হিসেবে তার রিজনিং ফেরত দেয়। স্ট্রিমে এটি response.reasoning_summary_text.delta ইভেন্ট হিসেবে আসে।

হোস্টেড ওপেন-ওয়েট মডেল reasoning.effort প্রয়োগ করে: off, low, medium বা high, কিছু না পাঠালে high। off কোনো রিজনিং আইটেম ফেরত দেয় না। এটি অবজেক্ট হিসেবে পাঠান; এই এন্ডপয়েন্টে সরাসরি string পড়া হয় না।

এফোর্টগুলো তাদের নিজস্ব পেজে বর্ণিত। রিজনিং effort

আউটপুট সীমা

max_output_tokens না পাঠালে 4,096। রিকোয়েস্ট শুরুর সময় আপনার ব্যালেন্স থেকে এই পরিমাণ tokens আলাদা করে রাখা হয়; উত্তর সম্পূর্ণ হলে ওই পরিমাণের জায়গায় রিকোয়েস্টের প্রকৃত ব্যবহার বসে। আপনার অবশিষ্ট ব্যালেন্সে ধরে না এমন মানে 429 Quota exceeded ফেরত আসে।

এটি shannon-1.6-*, shannon-2-* ও shannon-coder-1-এ উত্তরের দৈর্ঘ্য এবং হোস্টেড ওপেন-ওয়েট মডেলে উত্তরের টেক্সটের দৈর্ঘ্য সীমিত করে।

এই এন্ডপয়েন্টে shannon-coder-1 অন্য প্রতিটি মডেলের মতো আপনার ব্যালেন্স থেকে tokens-এ চার্জ হয়।

রিকোয়েস্ট বডি 32 MiB পর্যন্ত হতে পারে। সীমা ও ব্যালেন্স

এরর

এরর OpenAI এরর বডি ব্যবহার করে: type ও message সহ একটি error অবজেক্ট; কিছুতে null মানের code ও param-ও থাকে। টেবিলে এই এন্ডপয়েন্ট সবচেয়ে বেশি যা ফেরত দেয় তা আছে। কী আবার চেষ্টা করবেন তাসহ পূর্ণ তালিকা আলাদা পেজে আছে। এরর হ্যান্ডলিং

স্ট্যাটাস Type বার্তা কখন
401 authentication_error Missing authentication
Invalid API key
কোনো API key পাঠানো হয়নি, অথবা key অজানা বা বাতিল।
400 invalid_request_error unknown model: <id> model নেই অথবা প্রকাশিত id নয়।
400 invalid_request_error No user message provided. Shannon টিয়ার: input-এ ব্যবহারকারীর কোনো টেক্সট নেই।
400 invalid_request_error <id> does not accept image input ইমেজ ইনপুট নেই এমন একটি হোস্টেড ওপেন-ওয়েট মডেলকে ইমেজ পাঠানো হয়েছে।
400 invalid_request_error <id> does not accept response_format স্ট্রাকচার্ড আউটপুট নেই এমন একটি হোস্টেড ওপেন-ওয়েট মডেলকে text.format পাঠানো হয়েছে।
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 কিন্তু কোনো ফিল্ডের type ভুল।
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. ফ্লাড প্রোটেকশন: আপনার অ্যাকাউন্টে এক মিনিটে 120টির বেশি রিকোয়েস্ট।
500 api_error The model backend failed to answer. Please retry. মডেল কোনো উত্তর তৈরি করেনি। রিকোয়েস্ট আবার পাঠান।
502 api_error The model backend failed to answer. Please retry. একই, হোস্টেড ওপেন-ওয়েট মডেলে।
504 api_error upstream timed out স্ট্রিম না করা উত্তরের সময়সীমার চেয়ে বেশি সময় নিয়েছে একটি হোস্টেড ওপেন-ওয়েট মডেল। stream true করে পাঠান।