سطوح سرویس
AvalAI سطوح مختلف سرویس را ارائه میدهد تا به شما انعطافپذیری در تعادل بین هزینه و عملکرد برای درخواستهای API خود بدهد. این راهنما سطوح سرویس موجود، ویژگیهای آنها و نحوه استفاده مؤثر از آنها را توضیح میدهد.
برای playbook کاملتر که سطح سرویس را با انتخاب مدل، بودجه توکن، prompt caching و jobهای async ترکیب میکند، بهینهسازی هزینه را ببینید.
نمای کلی
سطوح سرویس به شما امکان میدهند بین پردازش استاندارد با قیمتهای معمول یا هزینه کمتر با تاخیر بالاتر انتخاب کنید. به طور پیشفرض، همه درخواستها از سطح default استفاده میکنند که بهترین تعادل بین سرعت و قابلیت اطمینان را فراهم میکند.
defaultflex| سطح سرویس | توضیحات | تاخیر | قیمتگذاری | پوشش بسته اعتباری |
|---|---|---|---|---|
default | سطح استاندارد برای درخواستهای production و تعاملی | پایین | نرخهای استاندارد | ✅ بله |
flex | سطح بهینهسازی شده برای هزینه با تاخیر بالاتر | بالا (تا ۱۵ دقیقه) | ۵۰٪ کاهش | ❌ خیر |
یادداشت سازگاری با OpenAI
مستندات عمومی OpenAI حالتهای service_tier: "auto" و service_tier: "priority" را هم توضیح میدهد. در مستندات AvalAI، مقادیر عمومی و در دسترس default و flex هستند. اگر نمونهای از OpenAI را منتقل میکنید که "priority" یا تنظیمات priority در سطح project دارد، در AvalAI از "default" استفاده کنید مگر اینکه priority tier صراحتا برای حساب شما فعال شده باشد. برای fallback از flex، حذف service_tier یا تنظیم "default" درخواست را از مسیر پردازش استاندارد AvalAI عبور میدهد.
انتقال نمونههای service_tier OpenAI به AvalAI
در مرجع Responses و Chat Completions OpenAI، پاسخ شامل مقدار واقعی service_tier است که درخواست با آن سرویسدهی شده و ممکن است با مقدار درخواستی فرق کند؛ مثلا بهدلیل تنظیم سطح پروژه، fallback ظرفیت یا محدودیت ramp در priority. در AvalAI هم مقدار برگشتی service_tier را همینطور در نظر بگیرید: آن را همراه x-request-id، endpoint، مدل، latency، مصرف توکن و هزینه نهایی log کنید تا بررسیهای پشتیبانی و billing بتوانند نشان دهند درخواست با default یا flex اجرا شده است.
هنگام سازگار کردن نمونههای OpenAI:
OPENAI_API_KEYرا باAVALAI_API_KEYوhttps://api.openai.com/v1را باhttps://api.avalai.ir/v1جایگزین کنید.service_tier: "flex"را فقط برای مدلهای خانواده OpenAI که پشتیبانی میشوند و workloadهایی که تأخیر طولانیتر یا retry هنگام نبود ظرفیت را تحمل میکنند نگه دارید.service_tier: "priority"را در مثالهای عمومی AvalAI کپی نکنید، مگر اینکه priority processing صراحتا برای حساب فعال شده باشد.- برای jobهای flex، timeoutهای SDK را افزایش دهید و کارهای idempotent را با backoff نمایی یا fallback کنترلشده به پردازش default retry کنید.
سطح default
سطح سرویس default پیشفرض برای همه درخواستهای API است. این سطح ارائه میدهد:
- پردازش استاندارد: درخواستها در مسیر پیشفرض production در AvalAI پردازش میشوند
- تاخیر کمتر: زمان پاسخ سریعتر نسبت به سطح flex
- پشتیبانی کامل از مدلها: همه مدلها در دسترس هستند
- پوشش بسته اعتباری: هزینهها توسط بستههای اعتباری شما پوشش داده میشود (در صورت وجود)
- توصیه میشود برای: برنامههای پروداکشن، درخواستهای حساس به زمان و موارد استفاده تعاملی
استفاده از سطح Default
نیازی به مشخص کردن چیزی برای استفاده از سطح default نیست — این پیشفرض است. با این حال، میتوانید آن را به صراحت تنظیم کنید:
curl https://api.avalai.ir/v1/chat/completions \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"messages": [{"role": "user", "content": "سلام!"}],
"service_tier": "default"
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
response = client.chat.completions.create(
model="gpt-5.4",
messages=[{"role": "user", "content": "سلام!"}],
service_tier="default", # اختیاری، این پیشفرض است
)
print(response.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1"
});
const response = await client.chat.completions.create({
model: "gpt-5.4",
messages: [{ role: "user", content: "سلام!" }],
service_tier: "default" // اختیاری، این پیشفرض است
});
console.log(response.choices[0].message.content);package main
import (
"context"
"fmt"
"os"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig(os.Getenv("AVALAI_API_KEY"))
config.BaseURL = "https://api.avalai.ir/v1"
client := openai.NewClientWithConfig(config)
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "gpt-5.4",
Messages: []openai.ChatCompletionMessage{
{Role: "user", Content: "سلام!"},
},
// service_tier به طور پیشفرض "default" است
},
)
if err != nil {
fmt.Printf("خطا: %v\n", err)
return
}
fmt.Println(resp.Choices[0].Message.Content)
}<?php
$apiKey = getenv('AVALAI_API_KEY');
$apiUrl = 'https://api.avalai.ir/v1/chat/completions';
$data = [
'model' => 'gpt-5.4',
'messages' => [
['role' => 'user', 'content' => 'سلام!']
],
'service_tier' => 'default' // اختیاری، این پیشفرض است
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo $result['choices'][0]['message']['content'];
?>نسخه معادل Responses API
برای ادغامهای جدید، همان مقدار service_tier را نگه دارید و درخواست را به /v1/responses منتقل کنید. messages به input تبدیل میشود و متن نهایی از response.output_text خوانده میشود.
curl https://api.avalai.ir/v1/responses \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "سلام!",
"service_tier": "default"
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
response = client.responses.create(
model="gpt-5.4",
input="سلام!",
service_tier="default",
)
print(response.output_text)import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1"
});
const response = await client.responses.create({
model: "gpt-5.4",
input: "سلام!",
service_tier: "default"
});
console.log(response.output_text);سطح Flex
سطح سرویس flex با ۵۰٪ کاهش هزینه برای مدلهای منتخب OpenAI ارائه میشود، در ازای تاخیر بالاتر و احتمال تاخیر در درخواستها.
⚠️ ملاحظات مهم
سطح سرویس flex دارای تاخیر بسیار بالاتر نسبت به سطح استاندارد است:
- زمان پردازش: درخواستها ممکن است زمان بیشتری برای تکمیل ببرند
- تایماوت سرور: درخواستها میتوانند تا ۹۰۰ ثانیه (۱۵ دقیقه) برای تکمیل شدن زمان ببرند
- احتمال شکست: درخواستها ممکن است در حین پردازش تایماوت شوند یا با شکست مواجه شوند
- بدون پوشش بسته اعتباری: هزینههای سطح flex توسط بستههای اعتباری پوشش داده نمیشوند
توصیه میشود برای: پردازش دستهای، کارهای غیرحساس به زمان، بهینهسازی هزینه برای استفاده حجم بالا
مدلهای پشتیبانی شده
سطح flex فقط برای مدلهای منتخب OpenAI در دسترس است. تلاش برای استفاده از سطح flex با مدلهای پشتیبانی نشده منجر به خطا میشود.
| مدل | نامهای مستعار مدل |
|---|---|
gpt-5.5 | - |
gpt-5.4-pro | - |
gpt-5.4 | - |
gpt-5.4-mini | - |
gpt-5.4-nano | - |
gpt-5.2-chat | - |
gpt-5.2 | gpt-5.2-2025-12-11 |
gpt-5.1 | gpt-5.1-2025-11-13 |
gpt-5 | gpt-5-2025-08-07 |
gpt-5-mini | gpt-5-mini-2025-08-07 |
gpt-5-nano | gpt-5-nano-2025-08-07 |
o3 | - |
o4-mini | - |
قیمتگذاری سطح Flex
قیمتها بر اساس ۱ میلیون توکن و نشاندهنده ۵۰٪ صرفهجویی در مقایسه با قیمتگذاری سطح استاندارد هستند.
| مدل | ورودی | ورودی کش شده | خروجی |
|---|---|---|---|
gpt-5.5 | $2.50 | $0.25 | $15.00 |
gpt-5.4-pro | $15.00 | N/A | $90.00 |
gpt-5.4 | $1.25 | $0.13 | $7.50 |
gpt-5.4-mini | $0.375 | $0.0375 | $2.25 |
gpt-5.4-nano | $0.10 | $0.01 | $0.625 |
gpt-5.2-chat | $0.875 | $0.0875 | $7.00 |
gpt-5.2 | $0.875 | $0.0875 | $7.00 |
gpt-5.1 | $0.625 | $0.0625 | $5.00 |
gpt-5 | $0.625 | $0.0625 | $5.00 |
gpt-5-mini | $0.125 | $0.0125 | $1.00 |
gpt-5-nano | $0.025 | $0.0025 | $0.20 |
o3 | $1.00 | $0.25 | $4.00 |
o4-mini | $0.55 | $0.138 | $2.20 |
برای اطلاعات کامل قیمتگذاری، صفحه قیمتگذاری را ببینید.
استفاده از سطح Flex
برای استفاده از سطح flex، پارامتر "service_tier": "flex" را در درخواست API خود قرار دهید:
curl https://api.avalai.ir/v1/chat/completions \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-mini",
"messages": [{"role": "user", "content": "این سند را خلاصه کن..."}],
"service_tier": "flex"
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
# استفاده از سطح flex برای صرفهجویی در هزینه کارهای غیرحساس به زمان
response = client.chat.completions.create(
model="gpt-5-mini",
messages=[{"role": "user", "content": "این سند را خلاصه کن..."}],
service_tier="flex",
)
print(response.choices[0].message.content)
print(f"سطح سرویس استفاده شده: {response.service_tier}")import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1"
});
// استفاده از سطح flex برای صرفهجویی در هزینه کارهای غیرحساس به زمان
const response = await client.chat.completions.create({
model: "gpt-5-mini",
messages: [{ role: "user", content: "این سند را خلاصه کن..." }],
service_tier: "flex"
});
console.log(response.choices[0].message.content);
console.log(`سطح سرویس استفاده شده: ${response.service_tier}`);package main
import (
"context"
"fmt"
"os"
openai "github.com/sashabaranov/go-openai"
)
func main() {
config := openai.DefaultConfig(os.Getenv("AVALAI_API_KEY"))
config.BaseURL = "https://api.avalai.ir/v1"
client := openai.NewClientWithConfig(config)
// استفاده از سطح flex برای صرفهجویی در هزینه کارهای غیرحساس به زمان
resp, err := client.CreateChatCompletion(
context.Background(),
openai.ChatCompletionRequest{
Model: "gpt-5-mini",
Messages: []openai.ChatCompletionMessage{
{Role: "user", Content: "این سند را خلاصه کن..."},
},
// تنظیم service_tier به "flex" برای قیمتگذاری کاهش یافته
},
)
if err != nil {
fmt.Printf("خطا: %v\n", err)
return
}
fmt.Println(resp.Choices[0].Message.Content)
}<?php
$apiKey = getenv('AVALAI_API_KEY');
$apiUrl = 'https://api.avalai.ir/v1/chat/completions';
// استفاده از سطح flex برای صرفهجویی در هزینه کارهای غیرحساس به زمان
$data = [
'model' => 'gpt-5-mini',
'messages' => [
['role' => 'user', 'content' => 'این سند را خلاصه کن...']
],
'service_tier' => 'flex'
];
$ch = curl_init($apiUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'Authorization: Bearer ' . $apiKey
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
echo $result['choices'][0]['message']['content'] . "\n";
echo "سطح سرویس استفاده شده: " . $result['service_tier'] . "\n";
?>نسخه معادل Responses API
curl https://api.avalai.ir/v1/responses \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5-mini",
"input": "این سند را خلاصه کن...",
"service_tier": "flex"
}'import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
response = client.responses.create(
model="gpt-5-mini",
input="این سند را خلاصه کن...",
service_tier="flex",
)
print(response.output_text)
print(f"سطح سرویس استفاده شده: {response.service_tier}")import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1"
});
const response = await client.responses.create({
model: "gpt-5-mini",
input: "این سند را خلاصه کن...",
service_tier: "flex"
});
console.log(response.output_text);
console.log(`سطح سرویس استفاده شده: ${response.service_tier}`);فرمت پاسخ
همه پاسخهای API شامل فیلد service_tier هستند که نشان میدهد کدام سطح استفاده شده است:
{
"id": "chatcmpl-123",
"created": 1765789075,
"model": "gpt-5-mini-2025-08-07",
"object": "chat.completion",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "این خلاصه است...",
"role": "assistant"
}
}
],
"usage": {
"completion_tokens": 150,
"prompt_tokens": 50,
"total_tokens": 200
},
"service_tier": "flex",
"estimated_cost": {
"unit": "0.0001875000",
"irt": 24.63,
"exchange_rate": 131350
}
}مدیریت خطا
خطای مدل پشتیبانی نشده
اگر تلاش کنید از سطح flex با یک مدل پشتیبانی نشده استفاده کنید، یک خطا دریافت خواهید کرد:
curl -i https://api.avalai.ir/v1/chat/completions \
-H "Authorization: Bearer $AVALAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"messages": [{"role": "user", "content": "سلام"}],
"service_tier": "flex"
}'پاسخ خطا:
{
"error": {
"message": "Model 'claude-sonnet-4-6' does not support service_tier='flex'. Flex tier is only available for supported OpenAI models such as gpt-5.5, gpt-5.4, gpt-5.4-mini, gpt-5, gpt-5-mini, gpt-5-nano, o3, and o4-mini. See https://docs.avalai.ir/fa/service-tiers for more information.",
"type": "invalid_request",
"param": null,
"code": "invalid_request",
"request_id": "019b214f-4f5d-7321-8a3a-59f89d473c7c"
}
}پیادهسازی منطق تلاش مجدد
برای برنامههای پروداکشن که از سطح flex استفاده میکنند، توصیه میکنیم منطق تلاش مجدد با بازگشت به سطح استاندارد پیادهسازی کنید:
import os
from openai import OpenAI
import time
client = OpenAI(
api_key=os.environ["AVALAI_API_KEY"],
base_url="https://api.avalai.ir/v1",
)
def make_request_with_fallback(messages, model="gpt-5-mini", max_retries=3):
"""
ابتدا سطح flex را امتحان میکند، در صورت شکست به استاندارد برمیگردد.
"""
# ابتدا، با سطح flex برای صرفهجویی در هزینه تلاش کنید
try:
response = client.chat.completions.create(
model=model,
messages=messages,
service_tier="flex",
timeout=900, # تایماوت ۱۵ دقیقهای برای flex
)
return response, "flex"
except Exception as e:
print(f"سطح flex ناموفق: {e}. بازگشت به سطح استاندارد...")
# بازگشت به سطح استاندارد
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model=model, messages=messages, service_tier="default"
)
return response, "default"
except Exception as e:
if attempt < max_retries - 1:
time.sleep(2**attempt) # تاخیر نمایی
else:
raise e
# استفاده
messages = [{"role": "user", "content": "سلام!"}]
response, tier_used = make_request_with_fallback(messages)
print(f"پاسخ با استفاده از سطح {tier_used} دریافت شد")import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.AVALAI_API_KEY,
baseURL: "https://api.avalai.ir/v1"
});
async function makeRequestWithFallback(messages, model = "gpt-5-mini", maxRetries = 3) {
// ابتدا، با سطح flex برای صرفهجویی در هزینه تلاش کنید
try {
const response = await client.chat.completions.create({
model: model,
messages: messages,
service_tier: "flex"
}, { timeout: 900000 }); // تایماوت ۱۵ دقیقهای برای flex
return { response, tierUsed: "flex" };
} catch (error) {
console.log(`سطح flex ناموفق: ${error.message}. بازگشت به سطح استاندارد...`);
}
// بازگشت به سطح استاندارد با منطق تلاش مجدد
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await client.chat.completions.create({
model: model,
messages: messages,
service_tier: "default"
});
return { response, tierUsed: "default" };
} catch (error) {
if (attempt < maxRetries - 1) {
await new Promise(resolve => setTimeout(resolve, Math.pow(2, attempt) * 1000));
} else {
throw error;
}
}
}
}
// استفاده
const messages = [{ role: "user", content: "سلام!" }];
const { response, tierUsed } = await makeRequestWithFallback(messages);
console.log(`پاسخ با استفاده از سطح ${tierUsed} دریافت شد`);نسخه fallback برای Responses API
def make_response_with_fallback(prompt, model="gpt-5-mini", max_retries=3):
try:
response = client.responses.create(
model=model,
input=prompt,
service_tier="flex",
timeout=900,
)
return response, "flex"
except Exception as error:
print(f"سطح flex ناموفق: {error}. بازگشت به سطح استاندارد...")
for attempt in range(max_retries):
try:
response = client.responses.create(
model=model,
input=prompt,
service_tier="default",
)
return response, "default"
except Exception:
if attempt < max_retries - 1:
time.sleep(2**attempt)
else:
raise
response, tier_used = make_response_with_fallback("سلام!")
print(response.output_text)
print(f"پاسخ با استفاده از سطح {tier_used} دریافت شد")async function makeResponseWithFallback(prompt, model = "gpt-5-mini", maxRetries = 3) {
try {
const response = await client.responses.create({
model,
input: prompt,
service_tier: "flex"
}, { timeout: 900000 });
return { response, tierUsed: "flex" };
} catch (error) {
console.log(`سطح flex ناموفق: ${error.message}. بازگشت به سطح استاندارد...`);
}
for (let attempt = 0; attempt < maxRetries; attempt++) {
try {
const response = await client.responses.create({
model,
input: prompt,
service_tier: "default"
});
return { response, tierUsed: "default" };
} catch (error) {
if (attempt < maxRetries - 1) {
await new Promise((resolve) => setTimeout(resolve, Math.pow(2, attempt) * 1000));
} else {
throw error;
}
}
}
}
const { response, tierUsed } = await makeResponseWithFallback("سلام!");
console.log(response.output_text);
console.log(`پاسخ با استفاده از سطح ${tierUsed} دریافت شد`);بهترین شیوهها
چه زمانی از سطح default استفاده کنیم
- برنامههای تعاملی: چتباتها، دستیاران بلادرنگ، رابطهای کاربری
- کارهای حساس به زمان: زمانی که پاسخهای سریع مورد نیاز است
- جریانهای کاری پروداکشن: جایی که قابلیت اطمینان حیاتی است
- بهینهسازی بسته اعتباری: زمانی که میخواهید هزینهها توسط بستههای اعتباری پوشش داده شوند
- مهاجرت از Priority در OpenAI: وقتی نمونه upstream OpenAI مقدار
service_tier: "priority"دارد و دسترسی priority در AvalAI برای حساب شما فعال نیست، از این سطح استفاده کنید
چه زمانی از سطح Flex استفاده کنیم
- پردازش دستهای: پردازش مقادیر زیاد داده که زمان حیاتی نیست
- کارهای پسزمینه: کارهای زمانبندی شده، تحلیل داده، تولید محتوا
- بهینهسازی هزینه: زمانی که نیاز به کاهش هزینهها دارید و میتوانید تاخیرها را تحمل کنید
- بارهای کاری غیرپروداکشن: تست، توسعه، آزمایش
رویکرد ترکیبی
یک رویکرد ترکیبی برای تعادل بهینه هزینه-عملکرد در نظر بگیرید:
- از سطح default استفاده کنید برای درخواستهای رو به کاربر و حساس به زمان
- از سطح flex استفاده کنید برای کارهای پسزمینه، پردازش دستهای و عملیات حساس به هزینه
- منطق بازگشت پیادهسازی کنید برای تغییر از flex به default زمانی که flex ناموفق است یا تایماوت میشود
درباره پردازش Priority
پردازش Priority در OpenAI برای ترافیک کاربرمحور و ارزشمند طراحی شده که latency کمتر و پایدارتر از پردازش استاندارد میخواهد. این حالت جایگزین پردازش آفلاین داده، evalها یا workloadهای batch و نامنظم نیست. در مستندات و مثالهای AvalAI، service_tier: "priority" را ارسال نکنید مگر اینکه حساب و route شما صراحتا آن را پشتیبانی کند؛ برای فراخوانیهای production حساس به latency از default استفاده کنید و flex را فقط برای کارهای حساس به هزینه که ظرفیت کندتر یا موقتا ناموجود را تحمل میکنند به کار ببرید.
بستههای اعتباری و سطوح سرویس
مهم
بستههای اعتباری فقط استفاده از سطح استاندارد را پوشش میدهند. هنگام استفاده از service_tier: "flex"، هزینهها از موجودی استاندارد حساب شما کسر میشود، نه از تخصیص بستههای اعتباری.
برای اطلاعات بیشتر درباره بستههای اعتباری، بستههای اعتباری را ببینید.
مرجع API
پارامتر service_tier در نقاط پایانی API زیر پشتیبانی میشود:
منابع مرتبط
- قیمتگذاری - اطلاعات کامل قیمتگذاری شامل نرخهای سطح flex
- بستههای اعتباری - درباره بستههای اعتباری و محدودیتهای آنها بیاموزید
- بهترین شیوههای استقرار - برنامهریزی observability و fallback برای service tier
- API تکمیل گفتگو - مرجع API برای تکمیل گفتگو
- API پاسخها - مرجع API برای Responses API
- مدیریت خطا - بهترین شیوهها برای مدیریت خطاهای API