Dokumentasi API
Panggil semua ciri AI melalui kunci API, bayar mengikut penggunaan, integrasi dalam beberapa baris kod.
Pengesahan
Semua permintaan API mesti mengandungi pengepala Authorization.
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
Dapatkan kunci API di halaman „Kunci API" di konsol. Satu kunci setiap akaun. Reset di konsol; yang lama terbatal serta-merta.
Cipta tugas
https://nsfwrouter.xyz/api/v1/tasks/create
Hantar tugas AI ke kluster GPU. Tugas adalah tak segerak, memulangkan ID. Keputusan melalui API atau Webhook.
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
| tool_id | int | Ya | ID alat, dari senarai alat |
| params | object | Ya | Parameter tugas, JSON objek, medan bergantung pada alat |
| webhook_url | string | Tidak | URL callback untuk pemberitahuan selesai |
| priority | int | Tidak | Keutamaan tugas 1-10, lalai 5 |
| idempotency_key | string | Tidak | Kunci idempotency, halang pendua |
| execution_options | object | Tidak | Pilihan pelaksanaan, JSON objek |
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"
}
}
Baki disemak sebelum panggilan. Tidak mencukupi = ralat insufficient_coins. Syiling ditolak semasa penghantaran berjaya.
Pertanyaan tugas
https://nsfwrouter.xyz/api/v1/tasks/query
Pertanyaan butiran dan status mengikut ID. Semasa pemprosesan, status dari kluster GPU. Pertanyaan berulang dalam 10 saat memulangkan cache DB.
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
| id | int | Ya | ID tugas |
{
"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 | Maksud |
|---|---|
| 0 | Memproses |
| 1 | Selesai |
| -1 | Dibatalkan |
| -2 | Gagal |
Senarai tugas
https://nsfwrouter.xyz/api/v1/tasks
Pertanyaan berhalaman tugas akaun, dengan penapis pada alat, status dan tempoh.
| Parameter | Jenis | Wajib | Penerangan |
|---|---|---|---|
| page | int | Tidak | Nombor halaman, lalai 1 |
| page_size | int | Tidak | Saiz halaman, lalai 20, maks 50 |
| tool_id | int | Tidak | Tapis mengikut alat |
| status | int | Tidak | Tapis mengikut status (0/1/-1/-2) |
| days | int | Tidak | Tempoh dalam hari, lalai 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
}
}
| Medan | Jenis | Penerangan |
|---|---|---|
| type | string | Jenis keputusan: image atau video |
| url | string | URL CDN untuk fail keputusan |
| file_name | string | Nama fail |
| file_size | int | Saiz fail (bait) |
| mime_type | string | Jenis MIME, cth. image/png, video/mp4 |
| width | int | Lebar (piksel) |
| height | int | Tinggi (piksel) |
Baki akaun
https://nsfwrouter.xyz/api/v1/account/balance
Semak baki syiling, jumlah tambah nilai dan jumlah penggunaan.
{
"code": 0,
"message": "success",
"data": {
"remain_coins": 5000,
"total_coins": 10000,
"used_coins": 5000
}
}
Webhook callback
Jika webhook_url dinyatakan, POST dihantar semasa selesai, gagal atau dibatalkan. 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
}
}
Pelayan anda mesti memulangkan HTTP 2xx. Pada non-2xx atau tamat masa (10 saat), sistem mencuba hingga 5 kali dengan backoff eksponen.
Kod ralat
Semua respons ralat menggunakan format: {"code": kod, "message": "identifier", "data": {}}
| Kod ralat | message | Penerangan |
|---|---|---|
| 20001 | api_key_required | Kunci API tidak diberikan |
| 20001 | invalid_api_key | Kunci API tidak sah |
| 20001 | ip_not_allowed | IP tidak dalam whitelist |
| 20001 | permission_denied | Akses dinafikan |
| 30001 | tool_not_found | Alat tidak dijumpai |
| 30001 | task_not_found | Tugas tidak dijumpai |
| 30001 | insufficient_coins | Baki syiling tidak mencukupi |
| 30001 | task_submit_failed | Penghantaran tugas gagal |
| 30001 | task_query_failed | Pertanyaan tugas gagal |
| 30001 | task_already_exists | Tugas sudah wujud (idempotency) |
| 40001 | tool_id_required | Parameter tool_id hilang |
| 40001 | param_error | Ralat parameter |
| 40001 | webhook_url_invalid | Format webhook_url tidak sah |
| 40001 | params_must_be_json_object_or_array | params mesti JSON objek atau tatasusunan |
| 40001 | execution_options_must_be_json_object_or_array | execution_options mesti JSON objek atau tatasusunan |
| Julat | Kategori |
|---|---|
| 1xxxx | Ralat sistem |
| 2xxxx | Ralat pengesahan |
| 3xxxx | Ralat logik perniagaan |
| 4xxxx | Ralat parameter |
| 5xxxx | Ralat kebergantungan luaran |