API-dokumentation

API-dokumentation

Anropa alla AI-funktioner via din API-nyckel, betala per användning, integrera med några rader kod.

Autentisering

Alla API-förfrågningar måste innehålla headern Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Hämta din API-nyckel på sidan "API-nycklar" i konsolen. En nyckel per konto. För att återställa, använd konsolen; den gamla ogiltigförklaras omedelbart.

Skapa uppgift

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

Skicka en AI-uppgift till GPU-klustret. Uppgifter är asynkrona och returnerar ett ID. Få resultat via fråge-API eller Webhook.

Förfrågningsparametrar
Parameter Typ Obligatorisk Beskrivning
tool_idintJaVerktygs-ID, från verktygslistan
paramsobjectJaUppgiftsparametrar, JSON-objekt, fält beroende på verktyg
webhook_urlstringNejCallback-URL för slutförandemeddelande
priorityintNejUppgiftsprioritet 1-10, standard 5
idempotency_keystringNejIdempotency-nyckel, förhindrar dubbletter
execution_optionsobjectNejUtförandealternativ, JSON-objekt
Förfråganexempel
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"
  }'
Svarsexempel
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Saldo kontrolleras före anrop. Otillräckligt saldo = fel insufficient_coins. Mynt dras av vid lyckad inlämning.

Fråga uppgiftsdetaljer

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

Fråga detaljer och status per ID. Under bearbetning hämtas senaste status från GPU-klustret. Upprepade frågor inom 10 sekunder returnerar DB-cache utan fjärrförfrågningar.

Frågeparametrar
Parameter Typ Obligatorisk Beskrivning
idintJaUppgifts-ID
Svarsexempel
{
  "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
    }
  }
}
Uppgiftsstatusvärden
status Betydelse
0Bearbetar
1Slutförd
-1Avbruten
-2Misslyckades

Uppgiftslista

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

Paginerad fråga av aktuellt kontos uppgifter, med filter på verktyg, status och period.

Frågeparametrar
Parameter Typ Obligatorisk Beskrivning
pageintNejSidnummer, standard 1
page_sizeintNejSidstorlek, standard 20, max 50
tool_idintNejFiltrera på verktyg
statusintNejFiltrera på status (0/1/-1/-2)
daysintNejPeriod i dagar, standard 30
Svarsexempel
{
  "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
  }
}
Beskrivning av task_output_json fält
Fält Typ Beskrivning
typestringResultattyp: image eller video
urlstringCDN-URL för resultatfil
file_namestringFilnamn
file_sizeintFilstorlek (bytes)
mime_typestringMIME-typ, t.ex. image/png, video/mp4
widthintBredd (pixlar)
heightintHöjd (pixlar)

Kontosaldo

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

Kontrollera mynt-saldo, total påladdning och total förbrukning för aktuellt konto.

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

Webhook-callback

Om webhook_url anges skickas en POST till den URL:en när uppgiften slutförs, misslyckas eller avbryts. Body är JSON.

Callback-förfrågningsheaders
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Callback-förfrågningsbody
{
  "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
  }
}

Din server måste returnera HTTP 2xx. Vid non-2xx eller timeout (10 sek) försöker systemet igen upp till 5 gånger med exponentiell backoff (60s → 120s → 240s → 480s → 960s).

Felkoder

Alla felsvar använder ett enhetligt format: {"code": felkod, "message": "identifierare", "data": {}}

Felkod message Beskrivning
20001api_key_requiredAPI-nyckel inte angiven
20001invalid_api_keyOgiltig API-nyckel
20001ip_not_allowedIP inte på whitelist
20001permission_deniedÅtkomst nekad
30001tool_not_foundVerktyg hittades inte
30001task_not_foundUppgift hittades inte
30001insufficient_coinsOtillräckligt mynt-saldo
30001task_submit_failedUppgiftsinlämning misslyckades
30001task_query_failedUppgiftsfråga misslyckades
30001task_already_existsUppgift finns redan (idempotens)
40001tool_id_requiredParameter tool_id saknas
40001param_errorParameterfel
40001webhook_url_invalidOgiltigt webhook_url-format
40001params_must_be_json_object_or_arrayparams måste vara ett JSON-objekt eller array
40001execution_options_must_be_json_object_or_arrayexecution_options måste vara ett JSON-objekt eller array
Felkodsintervall
Intervall Kategori
1xxxxSystemfel
2xxxxAutentiseringsfel
3xxxxAffärslogikfel
4xxxxParameterfel
5xxxxExternt beroendefel