API dokumentacija

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

POST 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.

Užklausos parametrai
Parametras Tipas Privalomas Aprašymas
tool_idintTaipĮrankio ID, iš įrankių sąrašo
paramsobjectTaipUžduoties parametrai, JSON objektas, laukai priklauso nuo įrankio
webhook_urlstringNeCallback URL pranešimui užbaigus
priorityintNeUžduoties prioritetas 1-10, numatytas 5
idempotency_keystringNeIdempotency raktas, neleidžia dublikatus
execution_optionsobjectNeVykdymo parinktys, JSON objektas
Užklausos pavyzdys
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"
  }'
Atsakymo pavyzdys
{
  "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

GET 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.

Užklausos parametrai
Parametras Tipas Privalomas Aprašymas
idintTaipUžduoties ID
Atsakymo pavyzdys
{
  "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
    }
  }
}
Užduoties statuso reikšmės
status Reikšmė
0Apdorojama
1Užbaigta
-1Atšaukta
-2Nepavyko

Užduočių sąrašas

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

Puslapiuota paskyros užduočių užklausa, su filtrais įrankiui, statusui ir laikotarpiui.

Užklausos parametrai
Parametras Tipas Privalomas Aprašymas
pageintNePuslapio numeris, numatytas 1
page_sizeintNePuslapio dydis, numatytas 20, max 50
tool_idintNeFiltruoti pagal įrankį
statusintNeFiltruoti pagal statusą (0/1/-1/-2)
daysintNeLaikotarpis dienomis, numatytas 30
Atsakymo pavyzdys
{
  "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
  }
}
task_output_json laukų aprašymas
Laukas Tipas Aprašymas
typestringRezultato tipas: image ar video
urlstringCDN URL rezultato failui
file_namestringFailo pavadinimas
file_sizeintFailo dydis (baitai)
mime_typestringMIME tipas, pvz. image/png, video/mp4
widthintPlotis (pikseliai)
heightintAukštis (pikseliai)

Paskyros balansas

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

Patikrinkite monetų balansą, bendrą papildymą ir bendrą suvartojimą.

Atsakymo pavyzdys
{
  "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.

Callback užklausos antraštės
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Callback užklausos body
{
  "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
20001api_key_requiredAPI raktas nepateiktas
20001invalid_api_keyNeteisingas API raktas
20001ip_not_allowedIP ne whitelist'e
20001permission_deniedPrieiga atmesta
30001tool_not_foundĮrankis nerastas
30001task_not_foundUžduotis nerasta
30001insufficient_coinsNepakanka monetų
30001task_submit_failedUžduoties siuntimas nepavyko
30001task_query_failedUžduoties užklausa nepavyko
30001task_already_existsUžduotis jau egzistuoja (idempotency)
40001tool_id_requiredParametras tool_id trūksta
40001param_errorParametrų klaida
40001webhook_url_invalidNeteisingas webhook_url formatas
40001params_must_be_json_object_or_arrayparams turi būti JSON objektas ar masyvas
40001execution_options_must_be_json_object_or_arrayexecution_options turi būti JSON objektas ar masyvas
Klaidų kodų diapazonai
Diapazonas Kategorija
1xxxxSistemos klaida
2xxxxAutentifikavimo klaida
3xxxxVerslo logikos klaida
4xxxxParametrų klaida
5xxxxIšorinės priklausomybės klaida