Dokumentacja API

Dokumentacja API

Wywołuj wszystkie możliwości AI przez klucz API, płatność za użycie, integracja w kilka linii kodu.

Uwierzytelnianie

Wszystkie żądania API muszą zawierać nagłówek Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Uzyskaj klucz API na stronie „Klucze API" w konsoli. Jeden klucz na konto. Reset w konsoli; stary klucz natychmiast unieważniony.

Tworzenie zadania

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

Wyślij zadanie AI do klastra GPU. Zadania asynchroniczne, zwracają ID. Wyniki przez API zapytania lub Webhook.

Parametry żądania
Parametr Typ Wymagany Opis
tool_idintTakID narzędzia, z listy narzędzi
paramsobjectTakParametry zadania, obiekt JSON, pola zależne od narzędzia
webhook_urlstringNieURL callback dla powiadomienia o ukończeniu
priorityintNiePriorytet zadania 1-10, domyślnie 5
idempotency_keystringNieKlucz idempotencji, zapobiega duplikatom
execution_optionsobjectNieOpcje wykonania, obiekt JSON
Przykład żądania
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"
  }'
Przykład odpowiedzi
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Saldo jest sprawdzane przed wywołaniem. Niewystarczające saldo = błąd insufficient_coins. Monety są pobierane po pomyślnym wysłaniu.

Szczegóły zadania

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

Szczegóły i status po ID. Podczas przetwarzania najnowszy status z klastra GPU. Powtórzone zapytania w 10 sekund zwracają cache z bazy bez zapytań zdalnych.

Parametry zapytania
Parametr Typ Wymagany Opis
idintTakID zadania
Przykład odpowiedzi
{
  "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
    }
  }
}
Wartości statusu zadania
status Znaczenie
0Przetwarzanie
1Ukończono
-1Anulowano
-2Błąd

Lista zadań

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

Stronicowane zapytanie o zadania bieżącego konta, z filtrami po narzędziu, statusie i okresie.

Parametry zapytania
Parametr Typ Wymagany Opis
pageintNieNumer strony, domyślnie 1
page_sizeintNieRozmiar strony, domyślnie 20, max 50
tool_idintNieFiltruj po narzędziu
statusintNieFiltruj po statusie (0/1/-1/-2)
daysintNieOkres w dniach, domyślnie 30
Przykład odpowiedzi
{
  "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 pól task_output_json
Pole Typ Opis
typestringTyp wyniku: image lub video
urlstringURL CDN pliku wynikowego
file_namestringNazwa pliku
file_sizeintRozmiar pliku (bajty)
mime_typestringTyp MIME, np. image/png, video/mp4
widthintSzerokość (piksele)
heightintWysokość (piksele)

Saldo konta

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

Sprawdź saldo monet, łączne doładowania i łączne zużycie bieżącego konta.

Przykład odpowiedzi
{
  "code": 0,
  "message": "success",
  "data": {
    "remain_coins": 5000,
    "total_coins": 10000,
    "used_coins": 5000
  }
}

Callback Webhook

Jeśli podano webhook_url, po ukończeniu, błędzie lub anulowaniu wysyłany jest POST na ten URL. Treść to JSON.

Nagłówki żądania callback
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Treść żądania 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
  }
}

Twój serwer musi zwrócić HTTP 2xx. Przy non-2xx lub timeout (10 sek) system ponawia do 5 razy z wykładniczym backoff (60s → 120s → 240s → 480s → 960s).

Kody błędów

Wszystkie błędy używają ujednoliconego formatu: {"code": kod, "message": "identyfikator", "data": {}}

Kod błędu message Opis
20001api_key_requiredNie podano klucza API
20001invalid_api_keyNieprawidłowy klucz API
20001ip_not_allowedIP nie na whiteliście
20001permission_deniedBrak dostępu
30001tool_not_foundNarzędzie nie znalezione
30001task_not_foundZadanie nie znalezione
30001insufficient_coinsNiewystarczająca liczba monet
30001task_submit_failedWysłanie zadania nie powiodło się
30001task_query_failedZapytanie o zadanie nie powiodło się
30001task_already_existsZadanie już istnieje (idempotencja)
40001tool_id_requiredBrak parametru tool_id
40001param_errorBłąd parametrów
40001webhook_url_invalidNieprawidłowy format webhook_url
40001params_must_be_json_object_or_arrayparams musi być obiektem lub tablicą JSON
40001execution_options_must_be_json_object_or_arrayexecution_options musi być obiektem lub tablicą JSON
Zakresy kodów błędów
Zakres Kategoria
1xxxxBłąd systemu
2xxxxBłąd uwierzytelniania
3xxxxBłąd logiki biznesowej
4xxxxBłąd parametrów
5xxxxBłąd zależności zewnętrznej