Documentație API

Documentație API

Apelează toate funcțiile AI prin cheia API, plătești per utilizare, integrează în câteva linii.

Autentificare

Toate cererile API trebuie să conțină header-ul Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Obține cheia API în pagina „Chei API" din consolă. O cheie per cont. Reset în consolă; cea veche se anulează imediat.

Creare sarcină

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

Trimite o sarcină AI către clusterul GPU. Sarcinile sunt asincrone, returnează ID. Rezultate prin API sau Webhook.

Parametri cerere
Parametru Tip Obligatoriu Descriere
tool_idintDaID instrument, din lista
paramsobjectDaParametri sarcină, obiect JSON, câmpuri depind de instrument
webhook_urlstringNuURL callback pentru notificare finalizare
priorityintNuPrioritate 1-10, implicit 5
idempotency_keystringNuCheie idempotență, previne duplicate
execution_optionsobjectNuOpțiuni execuție, obiect JSON
Exemplu cerere
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"
  }'
Exemplu răspuns
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Sold verificat înainte de apel. Insuficient = eroare insufficient_coins. Monede deduse la trimitere reușită.

Interogare sarcină

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

Interoghează detalii și status după ID. În timpul procesării, statusul se ia de la cluster. Interogări repetate în 10 sec returnează cache DB.

Parametri interogare
Parametru Tip Obligatoriu Descriere
idintDaID sarcină
Exemplu răspuns
{
  "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
    }
  }
}
Valori status sarcină
status Semnificație
0Procesare
1Finalizat
-1Anulat
-2Eșuat

Listă sarcini

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

Interogare paginată a sarcinilor contului, cu filtre pe instrument, status și perioadă.

Parametri interogare
Parametru Tip Obligatoriu Descriere
pageintNuNumăr pagină, implicit 1
page_sizeintNuMărime pagină, implicit 20, max 50
tool_idintNuFiltru după instrument
statusintNuFiltru după status (0/1/-1/-2)
daysintNuPerioadă în zile, implicit 30
Exemplu răspuns
{
  "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
  }
}
Descriere câmpuri task_output_json
Câmp Tip Descriere
typestringTip rezultat: image sau video
urlstringURL CDN pentru fișier
file_namestringNume fișier
file_sizeintMărime (bytes)
mime_typestringTip MIME, ex. image/png, video/mp4
widthintLățime (pixeli)
heightintÎnălțime (pixeli)

Sold cont

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

Verifică soldul monedelor, total încărcat și total consumat.

Exemplu răspuns
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Webhook callback

Dacă se setează webhook_url, se trimite POST la finalizare, eșec sau anulare. Body JSON.

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

Serverul tău trebuie să returneze HTTP 2xx. La non-2xx sau timeout (10s), se reîncearcă de 5 ori cu backoff exponențial.

Coduri eroare

Toate erorile folosesc format: {"code": cod, "message": "identificator", "data": {}}

Cod eroare message Descriere
20001api_key_requiredCheie API lipsă
20001invalid_api_keyCheie API invalidă
20001ip_not_allowedIP nu e în whitelist
20001permission_deniedAcces refuzat
30001tool_not_foundInstrument negăsit
30001task_not_foundSarcină negăsită
30001insufficient_coinsMonede insuficiente
30001task_submit_failedTrimitere sarcină eșuată
30001task_query_failedInterogare sarcină eșuată
30001task_already_existsSarcină existentă (idempotență)
40001tool_id_requiredParametru tool_id lipsă
40001param_errorEroare parametri
40001webhook_url_invalidFormat webhook_url invalid
40001params_must_be_json_object_or_arrayparams trebuie să fie obiect sau array JSON
40001execution_options_must_be_json_object_or_arrayexecution_options trebuie să fie obiect sau array JSON
Intervale coduri eroare
Interval Categorie
1xxxxEroare sistem
2xxxxEroare autentificare
3xxxxEroare logică business
4xxxxEroare parametri
5xxxxEroare dependență externă