API-dokumentaatio

API-dokumentaatio

Kutsu kaikkia tekoälyominaisuuksia API-avaimellasi, maksa käytön mukaan, integroi muutamalla koodirivillä.

Autentikointi

Kaikissa API-pyynnöissä on oltava header Authorization.

Authorization: Bearer sk-xxxxxxxxxxxxxxxx

Hae API-avaimesi "API-avaimet" sivulta konsolissa. Yksi avain per tili. Nollaa konsolissa; vanha mitätöidään välittömästi.

Luo tehtävä

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

Lähetä tekoälytehtävä GPU-klusterille. Tehtävät ovat asynkronisia ja palauttavat ID:n. Saa tulokset kysely-API:n tai Webhookin kautta.

Pyyntöparametrit
Parametri Tyyppi Pakollinen Kuvaus
tool_idintKylläTyökalu-ID, työkaluluettelosta
paramsobjectKylläTehtävän parametrit, JSON-objekti, kentät riippuvat työkalusta
webhook_urlstringEiCallback-URL valmistumisilmoitusta varten
priorityintEiTehtävän prioriteetti 1-10, oletus 5
idempotency_keystringEiIdempotency-avain, estää kaksoiskappaleet
execution_optionsobjectEiSuoritusvaihtoehdot, JSON-objekti
Pyyntöesimerkki
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"
  }'
Vastausesimerkki
{
  "code": 0,
  "message": "success",
  "data": {
    "task": {
      "id": 123,
      "status": 0,
      "consume_coins": 5
    },
    "message": "task_submitted"
  }
}

Saldo tarkistetaan ennen kutsua. Riittämätön saldo = virhe insufficient_coins. Kolikot vähennetään onnistuneesta lähetyksestä.

Kysy tehtävän tiedot

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

Kysy tiedot ja status ID:llä. Käsittelyn aikana uusin status haetaan GPU-klusterilta. Toistuvat kyselyt 10 sekunnin sisällä palauttavat DB-välimuistin ilman etäkyselyitä.

Kyselyparametrit
Parametri Tyyppi Pakollinen Kuvaus
idintKylläTehtävä-ID
Vastausesimerkki
{
  "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
    }
  }
}
Tehtävän statusarvot
status Merkitys
0Käsitellään
1Valmis
-1Peruttu
-2Epäonnistui

Tehtäväluettelo

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

Sivutettu kysely nykyisen tilin tehtävistä, suodattimilla työkalun, statuksen ja jakson mukaan.

Kyselyparametrit
Parametri Tyyppi Pakollinen Kuvaus
pageintEiSivunumero, oletus 1
page_sizeintEiSivun koko, oletus 20, max 50
tool_idintEiSuodata työkalun mukaan
statusintEiSuodata statuksen mukaan (0/1/-1/-2)
daysintEiAikaväli päivissä, oletus 30
Vastausesimerkki
{
  "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
  }
}
task_output_json kenttien kuvaus
Kenttä Tyyppi Kuvaus
typestringTulostyyppi: image tai video
urlstringCDN-URL tulostiedostolle
file_namestringTiedostonimi
file_sizeintTiedostokoko (tavua)
mime_typestringMIME-tyyppi, esim. image/png, video/mp4
widthintLeveys (pikseliä)
heightintKorkeus (pikseliä)

Tilin saldo

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

Tarkista kolikko-saldo, kokonaislataus ja kokonaiskulutus nykyiselle tilille.

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

Webhook-callback

Jos webhook_url annetaan, POST lähetetään kyseiseen URL:ään kun tehtävä valmistuu, epäonnistuu tai perutaan. Body on JSON.

Callback-pyynnön headerit
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
Callback-pyynnön body
{
  "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
  }
}

Palvelimesi on palautettava HTTP 2xx. Non-2xx tai timeout (10 sek) sattuessa järjestelmä yrittää uudelleen enintään 5 kertaa eksponentiaalisella backoffilla (60s → 120s → 240s → 480s → 960s).

Virhekoodit

Kaikki virhevastaukset käyttävät yhtenäistä muotoa: {"code": virhekoodi, "message": "tunniste", "data": {}}

Virhekoodi message Kuvaus
20001api_key_requiredAPI-avainta ei annettu
20001invalid_api_keyVirheellinen API-avain
20001ip_not_allowedIP ei whitelistilla
20001permission_deniedPääsy evätty
30001tool_not_foundTyökalua ei löydy
30001task_not_foundTehtävää ei löydy
30001insufficient_coinsRiittämätön kolikko-saldo
30001task_submit_failedTehtävän lähetys epäonnistui
30001task_query_failedTehtävän kysely epäonnistui
30001task_already_existsTehtävä on jo olemassa (idempotenssi)
40001tool_id_requiredParametri tool_id puuttuu
40001param_errorParametrivirhe
40001webhook_url_invalidVirheellinen webhook_url-muoto
40001params_must_be_json_object_or_arrayparams on oltava JSON-objekti tai taulukko
40001execution_options_must_be_json_object_or_arrayexecution_options on oltava JSON-objekti tai taulukko
Virhekoodialueet
Alue Kategoria
1xxxxJärjestelmävirhe
2xxxxAutentikointivirhe
3xxxxLiiketoimintalogiikkavirhe
4xxxxParametrivirhe
5xxxxUlkoinen riippuvuusvirhe