API dokumentáció
Hívd az összes AI funkciót az API kulccsal, használatalapú fizetés, integráció néhány sornyi kódból.
Hitelesítés
Minden API kérésnek tartalmaznia kell a Authorization headert.
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
Vedd át az API kulcsot a „API kulcsok" oldalon a konzolon. Egy kulcs per fiók. Visszaállítás a konzolon; a régi azonnal érvénytelenítve.
Feladat létrehozása
https://nsfwrouter.xyz/api/v1/tasks/create
Küldj AI feladatot a GPU klaszternek. A feladatok aszinkronok, ID-t adnak vissza. Eredmények API-n vagy Webhookon.
| Paraméter | Típus | Kötelező | Leírás |
|---|---|---|---|
| tool_id | int | Igen | Eszköz ID, az eszközlistából |
| params | object | Igen | Feladat paraméterek, JSON objektum, mezők eszközfüggőek |
| webhook_url | string | Nem | Callback URL befejezési értesítéshez |
| priority | int | Nem | Feladat prioritás 1-10, alapértelmezett 5 |
| idempotency_key | string | Nem | Idempotencia kulcs, ismétlődést megelőzi |
| execution_options | object | Nem | Végrehajtási opciók, JSON objektum |
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"
}
}
Egyenleg ellenőrizve hívás előtt. Insufficient = hiba insufficient_coins. Érmék levonva sikeres küldéskor.
Feladat lekérdezése
https://nsfwrouter.xyz/api/v1/tasks/query
Részletek és státusz ID alapján. Feldolgozás alatt a státusz a GPU klaszterből jön. 10 sec-en belüli ismételt lekérdezések DB cache-t adnak.
| Paraméter | Típus | Kötelező | Leírás |
|---|---|---|---|
| id | int | Igen | Feladat ID |
{
"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 | Jelentés |
|---|---|
| 0 | Feldolgozás |
| 1 | Befejezve |
| -1 | Megszakítva |
| -2 | Sikertelen |
Feladat lista
https://nsfwrouter.xyz/api/v1/tasks
Lapozott lekérdezés a fiók feladatairól, szűrőkkel eszköz, státusz és időszak alapján.
| Paraméter | Típus | Kötelező | Leírás |
|---|---|---|---|
| page | int | Nem | Oldalszám, alapértelmezett 1 |
| page_size | int | Nem | Oldalméret, alapértelmezett 20, max 50 |
| tool_id | int | Nem | Eszköz szűrő |
| status | int | Nem | Státusz szűrő (0/1/-1/-2) |
| days | int | Nem | Időszak napokban, alapértelmezett 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
}
}
| Mező | Típus | Leírás |
|---|---|---|
| type | string | Eredmény típus: image vagy video |
| url | string | CDN URL az eredményfájlhoz |
| file_name | string | Fájlnév |
| file_size | int | Fájlméret (byte) |
| mime_type | string | MIME típus, pl. image/png, video/mp4 |
| width | int | Szélesség (pixel) |
| height | int | Magasság (pixel) |
Fiók egyenleg
https://nsfwrouter.xyz/api/v1/account/balance
Ellenőrizd az érme egyenleget, teljes feltöltést és teljes fogyasztást.
{
"code": 0,
"message": "success",
"data": {
"remain_coins": 5000,
"total_coins": 10000,
"used_coins": 5000
}
}
Webhook callback
Ha webhook_url meg van adva, befejezéskor, hibánál vagy megszakításkor POST küldésre kerül. 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
}
}
A szerverednek HTTP 2xx-t kell visszaadnia. Non-2xx vagy timeout (10 sec) esetén a rendszer 5-ször újrapróbál exponenciális backoffal.
Hibakódok
Minden hiba egységes formátumot használ: {"code": kód, "message": "azonosító", "data": {}}
| Hibakód | message | Leírás |
|---|---|---|
| 20001 | api_key_required | API kulcs hiányzik |
| 20001 | invalid_api_key | Érvénytelen API kulcs |
| 20001 | ip_not_allowed | IP nincs a whitelisten |
| 20001 | permission_denied | Hozzáférés megtagadva |
| 30001 | tool_not_found | Eszköz nem található |
| 30001 | task_not_found | Feladat nem található |
| 30001 | insufficient_coins | Insufficient érme egyenleg |
| 30001 | task_submit_failed | Feladat küldése sikertelen |
| 30001 | task_query_failed | Feladat lekérdezése sikertelen |
| 30001 | task_already_exists | Feladat már létezik (idempotencia) |
| 40001 | tool_id_required | tool_id paraméter hiányzik |
| 40001 | param_error | Paraméter hiba |
| 40001 | webhook_url_invalid | Érvénytelen webhook_url formátum |
| 40001 | params_must_be_json_object_or_array | params JSON objektum vagy tömb kell legyen |
| 40001 | execution_options_must_be_json_object_or_array | execution_options JSON objektum vagy tömb kell legyen |
| Tartomány | Kategória |
|---|---|
| 1xxxx | Rendszerhiba |
| 2xxxx | Hitelesítési hiba |
| 3xxxx | Üzleti logikai hiba |
| 4xxxx | Paraméter hiba |
| 5xxxx | Külső függőség hiba |