مستندات API هوش مصنوعی
دو نشانی، یک کلید. هر چیزی که در این صفحه است از همان کدی آمده که درخواست شما را پاسخ میدهد.
کلید را از پنل بگیرید
حساب کسبوکار بیدرنگ ساخته میشود و کلید را خودتان میسازید.
سند OpenAPI OAS 3.0.3
فایل را در Postman یا Swagger وارد کنید، یا از رویش کلاینت تولید کنید. ⚠️ سند در لحظهٔ دانلود ساخته میشود، پس فهرست سرویسها و قیمتها همانی است که همان لحظه فعال است.
احراز هویت
کلید را در هدر Authorization بفرستید. هدر x-api-key هم پذیرفته میشود.
Authorization: Bearer ehr_live_…⚠️ کلید فقط سمت سرور نگهداری شود. کلیدی که در جاوااسکریپت مرورگر یا اپلیکیشن موبایل بنشیند، در دسترس هر کسی است که ابزار توسعهدهندهٔ مرورگر را باز کند.
اگر IP سرورتان ثابت است، هنگام ساخت کلید فهرست IP مجاز را پر کنید؛ آنوقت کلیدِ نشتکرده از جای دیگر کار نمیکند.
گفتوگو با مدل زبانی
POST https://ehrazino.com/api/v1/ai/chat/completions/
{
"model": "amazon-nova-pro-v1",
"messages": [
{ "role": "system", "content": "پاسخها را کوتاه و فارسی بده." },
{ "role": "user", "content": "پایتخت ایران کجاست؟" }
],
"max_tokens": 200,
"temperature": 0.3
}| فیلد | لازم | توضیح |
|---|---|---|
model | بله | نام مدل، از جدول «مدلهای در دسترس». |
messages | بله | آرایهای از پیامها. هر پیام role (system | user | assistant) و content دارد. نقش ناشناخته رد میشود و بیصدا به user تبدیل نمیشود. |
max_tokens | خیر | سقف طول پاسخ. بیشتر از سقف مدل بفرستید تا همان سقف کوتاه میشود. نفرستید، سقف پیشفرض مدل اعمال میشود. |
temperature | خیر | میزان تنوع پاسخ. نفرستید، پیشفرض مدل. |
stream | خیر | true یعنی پاسخ تکهتکه و بهصورت SSE بیاید. |
پاسخ موفق
{
"ok": true,
"requestId": "req_7f3c…",
"model": "amazon-nova-pro-v1",
"content": "تهران.",
"usage": { "promptTokens": 42, "completionTokens": 3 },
"finishReason": "stop",
"billing": { "amountRial": 710, "balanceRial": 48912340 }
}🔴 billing.amountRial مبلغی است که واقعاً کسر شد و نه سقفی که پیش از تماس قفل شده بود. تفاوت این دو همان لحظه به موجودی برمیگردد.
requestId را نگه دارید. تنها چیزی است که برای پیگیری یک فراخوان در پشتیبانی به کار میآید، چون متن پیامها را نگه نمیداریم.
پاسخ جریانی
با فرستادن "stream": true، پاسخ بهصورت text/event-stream تکهتکه میآید. هر تکه یک خط data: است.
data: {"requestId":"req_7f3c…","delta":"ته"}
data: {"requestId":"req_7f3c…","delta":"ران."}
data: {"requestId":"req_7f3c…","done":true,"usage":{"promptTokens":42,"completionTokens":3},"billing":{"amountRial":710}}
data: [DONE]⚠️ صورتحساب در تکهٔ پایانی میآید، نه در ابتدا، چون هزینه تا پایان تولید معلوم نیست. اگر ارتباط را وسط کار قطع کنید، بابت همان مقداری که تولید شده هزینه کسر میشود؛ مدل تا آن لحظه کار کرده است.
اگر پیش از شروع جریان خطایی رخ دهد، کلید نامعتبر، موجودی ناکافی، مدل خاموش، پاسخ یک JSON معمولی با کد وضعیت مناسب است و نه جریان. پس همیشه content-type را بررسی کنید.
تولید تصویر
POST https://ehrazino.com/api/v1/ai/chat/completions/
مدل تصویرساز مسیر جدایی ندارد: همان نشانی و همان بدنهٔ گفتوگو، و تصویر در کلید images پاسخ برمیگردد. توصیفِ تصویر را مثل یک پیام معمولی بفرستید.
{
"model": "google-gemini-2.5-flash-image",
"messages": [
{ "role": "user", "content": "یک فنجان قهوه روی میز چوبی، نور طبیعی" }
],
"max_tokens": 4096
}پاسخ موفق
{
"ok": true,
"requestId": "req_9b1d…",
"model": "google-gemini-2.5-flash-image",
"content": "",
"images": ["data:image/png;base64,iVBORw0KGgo…"],
"usage": { "promptTokens": 18, "completionTokens": 1290 },
"billing": { "amountRial": 531300, "balanceRial": 48381040 }
}🔴 content برای مدل تصویرساز معمولاً خالی است و این طبیعی است؛ خروجی در images است. هر عضو یکdata URI است، پس پاسخ میتواند چند مگابایت باشد.
⚠️ قیمت این مدلها هم توکنی است و نه ثابت بهازای هر تصویر: تصویر خروجی به توکن شمرده میشود. مبلغ کسرشده مثل همیشه درbilling نوشته است، و timeout سمت خودتان را دستکم ۱۲۰ ثانیه بگذارید.
مدلهای متنی برای همین کلید images آرایهٔ خالی میدهند، پس لازم نیست دو شکل پاسخ را جدا مدیریت کنید.
خطاها
هر پاسخ ناموفق همین شکل را دارد و کد وضعیت HTTP هم با آن میخواند:
{
"ok": false,
"requestId": "req_7f3c…",
"error": { "code": "insufficient_funds", "message": "…" },
"billing": { "amountRial": 0, "balanceRial": 120000 }
}| وضعیت | کد | معنا و کاری که باید کرد |
|---|---|---|
| ۴۰۰ | invalid_json | بدنه JSON معتبر نیست. هزینهای ندارد. |
| ۴۰۰ | invalid_input | نام مدل نیامده، فهرست پیامها نامعتبر است، یا مدل ورودی را رد کرده. هزینهای ندارد. |
| ۴۰۱ | unauthorized | کلید نیامده یا معتبر نیست. کلید تازه را از پنل بسازید. |
| ۴۰۳ | ip_not_allowed | IP فراخوان در فهرست مجاز کلید نیست. فهرست را در پنل بهروز کنید. |
| ۴۰۳ | model_not_enabled | این مدل همین حالا ارائه نمیشود. جدول «مدلهای در دسترس» را ببینید. |
| ۴۰۳ | organization_inactive | حساب کسبوکار فعال نیست. با پشتیبانی تماس بگیرید. |
| ۴۰۲ | insufficient_funds | موجودی برای سقف این فراخوان کافی نیست. پیام میگوید سقف چقدر است. پنل را شارژ کنید. |
| ۴۰۴ | unknown_model | چنین مدلی وجود ندارد. املای نام مدل را بررسی کنید. |
| ۴۲۹ | rate_limited | سقف فراخوان در دقیقه رد شده. به اندازهٔ Retry-After صبر کنید. هزینهای ندارد. |
| ۵۰۳ | model_unavailable | مدل پاسخ نداد یا در مهلت مقرر نرسید. قابل تلاش دوباره. هزینهای ندارد. |
| ۵۰۳ | ai_disabled | ارائهٔ هوش مصنوعی موقتاً بسته است. سرویسهای استعلام مستقلاند و باز میمانند. |
| ۵۰۳ | api_disabled | ارائهٔ API موقتاً بهکلی بسته است. با پشتیبانی تماس بگیرید. |
| ۵۰۳ | pricing_unavailable | پیکربندی قیمتگذاری ناقص است. خطای ماست و نه شما؛ با پشتیبانی تماس بگیرید. |
| ۵۰۰ | internal_error | خطای پیشبینینشدهٔ ما. شناسهٔ درخواست را به پشتیبانی بدهید. |
⚠️ 429 هدر Retry-After دارد؛ بهجای تلاش فوری، همان اندازه صبر کنید.
صورتحساب
- پیش از تماس با مدل، سقف هزینه از موجودی قفل میشود. پس از پاسخ، مبلغ واقعی کسر و باقی همان لحظه آزاد میشود.
- سقف خروجی را با
max_tokensخودتان تعیین میکنید. اگر نفرستید، سقف پیشفرض همان مدل اعمال میشود. - ورودی نامعتبر، در دسترس نبودن مدل و عبور از سقف نرخ هزینهای ندارند.
- اگر ارائهدهنده شمار توکن را گزارش نکند، فراخوان رایگان حساب میشود. ضررش با ماست، نه شما.
برای برآورد پیش از مصرف، ماشینحساب قیمت متن خودتان را میگیرد و عدد میدهد. شرح کلی سرویس و کاربردهایش در صفحهٔ API هوش مصنوعی است.
مدلهای در دسترس
| مدل | نشانی | سقف پاسخ |
|---|---|---|
amazon-nova-pro-v1Nova Pro 1.0 | /api/v1/ai/chat/completions/ | ۵٬۱۲۰ |
anthropic-claude-fable-5.1Claude Fable 5.1 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
anthropic-claude-haiku-4.5Claude Haiku 4.5 | /api/v1/ai/chat/completions/ | ۶۴٬۰۰۰ |
anthropic-claude-opus-4.5Claude Opus 4.5 | /api/v1/ai/chat/completions/ | ۶۴٬۰۰۰ |
anthropic-claude-opus-5.5Claude Opus 5.5 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
anthropic-claude-sonnet-4.5Claude Sonnet 4.5 | /api/v1/ai/chat/completions/ | ۶۴٬۰۰۰ |
anthropic-claude-sonnet-5.5Claude Sonnet 5.5 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
cohere-command-aCommand A | /api/v1/ai/chat/completions/ | ۸٬۱۹۲ |
deepseek-deepseek-v3.2DeepSeek V3.2 | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
deepseek-deepseek-v4-proDeepSeek V4 Pro 0423 | /api/v1/ai/chat/completions/ | ۳۸۴٬۰۰۰ |
deepseek-deepseek-v4.1-flashDeepSeek V4.1 Flash | /api/v1/ai/chat/completions/ | ۹۴۳٬۷۱۸ |
deepseek-deepseek-r1DeepSeek R1 | /api/v1/ai/chat/completions/ | ۱۶٬۰۰۰ |
google-gemini-2.5-flashGemini 2.5 Flash | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۵ |
google-gemini-2.5-proGemini 2.5 Pro | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
google-gemini-3.1-flash-liteGemini 3.1 Flash Lite | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
google-gemini-3.5-flashGemini 3.5 Flash | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
google-gemini-3.8-flashGemini 3.8 Flash | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
google-gemma-4-31b-itGemma 4 31B | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
meta-llama-llama-3.3-70b-instructLlama 3.3 70B Instruct | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
meta-llama-llama-4-maverickLlama 4 Maverick | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
meta-llama-llama-4-scoutLlama 4 Scout | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
minimax-minimax-m3MiniMax M3 | /api/v1/ai/chat/completions/ | ۵۱۲٬۰۰۰ |
moonshotai-kimi-k2-thinkingKimi K2 Thinking | /api/v1/ai/chat/completions/ | ۹۸٬۳۰۴ |
openai-gpt-4oGPT-4o | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
openai-gpt-4o-miniGPT-4o-mini | /api/v1/ai/chat/completions/ | ۱۶٬۳۸۴ |
openai-gpt-5GPT-5 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.3-codexGPT-5.3-Codex | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.4-miniGPT-5.4 Mini | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.4-nanoGPT-5.4 Nano | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.5GPT-5.5 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.5-proGPT-5.5 Pro | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-6-solGPT-6 Sol | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-6.1-solGPT-6.1 Sol | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-6.1-sol-proGPT-6.1 Sol Pro | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-oss-120bgpt-oss-120b | /api/v1/ai/chat/completions/ | ۱۱۷٬۹۶۴ |
openai-o3OpenAI o3 | /api/v1/ai/chat/completions/ | ۱۰۰٬۰۰۰ |
perplexity-sonar-proSonar Pro | /api/v1/ai/chat/completions/ | ۸٬۰۰۰ |
perplexity-sonar-reasoning-proSonar Reasoning Pro | /api/v1/ai/chat/completions/ | ۱۱۵٬۲۰۰ |
qwen-qwen3-coder-plusQwen3 Coder Plus | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
qwen-qwen3-maxQwen3 Max | /api/v1/ai/chat/completions/ | ۶۵٬۵۳۶ |
x-ai-grok-4.6Grok 4.6 | /api/v1/ai/chat/completions/ | ۴۵۰٬۰۰۰ |
x-ai-grok-4.7Grok 4.7 | /api/v1/ai/chat/completions/ | ۴۵۰٬۰۰۰ |
google-gemini-2.5-flash-imageNano Banana (Gemini 2.5 Flash Image) | /api/v1/ai/chat/completions/ | ۸٬۱۹۲ |
google-gemini-3.1-flash-imageNano Banana 2 (Gemini 3.1 Flash Image) | /api/v1/ai/chat/completions/ | ۳۲٬۷۶۸ |
google-gemini-3.1-flash-lite-imageNano Banana 2 Lite (Gemini 3.1 Flash Lite Image) | /api/v1/ai/chat/completions/ | ۵۸٬۹۸۲ |
google-gemini-3-pro-imageNano Banana Pro (Gemini 3 Pro Image) | /api/v1/ai/chat/completions/ | ۳۲٬۷۶۸ |
openai-gpt-5-imageGPT-5 Image | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5-image-miniGPT-5 Image Mini | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
openai-gpt-5.4-image-2GPT-5.4 Image 2 | /api/v1/ai/chat/completions/ | ۱۲۸٬۰۰۰ |
نمونهٔ کد
curl
curl -X POST 'https://ehrazino.com/api/v1/ai/chat/completions/' \
-H 'Authorization: Bearer ehr_live_…' \
-H 'Content-Type: application/json' \
-d '{"model":"amazon-nova-pro-v1","messages":[{"role":"user","content":"سلام"}],"max_tokens":200}'Node.js
const response = await fetch('https://ehrazino.com/api/v1/ai/chat/completions/', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.EHRAZINO_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'amazon-nova-pro-v1',
messages: [{ role: 'user', content: prompt }],
max_tokens: 200,
}),
});
const body = await response.json();
if (body.ok) {
console.log(body.content, body.billing.amountRial);
}Python
import os, requests
response = requests.post(
"https://ehrazino.com/api/v1/ai/chat/completions/",
headers={"Authorization": f"Bearer {os.environ['EHRAZINO_API_KEY']}"},
json={
"model": "amazon-nova-pro-v1",
"messages": [{"role": "user", "content": prompt}],
"max_tokens": 200,
},
timeout=120,
)
body = response.json()
if body.get("ok"):
print(body["content"], body["billing"]["amountRial"])PHP / وردپرس
$response = wp_remote_post( 'https://ehrazino.com/api/v1/ai/chat/completions/', array(
'timeout' => 120,
'headers' => array(
'Authorization' => 'Bearer ' . EHRAZINO_API_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'model' => 'amazon-nova-pro-v1',
'messages' => array( array( 'role' => 'user', 'content' => $prompt ) ),
'max_tokens' => 200,
) ),
) );
if ( is_wp_error( $response ) ) {
return; // شبکه قطع بود، دوباره تلاش کنید.
}
$body = json_decode( wp_remote_retrieve_body( $response ), true );
if ( ! empty( $body['ok'] ) ) {
// $body['content'] پاسخ مدل است.
}⚠️ مهلت (timeout) را دستکم ۱۲۰ ثانیه بگذارید. پاسخهای بلند زمان میبرند و مهلت کوتاه یعنی شما پاسخ را نمیبینید در حالی که صورتحسابش صادر شده.
آنچه نگه نمیداریم
متن پیامها و پاسخ مدل ذخیره نمیشود. از هر فراخوان فقط نام مدل، وضعیت، شمار توکن، مبلغ و زمان ثبت میشود، همان چیزی که در بخش هوش مصنوعی پنل میبینید.
