API dokumentacija

API dokumentacija

Pozivajte sve AI značajke putem API ključa, plaćanje po korištenju, integracija u nekoliko redaka.

Autentikacija

Svi API zahtjevi moraju sadržavati zaglavlje Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Dobijte API ključ na stranici „API ključevi" u konzoli. Jedan ključ po računu. Reset u konzoli; stari se odmah poništava.

Stvaranje zadatka

POST https://nsfwrouter.xyz/api/v1/tasks/create

Pošaljite AI zadatak u GPU klaster. Zadaci su asinkroni, vraćaju ID. Rezultati putem API ili Webhooka.

Parametri zahtjeva
Parametar Tip Obavezno Opis
tool_idintDaID alata, s popisa alata
paramsobjectDaParametri zadatka, JSON objekt, polja ovise o alatu
webhook_urlstringNeURL callback za obavijest o završetku
priorityintNePrioritet zadatka 1-10, zadano 5
idempotency_keystringNeKljuč idempotencije, sprječava duplikate
execution_optionsobjectNeOpcije izvršavanja, JSON objekt
Primjer zahtjeva
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"
  }'
Primjer odgovora
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Saldo se provjerava prije poziva. Nedovoljno = pogreška insufficient_coins. Novčići se odbiju pri uspješnom slanju.

Upit zadatka

GET https://nsfwrouter.xyz/api/v1/tasks/query

Upit detalja i statusa po ID. Tijekom obrade, status se uzima s GPU klastera. Ponovljeni upiti u 10 sek vraćaju DB cache.

Parametri upita
Parametar Tip Obavezno Opis
idintDaID zadatka
Primjer odgovora
{
  "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
    }
  }
}
Vrijednosti statusa zadatka
status Značenje
0Obrada
1Završeno
-1Otkazano
-2Neuspjelo

Popis zadataka

GET https://nsfwrouter.xyz/api/v1/tasks

Stranični upit zadataka računa, s filtrima na alat, status i razdoblje.

Parametri upita
Parametar Tip Obavezno Opis
pageintNeBroj stranice, zadano 1
page_sizeintNeVeličina stranice, zadano 20, max 50
tool_idintNeFiltriraj po alatu
statusintNeFiltriraj po statusu (0/1/-1/-2)
daysintNeRazdoblje u danima, zadano 30
Primjer odgovora
{
  "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
  }
}
Opis polja task_output_json
Polje Tip Opis
typestringTip rezultata: image ili video
urlstringCDN URL za datoteku rezultata
file_namestringNaziv datoteke
file_sizeintVeličina (bajtovi)
mime_typestringMIME tip, npr. image/png, video/mp4
widthintŠirina (pikseli)
heightintVisina (pikseli)

Saldo računa

GET https://nsfwrouter.xyz/api/v1/account/balance

Provjerite saldo novčića, ukupnu uplatu i ukupnu potrošnju.

Primjer odgovora
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Webhook callback

Ako je naveden webhook_url, šalje se POST pri završetku, neuspjehu ili otkazivanju. Body je JSON.

Zaglavlja callback zahtjeva
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Body callback zahtjeva
{
  "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
  }
}

Vaš server mora vratiti HTTP 2xx. Pri non-2xx ili timeoutu (10 sek), sustav pokušava do 5 puta s eksponencijalnim backoffom.

Kodovi pogrešaka

Svi odgovori na pogreške koriste format: {"code": kod, "message": "identifikator", "data": {}}

Kod pogreške message Opis
20001api_key_requiredAPI ključ nije naveden
20001invalid_api_keyNevažeći API ključ
20001ip_not_allowedIP nije na whitelisti
20001permission_deniedPristup odbijen
30001tool_not_foundAlat nije pronađen
30001task_not_foundZadatak nije pronađen
30001insufficient_coinsNedovoljno novčića
30001task_submit_failedSlanje zadatka neuspjelo
30001task_query_failedUpit zadatka neuspio
30001task_already_existsZadatak već postoji (idempotencija)
40001tool_id_requiredParametar tool_id nedostaje
40001param_errorPogreška parametara
40001webhook_url_invalidNevažeći format webhook_url
40001params_must_be_json_object_or_arrayparams mora biti JSON objekt ili polje
40001execution_options_must_be_json_object_or_arrayexecution_options mora biti JSON objekt ili polje
Rasponi kodova pogrešaka
Raspon Kategorija
1xxxxSistemska pogreška
2xxxxPogreška autentikacije
3xxxxPogreška poslovne logike
4xxxxPogreška parametara
5xxxxPogreška vanjske ovisnosti