مستندات API
IranRouter یک HTTP API سازگار با OpenAI ارائه میدهد.
سازندهٔ درخواست
کلید API را بچسبانید و ارسال را بزنید — روی /api/v1 زندهٔ همین سرور صدا زده میشود.
آدرس پایه
https://iranrouter.net/api/v1
احراز هویت
هدر Authorization: Bearer ir-… را از داشبورد ← کلیدهای API بفرستید. پاسخهای موفق chat شامل X-Request-Id هستند.
فهرست مدلها
GET /api/v1/models
بررسی کلید / اعتبار
GET /api/v1/key Authorization: Bearer $IRANROUTER_API_KEY
پاسخ شامل free_requests_remaining، free_models و topup_url است.
سطح رایگان
هر ایمیل 20 درخواست رایگان chat
مشترک روی deepseek/deepseek-flash و openai/gpt-4o-mini میگیرد.
فراخوانیهای رایگان با iranrouter.billed_as = "free" ثبت میشوند و اعتبار را کم نمیکنند.
وقتی سهمیه تمام شود (و کیف پول خالی باشد)، API کد HTTP 402 برمیگرداند:
{
"error": {
"message": "Free quota exhausted (20 requests on deepseek-flash / GPT-4o-mini). Charge your account to continue. Top up here: https://iranrouter.net/dashboard/credits",
"type": "insufficient_quota",
"code": "free_quota_exhausted",
"topup_url": "https://iranrouter.net/dashboard/credits"
}
}
جستجوی generation
GET /api/v1/generation/{request_id}
Authorization: Bearer $IRANROUTER_API_KEY
از iranrouter.request_id / X-Request-Id پاسخ chat استفاده کنید.
محدودیت نرخ
مسیرهای احراز هویتشده X-RateLimit-Limit، X-RateLimit-Remaining و X-RateLimit-Reset برمیگردانند (۶۰ درخواست / ۶۰ثانیه به ازای هر کلید).
Chat completions
POST /api/v1/chat/completions
Content-Type: application/json
Authorization: Bearer $IRANROUTER_API_KEY
{
"model": "iranrouter/demo-chat",
"messages": [
{"role": "user", "content": "Hello"}
],
"temperature": 0.7,
"max_tokens": 512,
"seed": 42,
"stream": false
}
همچنین top_p، stop، جریمهها، response_format، tools، بخشهای multipart در content و ترجیحات provider بهسبک OpenRouter را میپذیرد. خطاهای اعتبارسنجی / احراز هویت با فرمت OpenAI یعنی {"error":{message,type,code,param}} هستند.
Streaming
"stream": true را برای SSE بهسبک OpenAI (text/event-stream) بگذارید؛ با data: [DONE] تمام میشود. chunk نهایی وقتی stream_options.include_usage true باشد (پیشفرض) شامل usage است.
Embeddings
POST /api/v1/embeddings
Authorization: Bearer $IRANROUTER_API_KEY
{
"model": "iranrouter/demo-embed",
"input": "سلام دنیا",
"dimensions": 1536,
"encoding_format": "float"
}
تصاویر (BFL / FLUX)
تولید تصویر سازگار با OpenAI که به Black Forest Labs (api.bfl.ai) مسیریابی میشود. مدلها: bfl/flux-2-pro، bfl/flux-2-klein-4b، bfl/flux-pro-1.1.
POST /api/v1/images/generations
Authorization: Bearer $IRANROUTER_API_KEY
{
"model": "bfl/flux-2-pro",
"prompt": "a teal fox in the desert at dusk",
"size": "1024x1024"
}
ویدیو (BFL FLUX 3)
ویدیوی async BFL تا آماده شدن در سمت سرور poll میشود. حالتها: t2v، i2v (keyframes)، v2v (start_video).
POST /api/v1/videos/generations
Authorization: Bearer $IRANROUTER_API_KEY
{
"model": "bfl/flux-3-video",
"prompt": "waves crashing at sunset, cinematic",
"mode": "t2v",
"duration": 5,
"resolution": "hd",
"aspect_ratio": "16:9",
"generate_audio": true
}
ترجیحات ارائهدهنده
شیء اختیاری provider بهسبک OpenRouter برای کنترل ترتیب / ignore / fallback.
{
"provider": {
"order": ["mock-fallback", "mock-primary"],
"ignore": ["mock-fail"],
"allow_fallbacks": true
}
}
رفتار Fallback
هر مدل میتواند چند endpoint ارائهدهنده با اولویت داشته باشد.
روتر آنها را بهترتیب امتحان میکند. iranrouter/demo-chat را امتحان کنید —
اولین endpoint طوری تنظیم شده که خطا بدهد تا failover را در metadata پاسخ ببینید.
Upstreamهای زنده
UPSTREAM_OPENAI_API_KEY،
UPSTREAM_ANTHROPIC_API_KEY،
UPSTREAM_DEEPSEEK_API_KEY یا
UPSTREAM_BFL_API_KEY را در .env بگذارید،
سپس دوباره seed کنید. بدون آنها، درایورهای mock استک را بهصورت محلی قابل اجرا نگه میدارند (از جمله تصویر/ویدیوی BFL).