API dokumentacija
Iškvieskite visas AI funkcijas per API raktą, mokėjimas pagal naudojimą, integracija keliomis kodo eilutėmis.
Autentifikacija
Visi API užklausos turi turėti antraštę Authorization.
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
Gaukite API raktą „API raktai" puslapyje konsolėje. Vienas raktas per paskyrą. Atstatymas konsolėje; senas iškart anuliuojamas.
Užduoties sukūrimas
https://nsfwrouter.xyz/api/v1/tasks/create
Siųskite AI užduotį į GPU klasterį. Užduotys asinchroninės, grąžina ID. Rezultatai per API ar Webhook.
| Parametras | Tipas | Privalomas | Aprašymas |
|---|---|---|---|
| tool_id | int | Taip | Įrankio ID, iš įrankių sąrašo |
| params | object | Taip | Užduoties parametrai, JSON objektas, laukai priklauso nuo įrankio |
| webhook_url | string | Ne | Callback URL pranešimui užbaigus |
| priority | int | Ne | Užduoties prioritetas 1-10, numatytas 5 |
| idempotency_key | string | Ne | Idempotency raktas, neleidžia dublikatus |
| execution_options | object | Ne | Vykdymo parinktys, JSON objektas |
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"
}
}
Balansas tikrinamas prieš iškvietimą. Nepakanka = klaida insufficient_coins. Monetos atimamos sėkmingai išsiuntus.
Užduoties užklausa
https://nsfwrouter.xyz/api/v1/tasks/query
Užklauskite detalių ir statuso pagal ID. Apdorojimo metu, statusas imamas iš GPU klasterio. Pakartotinės užklausos per 10 sek grąžina DB cache.
| Parametras | Tipas | Privalomas | Aprašymas |
|---|---|---|---|
| id | int | Taip | Užduoties 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 | Reikšmė |
|---|---|
| 0 | Apdorojama |
| 1 | Užbaigta |
| -1 | Atšaukta |
| -2 | Nepavyko |
Užduočių sąrašas
https://nsfwrouter.xyz/api/v1/tasks
Puslapiuota paskyros užduočių užklausa, su filtrais įrankiui, statusui ir laikotarpiui.
| Parametras | Tipas | Privalomas | Aprašymas |
|---|---|---|---|
| page | int | Ne | Puslapio numeris, numatytas 1 |
| page_size | int | Ne | Puslapio dydis, numatytas 20, max 50 |
| tool_id | int | Ne | Filtruoti pagal įrankį |
| status | int | Ne | Filtruoti pagal statusą (0/1/-1/-2) |
| days | int | Ne | Laikotarpis dienomis, numatytas 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
}
}
| Laukas | Tipas | Aprašymas |
|---|---|---|
| type | string | Rezultato tipas: image ar video |
| url | string | CDN URL rezultato failui |
| file_name | string | Failo pavadinimas |
| file_size | int | Failo dydis (baitai) |
| mime_type | string | MIME tipas, pvz. image/png, video/mp4 |
| width | int | Plotis (pikseliai) |
| height | int | Aukštis (pikseliai) |
Paskyros balansas
https://nsfwrouter.xyz/api/v1/account/balance
Patikrinkite monetų balansą, bendrą papildymą ir bendrą suvartojimą.
{
"code": 0,
"message": "success",
"data": {
"remain_coins": 5000,
"total_coins": 10000,
"used_coins": 5000
}
}
Webhook callback
Jei nurodytas webhook_url, siunčiamas POST užbaigus, nepavykus ar atšaukus. 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
}
}
Jūsų serveris turi grąžinti HTTP 2xx. Esant non-2xx ar timeout (10 sek), sistema bando iki 5 kartų su eksponentiniu backoff.
Klaidų kodai
Visi klaidų atsakymai naudoja formatą: {"code": kodas, "message": "identifikatorius", "data": {}}
| Klaidos kodas | message | Aprašymas |
|---|---|---|
| 20001 | api_key_required | API raktas nepateiktas |
| 20001 | invalid_api_key | Neteisingas API raktas |
| 20001 | ip_not_allowed | IP ne whitelist'e |
| 20001 | permission_denied | Prieiga atmesta |
| 30001 | tool_not_found | Įrankis nerastas |
| 30001 | task_not_found | Užduotis nerasta |
| 30001 | insufficient_coins | Nepakanka monetų |
| 30001 | task_submit_failed | Užduoties siuntimas nepavyko |
| 30001 | task_query_failed | Užduoties užklausa nepavyko |
| 30001 | task_already_exists | Užduotis jau egzistuoja (idempotency) |
| 40001 | tool_id_required | Parametras tool_id trūksta |
| 40001 | param_error | Parametrų klaida |
| 40001 | webhook_url_invalid | Neteisingas webhook_url formatas |
| 40001 | params_must_be_json_object_or_array | params turi būti JSON objektas ar masyvas |
| 40001 | execution_options_must_be_json_object_or_array | execution_options turi būti JSON objektas ar masyvas |
| Diapazonas | Kategorija |
|---|---|
| 1xxxx | Sistemos klaida |
| 2xxxx | Autentifikavimo klaida |
| 3xxxx | Verslo logikos klaida |
| 4xxxx | Parametrų klaida |
| 5xxxx | Išorinės priklausomybės klaida |