مستندات API

مستندات API

همه قابلیت‌های AI را از طریق کلید API فراخوانی کنید، پرداخت به ازای استفاده، یکپارچه‌سازی در چند خط کد.

احراز هویت

همه درخواست‌های API باید شامل هدر Authorization باشند.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

کلید API را از صفحه «کلیدهای API» در کنسول بگیرید. یک کلید به ازای هر حساب. بازنشانی در کنسول؛ قدیمی فوراً باطل می‌شود.

ساخت وظیفه

POST https://nsfwrouter.xyz/api/v1/tasks/create

وظیفه AI به خوشه GPU بفرستید. وظایف ناهمگام، ID برمی‌گردانند. نتایج از طریق API یا Webhook.

پارامترهای درخواست
پارامتر نوع الزامی توضیح
tool_idintبلهشناسه ابزار، از فهرست ابزارها
paramsobjectبلهپارامترهای وظیفه، JSON object، فیلدها بسته به ابزار
webhook_urlstringخیرURL callback برای اعلان تکمیل
priorityintخیراولویت وظیفه 1-10، پیش‌فرض 5
idempotency_keystringخیرکلید idempotency، از تکرار جلوگیری می‌کند
execution_optionsobjectخیرگزینه‌های اجرا، JSON object
نمونه درخواست
curl -X POST https://nsfwrouter.xyz/api/v1/tasks/create \
  -H "Authorization: Bearer sk-xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "tool_id": 1,
    "params": {
      "image": "https://example.com/photo.jpg",
      "prompt": "a beautiful landscape"
    },
    "webhook_url": "https://your-server.com/webhook"
  }'
نمونه پاسخ
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

موجودی قبل از فراخوانی بررسی می‌شود. ناکافی = خطای insufficient_coins. سکه‌ها در ارسال موفق کسر می‌شوند.

پرس‌وجوی وظیفه

GET https://nsfwrouter.xyz/api/v1/tasks/query

جزئیات و وضعیت را بر اساس ID پرس‌وجو کنید. هنگام پردازش، وضعیت از خوشه GPU گرفته می‌شود. پرس‌وجوی مکرر در ۱۰ ثانیه DB cache برمی‌گرداند.

پارامترهای پرس‌وجو
پارامتر نوع الزامی توضیح
idintبلهشناسه وظیفه
نمونه پاسخ
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 1,
      "task_output_json": [
        {
          "type": "image",
          "url": "https://cdn.example.com/outputs/abc123.png",
          "file_name": "abc123.png",
          "file_size": 1024000,
          "mime_type": "image/png",
          "width": 1024,
          "height": 1024
        }
      ],
      "consume_coins": 5,
      "created_at": 1718200000,
      "completed_at": 1718200015
    }
  }
}
مقادیر وضعیت وظیفه
status معنی
0در حال پردازش
1تکمیل شد
-1لغو شد
-2ناموفق

فهرست وظایف

GET https://nsfwrouter.xyz/api/v1/tasks

پرس‌وجوی صفحه‌بندی شده وظایف حساب، با فیلتر روی ابزار، وضعیت و دوره.

پارامترهای پرس‌وجو
پارامتر نوع الزامی توضیح
pageintخیرشماره صفحه، پیش‌فرض 1
page_sizeintخیراندازه صفحه، پیش‌فرض 20، حداکثر 50
tool_idintخیرفیلتر بر اساس ابزار
statusintخیرفیلتر بر اساس وضعیت (0/1/-1/-2)
daysintخیردوره به روز، پیش‌فرض 30
نمونه پاسخ
{
  "code": 0,
  "message": "success",
  "data": {
    "list": [
      {
        "id": 123,
        "tool_id": 1,
        "status": 1,
        "task_output_json": [
          {
            "type": "image",
            "url": "https://cdn.example.com/outputs/abc123.png",
            "file_name": "abc123.png",
            "file_size": 1024000,
            "mime_type": "image/png",
            "width": 1024,
            "height": 1024
          }
        ],
        "error": null,
        "consume_coins": 5,
        "created_at": 1718200000,
        "completed_at": 1718200015
      },
      {
        "id": 122,
        "tool_id": 3,
        "status": 0,
        "task_output_json": [],
        "error": null,
        "consume_coins": 10,
        "created_at": 1718199000,
        "completed_at": 0
      }
    ],
    "page": 1,
    "page_size": 20
  }
}
توضیح فیلدهای task_output_json
فیلد نوع توضیح
typestringنوع نتیجه: image یا video
urlstringURL CDN برای فایل نتیجه
file_namestringنام فایل
file_sizeintاندازه فایل (بایت)
mime_typestringنوع MIME، مثلاً image/png, video/mp4
widthintعرض (پیکسل)
heightintارتفاع (پیکسل)

موجودی حساب

GET https://nsfwrouter.xyz/api/v1/account/balance

موجودی سکه، کل شارژ و کل مصرف را بررسی کنید.

نمونه پاسخ
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Webhook callback

اگر webhook_url مشخص شده باشد، POST در تکمیل، شکست یا لغو ارسال می‌شود. Body به JSON.

هدرهای درخواست callback
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
body درخواست callback
{
  "event": "task.finished",
  "task": {
    "id": 123,
    "status": 1,
    "task_output_json": [
      {
        "type": "image",
        "url": "https://cdn.example.com/outputs/abc123.png",
        "file_name": "abc123.png",
        "file_size": 1024000,
        "mime_type": "image/png",
        "width": 1024,
        "height": 1024
      }
    ],
    "consume_coins": 5,
    "created_at": 1718200000,
    "completed_at": 1718200015
  }
}

سرور شما باید HTTP 2xx برگرداند. در non-2xx یا timeout (10 ثانیه)، سیستم تا 5 بار با backoff نمایی تلاش مجدد می‌کند.

کدهای خطا

همه پاسخ‌های خطا از فرمت یکسان استفاده می‌کنند: {"code": کد, "message": "identifier", "data": {}}

کد خطا message توضیح
20001api_key_requiredکلید API ارائه نشده
20001invalid_api_keyکلید API نامعتبر
20001ip_not_allowedIP در whitelist نیست
20001permission_deniedدسترسی رد شد
30001tool_not_foundابزار یافت نشد
30001task_not_foundوظیفه یافت نشد
30001insufficient_coinsموجودی سکه ناکافی
30001task_submit_failedارسال وظیفه ناموفق
30001task_query_failedپرس‌وجوی وظیفه ناموفق
30001task_already_existsوظیفه از قبل وجود دارد (idempotency)
40001tool_id_requiredپارامتر tool_id غایب
40001param_errorخطای پارامتر
40001webhook_url_invalidفرمت webhook_url نامعتبر
40001params_must_be_json_object_or_arrayparams باید JSON object یا array باشد
40001execution_options_must_be_json_object_or_arrayexecution_options باید JSON object یا array باشد
بازه‌های کدهای خطا
بازه دسته
1xxxxخطای سیستم
2xxxxخطای احراز هویت
3xxxxخطای منطق کسب‌وکار
4xxxxخطای پارامتر
5xxxxخطای وابستگی خارجی