وثائق API
استدعِ جميع ميزات الذكاء الاصطناعي عبر مفتاح API، ادفع حسب الاستخدام، تكامل ببضعة أسطر برمجية.
المصادقة
جميع طلبات API يجب أن تحتوي على ترويسة Authorization.
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
احصل على مفتاح API من صفحة „مفاتيح API" في لوحة التحكم. مفتاح واحد لكل حساب. إعادة التعيين من لوحة التحكم؛ القديم يُلغى فورًا.
إنشاء مهمة
https://nsfwrouter.xyz/api/v1/tasks/create
أرسل مهمة ذكاء اصطناعي إلى مجموعة GPU. المهام غير متزامنة، تُرجع ID. النتائج عبر API أو Webhook.
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
| tool_id | int | نعم | معرّف الأداة، من قائمة الأدوات |
| params | object | نعم | معاملات المهمة، كائن JSON، الحقول تعتمد على الأداة |
| webhook_url | string | لا | URL الاستدعاء لإشعار الاكتمال |
| priority | int | لا | أولوية المهمة 1-10، افتراضي 5 |
| idempotency_key | string | لا | مفتاح Idempotency، يمنع التكرار |
| execution_options | object | لا | خيارات التنفيذ، كائن 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. تُخصم العملات عند الإرسال الناجح.
استعلام عن مهمة
https://nsfwrouter.xyz/api/v1/tasks/query
استعلام عن التفاصيل والحالة عبر ID. أثناء المعالجة، تُجلب الحالة من مجموعة GPU. الاستعلامات المتكررة خلال 10 ثوانٍ تُرجع ذاكرة التخزين المؤقت لقاعدة البيانات.
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
| id | int | نعم | معرّف المهمة |
{
"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 | فاشلة |
قائمة المهام
https://nsfwrouter.xyz/api/v1/tasks
استعلام صفحتي عن مهام الحساب، مع مرشحات للأداة والحالة والفترة.
| المعامل | النوع | مطلوب | الوصف |
|---|---|---|---|
| page | int | لا | رقم الصفحة، افتراضي 1 |
| page_size | int | لا | حجم الصفحة، افتراضي 20، أقصى 50 |
| tool_id | int | لا | تصفية حسب الأداة |
| status | int | لا | تصفية حسب الحالة (0/1/-1/-2) |
| days | int | لا | الفترة بالأيام، افتراضي 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
}
}
| الحقل | النوع | الوصف |
|---|---|---|
| type | string | نوع النتيجة: image أو video |
| url | string | URL CDN لملف النتيجة |
| file_name | string | اسم الملف |
| file_size | int | حجم الملف (بايت) |
| mime_type | string | نوع MIME، مثل image/png، video/mp4 |
| width | int | العرض (بكسل) |
| height | int | الارتفاع (بكسل) |
رصيد الحساب
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 | الوصف |
|---|---|---|
| 20001 | api_key_required | لم يُقدم مفتاح API |
| 20001 | invalid_api_key | مفتاح API غير صالح |
| 20001 | ip_not_allowed | IP ليس في القائمة البيضاء |
| 20001 | permission_denied | تم رفض الوصول |
| 30001 | tool_not_found | الأداة غير موجودة |
| 30001 | task_not_found | المهمة غير موجودة |
| 30001 | insufficient_coins | رصيد العملات غير كافٍ |
| 30001 | task_submit_failed | فشل إرسال المهمة |
| 30001 | task_query_failed | فشل استعلام المهمة |
| 30001 | task_already_exists | المهمة موجودة بالفعل (idempotency) |
| 40001 | tool_id_required | معامل tool_id مفقود |
| 40001 | param_error | خطأ في المعاملات |
| 40001 | webhook_url_invalid | تنسيق webhook_url غير صالح |
| 40001 | params_must_be_json_object_or_array | params يجب أن يكون كائن أو مصفوفة JSON |
| 40001 | execution_options_must_be_json_object_or_array | execution_options يجب أن يكون كائن أو مصفوفة JSON |
| النطاق | الفئة |
|---|---|
| 1xxxx | خطأ في النظام |
| 2xxxx | خطأ مصادقة |
| 3xxxx | خطأ في منطق الأعمال |
| 4xxxx | خطأ في المعاملات |
| 5xxxx | خطأ في التبعية الخارجية |