کارهای async

POST /v1/async/<verb> — همان درخواست، پاسخ ۲۰۲ و دریافت نتیجه با poll.

POSThttps://iranrouter.com/v1/async/{verb}

دوقلوی async هر مسیر. همان بدنه‌ای را که به مسیر عادی می‌فرستید به /v1/async/<verb> بفرستید؛ بلافاصله ۲۰۲ و یک شناسهٔ کار می‌گیرید و کار در پس‌زمینه از همان مسیر، با همان قوانین و همان صورت‌حساب انجام می‌شود. برای ساخت ویدئو، تصویر یا صدا که دقیقه‌ها طول می‌کشد، یا هر وقت نمی‌خواهید اتصال باز بماند.

verbهمان بدنهٔ
chat/completionschat/completions
responsesresponses
messagesmessages
embeddings · rerank · moderations · completionsهمان مسیرها
images/generations · audio/speech · videosهمان مسیرها
Shell
curl https://iranrouter.com/v1/async/videos \
  -H "Authorization: Bearer ir-..." \
  -H "Content-Type: application/json" \
  -d '{"model": "alibaba/wan-3.0", "prompt": "یک گربه روی دوچرخه", "duration": 5}'
JSON
{
  "id": "3f6c...-job-id",
  "object": "async.job",
  "verb": "videos",
  "status": "queued",
  "created_at": "2026-09-16T10:00:00.000Z",
  "poll_url": "/v1/async/videos/3f6c...-job-id"
}
GEThttps://iranrouter.com/v1/async/{verb}/{id}

وضعیت کار: queued، running، completed یا failed. با completed، فیلد result همان بدنه‌ای است که مسیر عادی برمی‌گرداند (با usage.cost_rial)؛ برای پاسخ باینری (audio/speech) به‌جای result یک content_url می‌آید. با failed، فیلد error همان پاکت خطای مسیر عادی است و http_status همان کد — یعنی یک ۴۰۲ موجودی یا ۴۲۹ نرخ، همان‌جا دیده می‌شود.

Shell
curl https://iranrouter.com/v1/async/videos/3f6c...-job-id -H "Authorization: Bearer ir-..."
JSON
{
  "id": "3f6c...-job-id",
  "object": "async.job",
  "verb": "videos",
  "status": "completed",
  "http_status": 200,
  "result": { "id": "…", "object": "video.job", "status": "completed", "content_url": "/v1/videos/…/content", "usage": { "cost_rial": 1250000 } }
}
  • stream همیشه خاموش است: نتیجه یک‌جا ذخیره می‌شود.
  • هر کاربر هم‌زمان تا ۲۰ کار باز و در هر ساعت تا ۶۰۰ کار؛ بیشتر از آن ۴۲۹ با کد async_limit_reached یا async_rate_reached.
  • نتیجه ۲۴ ساعت نگه داشته می‌شود. هر چند ثانیه یک بار poll کنید؛ ویدئو معمولاً چند دقیقه طول می‌کشد.
  • آپلودهای multipart (audio/transcriptions، translations) دوقلوی async ندارند.
  • Idempotency-Key روی chat/completions و مسیرهای unary همان‌طور که در حالت عادی کار می‌کند اینجا هم کار می‌کند.