API-documentatie

API-documentatie

Roep alle AI-mogelijkheden aan via je API-sleutel, betalen per gebruik, integreer in enkele regels code.

Authenticatie

Alle API-verzoeken moeten de header Authorization bevatten.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Verkrijg je API-sleutel op de pagina "API-sleutels" in de console. Eén sleutel per account. Reset via de console; de oude wordt direct ongeldig.

Taak aanmaken

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

Stuur een AI-taak naar het GPU-cluster. Taken zijn asynchroon en retourneren een ID. Resultaten via query-API of Webhook.

Verzoekparameters
Parameter Type Verplicht Beschrijving
tool_idintJaTool-ID, uit de tool-lijst
paramsobjectJaTaakparameters, JSON-object, velden afhankelijk van tool
webhook_urlstringNeeCallback-URL voor voltooiingsmelding
priorityintNeeTaakprioriteit 1-10, standaard 5
idempotency_keystringNeeIdempotency-key, voorkomt duplicaten
execution_optionsobjectNeeUitvoeringsopties, JSON-object
Verzoekvoorbeeld
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"
  }'
Antwoordvoorbeeld
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Saldo wordt gecontroleerd voor aanroep. Onvoldoende saldo = fout insufficient_coins. Coins worden afgeschreven bij succesvolle indiening.

Taakdetail opvragen

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

Details en status opvragen per ID. Tijdens verwerking wordt de laatste status uit het GPU-cluster gehaald. Herhaalde queries binnen 10 seconden retourneren DB-cache zonder externe verzoeken.

Queryparameters
Parameter Type Verplicht Beschrijving
idintJaTaak-ID
Antwoordvoorbeeld
{
  "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
    }
  }
}
Taakstatuswaarden
status Betekenis
0In verwerking
1Voltooid
-1Geannuleerd
-2Mislukt

Takenlijst

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

Gepagineerde query van taken van het huidige account, met filters op tool, status en periode.

Queryparameters
Parameter Type Verplicht Beschrijving
pageintNeePaginanummer, standaard 1
page_sizeintNeePaginagrootte, standaard 20, max 50
tool_idintNeeFilteren op tool
statusintNeeFilteren op status (0/1/-1/-2)
daysintNeePeriode in dagen, standaard 30
Antwoordvoorbeeld
{
  "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
  }
}
Beschrijving task_output_json velden
Veld Type Beschrijving
typestringResultaattype: image of video
urlstringCDN-URL van resultaatbestand
file_namestringBestandsnaam
file_sizeintBestandsgrootte (bytes)
mime_typestringMIME-type, bijv. image/png, video/mp4
widthintBreedte (pixels)
heightintHoogte (pixels)

Accountsaldo

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

Bekijk coins-saldo, totale opwaardering en totaal verbruik van het huidige account.

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

Webhook-callback

Als webhook_url is opgegeven, wordt bij voltooiing, fout of annulering een POST naar die URL gestuurd. Body is JSON.

Callback-verzoekheaders
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Callback-verzoekbody
{
  "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
  }
}

Je server moet HTTP 2xx retourneren. Bij non-2xx of timeout (10 sec) herprobeert het systeem tot 5 keer met exponentiële backoff (60s → 120s → 240s → 480s → 960s).

Foutcodes

Alle foutreacties gebruiken een uniform formaat: {"code": foutcode, "message": "identificatie", "data": {}}

Foutcode message Beschrijving
20001api_key_requiredGeen API-sleutel opgegeven
20001invalid_api_keyOngeldige API-sleutel
20001ip_not_allowedIP niet op whitelist
20001permission_deniedToegang geweigerd
30001tool_not_foundTool niet gevonden
30001task_not_foundTaak niet gevonden
30001insufficient_coinsOnvoldoende coins
30001task_submit_failedTaakindiening mislukt
30001task_query_failedTaakquery mislukt
30001task_already_existsTaak bestaat al (idempotentie)
40001tool_id_requiredParameter tool_id ontbreekt
40001param_errorParameterfout
40001webhook_url_invalidOngeldig webhook_url formaat
40001params_must_be_json_object_or_arrayparams moet een JSON-object of array zijn
40001execution_options_must_be_json_object_or_arrayexecution_options moet een JSON-object of array zijn
Foutcode-bereiken
Bereik Categorie
1xxxxSysteemfout
2xxxxAuthenticatiefout
3xxxxBedrijfslogica-fout
4xxxxParameterfout
5xxxxExterne afhankelijkheidsfout