API dokumentace

API dokumentace

Volejte všechny AI funkce přes API klíč, platba za použití, integrace v několika řádcích kódu.

Autentizace

Všechny API požadavky musí obsahovat hlavičku Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Získejte API klíč na stránce „API klíče" v konzoli. Jeden klíč na účet. Reset v konzoli; starý je okamžitě zneplatněn.

Vytvoření úkolu

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

Odešlete AI úkol do GPU clusteru. Úkoly jsou asynchronní, vracejí ID. Výsledky přes API nebo Webhook.

Parametry požadavku
Parametr Typ Povinný Popis
tool_idintAnoID nástroje, ze seznamu nástrojů
paramsobjectAnoParametry úkolu, JSON objekt, pole závisí na nástroji
webhook_urlstringNeURL callback pro oznámení o dokončení
priorityintNePriorita úkolu 1-10, výchozí 5
idempotency_keystringNeKlíč idempotence, zabraňuje duplicitám
execution_optionsobjectNeMožnosti provedení, JSON objekt
Příklad požadavku
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"
  }'
Příklad odpovědi
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Zůstatek se kontroluje před voláním. Nedostatek mincí = chyba insufficient_coins. Mince se strhávají při úspěšném odeslání.

Dotaz na úkol

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

Dotaz na detaily a status podle ID. Během zpracování se nejnovější status bere z GPU clusteru. Opakované dotazy do 10 sekund vrací DB cache bez vzdálených dotazů.

Parametry dotazu
Parametr Typ Povinný Popis
idintAnoID úkolu
Příklad odpovědi
{
  "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
    }
  }
}
Hodnoty statusu úkolu
status Význam
0Zpracovává se
1Dokončeno
-1Zrušeno
-2Chyba

Seznam úkolů

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

Stránkovaný dotaz na úkoly aktuálního účtu, s filtry na nástroj, status a období.

Parametry dotazu
Parametr Typ Povinný Popis
pageintNeČíslo stránky, výchozí 1
page_sizeintNeVelikost stránky, výchozí 20, max 50
tool_idintNeFiltrovat podle nástroje
statusintNeFiltrovat podle statusu (0/1/-1/-2)
daysintNeObdobí ve dnech, výchozí 30
Příklad odpovědi
{
  "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
  }
}
Popis polí task_output_json
Pole Typ Popis
typestringTyp výsledku: image nebo video
urlstringCDN URL souboru výsledku
file_namestringNázev souboru
file_sizeintVelikost souboru (bajty)
mime_typestringMIME typ, např. image/png, video/mp4
widthintŠířka (pixely)
heightintVýška (pixely)

Zůstatek účtu

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

Zkontrolujte zůstatek mincí, celkové dobíjení a celkovou spotřebu aktuálního účtu.

Příklad odpovědi
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Webhook callback

Pokud je zadán webhook_url, po dokončení, chybě nebo zrušení se pošle POST na tuto URL. Tělo je JSON.

Hlavičky callback požadavku
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Tělo callback požadavku
{
  "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
  }
}

Váš server musí vrátit HTTP 2xx. Při non-2xx nebo timeoutu (10 sek) systém zkusí znovu až 5x s exponenciálním backoff (60s → 120s → 240s → 480s → 960s).

Kódy chyb

Všechny chybové odpovědi používají jednotný formát: {"code": kód, "message": "identifikátor", "data": {}}

Kód chyby message Popis
20001api_key_requiredAPI klíč nezadán
20001invalid_api_keyNeplatný API klíč
20001ip_not_allowedIP není na whitelistu
20001permission_deniedPřístup odepřen
30001tool_not_foundNástroj nenalezen
30001task_not_foundÚkol nenalezen
30001insufficient_coinsNedostatek mincí
30001task_submit_failedOdeslání úkolu selhalo
30001task_query_failedDotaz na úkol selhal
30001task_already_existsÚkol již existuje (idempotence)
40001tool_id_requiredChybí parametr tool_id
40001param_errorChyba parametrů
40001webhook_url_invalidNeplatný formát webhook_url
40001params_must_be_json_object_or_arrayparams musí být JSON objekt nebo pole
40001execution_options_must_be_json_object_or_arrayexecution_options musí být JSON objekt nebo pole
Rozsahy kódů chyb
Rozsah Kategorie
1xxxxSystémová chyba
2xxxxChyba autentizace
3xxxxChyba obchodní logiky
4xxxxChyba parametrů
5xxxxChyba externí závislosti