وثائق API

وثائق API

استدعِ جميع ميزات الذكاء الاصطناعي عبر مفتاح API، ادفع حسب الاستخدام، تكامل ببضعة أسطر برمجية.

المصادقة

جميع طلبات API يجب أن تحتوي على ترويسة Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

احصل على مفتاح API من صفحة „مفاتيح API" في لوحة التحكم. مفتاح واحد لكل حساب. إعادة التعيين من لوحة التحكم؛ القديم يُلغى فورًا.

إنشاء مهمة

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

أرسل مهمة ذكاء اصطناعي إلى مجموعة GPU. المهام غير متزامنة، تُرجع ID. النتائج عبر API أو Webhook.

معاملات الطلب
المعامل النوع مطلوب الوصف
tool_idintنعممعرّف الأداة، من قائمة الأدوات
paramsobjectنعممعاملات المهمة، كائن JSON، الحقول تعتمد على الأداة
webhook_urlstringلاURL الاستدعاء لإشعار الاكتمال
priorityintلاأولوية المهمة 1-10، افتراضي 5
idempotency_keystringلامفتاح Idempotency، يمنع التكرار
execution_optionsobjectلاخيارات التنفيذ، كائن JSON
مثال الطلب
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. الاستعلامات المتكررة خلال 10 ثوانٍ تُرجع ذاكرة التخزين المؤقت لقاعدة البيانات.

معاملات الاستعلام
المعامل النوع مطلوب الوصف
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

إذا حُدد webhook_url، يُرسل POST عند الاكتمال أو الفشل أو الإلغاء. الجسم JSON.

ترويسات طلب الاستدعاء
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
جسم طلب الاستدعاء
{
  "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 أو انتهاء المهلة (10 ثوانٍ)، يعيد النظام المحاولة حتى 5 مرات مع تراجع أُسي.

رموز الأخطاء

جميع استجابات الخطأ تستخدم تنسيقًا موحدًا: {"code": رمز, "message": "معرّف", "data": {}}

رمز الخطأ message الوصف
20001api_key_requiredلم يُقدم مفتاح API
20001invalid_api_keyمفتاح API غير صالح
20001ip_not_allowedIP ليس في القائمة البيضاء
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
40001execution_options_must_be_json_object_or_arrayexecution_options يجب أن يكون كائن أو مصفوفة JSON
نطاقات رموز الأخطاء
النطاق الفئة
1xxxxخطأ في النظام
2xxxxخطأ مصادقة
3xxxxخطأ في منطق الأعمال
4xxxxخطأ في المعاملات
5xxxxخطأ في التبعية الخارجية