احرازینو

مستندات API هوش مصنوعی

دو نشانی، یک کلید. هر چیزی که در این صفحه است از همان کدی آمده که درخواست شما را پاسخ می‌دهد.

کلید را از پنل بگیرید

حساب کسب‌وکار بی‌درنگ ساخته می‌شود و کلید را خودتان می‌سازید.

ساخت حساب کسب‌وکار

سند OpenAPI OAS 3.0.3

فایل را در Postman یا Swagger وارد کنید، یا از رویش کلاینت تولید کنید. ⚠️ سند در لحظهٔ دانلود ساخته می‌شود، پس فهرست سرویس‌ها و قیمت‌ها همانی است که همان لحظه فعال است.

دانلود سند OpenAPI

احراز هویت

کلید را در هدر 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_allowedIP فراخوان در فهرست مجاز کلید نیست. فهرست را در پنل به‌روز کنید.
۴۰۳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) را دست‌کم ۱۲۰ ثانیه بگذارید. پاسخ‌های بلند زمان می‌برند و مهلت کوتاه یعنی شما پاسخ را نمی‌بینید در حالی که صورتحسابش صادر شده.

آنچه نگه نمی‌داریم

متن پیام‌ها و پاسخ مدل ذخیره نمی‌شود. از هر فراخوان فقط نام مدل، وضعیت، شمار توکن، مبلغ و زمان ثبت می‌شود، همان چیزی که در بخش هوش مصنوعی پنل می‌بینید.