เอกสาร API
เรียกฟีเจอร์ AI ทั้งหมดผ่านคีย์ API จ่ายตามการใช้งาน เชื่อมต่อด้วยโค้ดไม่กี่บรรทัด
การยืนยันตัวตน
คำขอ API ทั้งหมดต้องมี header Authorization
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
รับคีย์ API จากหน้า „คีย์ API" ในคอนโซล คีย์เดียวต่อบัญชี รีเซ็ตในคอนโซล คีย์เดิมถูกยกเลิกทันที
สร้างงาน
https://nsfwrouter.xyz/api/v1/tasks/create
ส่งงาน AI ไปยังคลัสเตอร์ GPU งานเป็นแบบอะซิงโครนัส ส่งคืน ID รับผลลัพธ์ผ่าน API หรือ Webhook
| พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| tool_id | int | ใช่ | รหัสเครื่องมือ จากรายการเครื่องมือ |
| params | object | ใช่ | พารามิเตอร์งาน ออบเจกต์ JSON ฟิลด์ขึ้นอยู่กับเครื่องมือ |
| webhook_url | string | ไม่ | URL callback สำหรับแจ้งเตือนเมื่อเสร็จ |
| 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 วินาทีส่งคืนแคช DB
| พารามิเตอร์ | ประเภท | จำเป็น | คำอธิบาย |
|---|---|---|---|
| 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 callback
หากระบุ webhook_url จะส่ง POST เมื่องานเสร็จ ล้มเหลวหรือยกเลิก body เป็น 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 ครั้งด้วย backoff แบบเอ็กซ์โพเนนเชียล
รหัสข้อผิดพลาด
การตอบกลับข้อผิดพลาดทั้งหมดใช้รูปแบบเดียวกัน: {"code": รหัส, "message": "identifier", "data": {}}
| รหัสข้อผิดพลาด | message | คำอธิบาย |
|---|---|---|
| 20001 | api_key_required | ไม่ได้ระบุคีย์ API |
| 20001 | invalid_api_key | คีย์ API ไม่ถูกต้อง |
| 20001 | ip_not_allowed | IP ไม่อยู่ใน whitelist |
| 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 | ข้อผิดพลาดการพึ่งพาภายนอก |