API dokumentace
Volejte všechny AI funkce přes API klíč, platba za použití, integrace v několika řádcích kódu.
Autentizace
Všechny API požadavky musí obsahovat hlavičku Authorization.
Authorization: Bearer sk-xxxxxxxxxxxxxxxx
Získejte API klíč na stránce „API klíče" v konzoli. Jeden klíč na účet. Reset v konzoli; starý je okamžitě zneplatněn.
Vytvoření úkolu
https://nsfwrouter.xyz/api/v1/tasks/create
Odešlete AI úkol do GPU clusteru. Úkoly jsou asynchronní, vracejí ID. Výsledky přes API nebo Webhook.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
| tool_id | int | Ano | ID nástroje, ze seznamu nástrojů |
| params | object | Ano | Parametry úkolu, JSON objekt, pole závisí na nástroji |
| webhook_url | string | Ne | URL callback pro oznámení o dokončení |
| priority | int | Ne | Priorita úkolu 1-10, výchozí 5 |
| idempotency_key | string | Ne | Klíč idempotence, zabraňuje duplicitám |
| execution_options | object | Ne | Možnosti provedení, JSON objekt |
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"
}'
{
"code": 0,
"message": "success",
"data": {
"task": {
"id": 123,
"status": 0,
"consume_coins": 5
},
"message": "task_submitted"
}
}
Zůstatek se kontroluje před voláním. Nedostatek mincí = chyba insufficient_coins. Mince se strhávají při úspěšném odeslání.
Dotaz na úkol
https://nsfwrouter.xyz/api/v1/tasks/query
Dotaz na detaily a status podle ID. Během zpracování se nejnovější status bere z GPU clusteru. Opakované dotazy do 10 sekund vrací DB cache bez vzdálených dotazů.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
| id | int | Ano | ID úkolu |
{
"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
}
}
}
| status | Význam |
|---|---|
| 0 | Zpracovává se |
| 1 | Dokončeno |
| -1 | Zrušeno |
| -2 | Chyba |
Seznam úkolů
https://nsfwrouter.xyz/api/v1/tasks
Stránkovaný dotaz na úkoly aktuálního účtu, s filtry na nástroj, status a období.
| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
| page | int | Ne | Číslo stránky, výchozí 1 |
| page_size | int | Ne | Velikost stránky, výchozí 20, max 50 |
| tool_id | int | Ne | Filtrovat podle nástroje |
| status | int | Ne | Filtrovat podle statusu (0/1/-1/-2) |
| days | int | Ne | Období ve dnech, výchozí 30 |
{
"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
}
}
| Pole | Typ | Popis |
|---|---|---|
| type | string | Typ výsledku: image nebo video |
| url | string | CDN URL souboru výsledku |
| file_name | string | Název souboru |
| file_size | int | Velikost souboru (bajty) |
| mime_type | string | MIME typ, např. image/png, video/mp4 |
| width | int | Šířka (pixely) |
| height | int | Výška (pixely) |
Zůstatek účtu
https://nsfwrouter.xyz/api/v1/account/balance
Zkontrolujte zůstatek mincí, celkové dobíjení a celkovou spotřebu aktuálního účtu.
{
"code": 0,
"message": "success",
"data": {
"remain_coins": 5000,
"total_coins": 10000,
"used_coins": 5000
}
}
Webhook callback
Pokud je zadán webhook_url, po dokončení, chybě nebo zrušení se pošle POST na tuto URL. Tělo je JSON.
Content-Type: application/json
Accept: application/json
User-Agent: OpenAPI-Webhook/1.0
{
"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
}
}
Váš server musí vrátit HTTP 2xx. Při non-2xx nebo timeoutu (10 sek) systém zkusí znovu až 5x s exponenciálním backoff (60s → 120s → 240s → 480s → 960s).
Kódy chyb
Všechny chybové odpovědi používají jednotný formát: {"code": kód, "message": "identifikátor", "data": {}}
| Kód chyby | message | Popis |
|---|---|---|
| 20001 | api_key_required | API klíč nezadán |
| 20001 | invalid_api_key | Neplatný API klíč |
| 20001 | ip_not_allowed | IP není na whitelistu |
| 20001 | permission_denied | Přístup odepřen |
| 30001 | tool_not_found | Nástroj nenalezen |
| 30001 | task_not_found | Úkol nenalezen |
| 30001 | insufficient_coins | Nedostatek mincí |
| 30001 | task_submit_failed | Odeslání úkolu selhalo |
| 30001 | task_query_failed | Dotaz na úkol selhal |
| 30001 | task_already_exists | Úkol již existuje (idempotence) |
| 40001 | tool_id_required | Chybí parametr tool_id |
| 40001 | param_error | Chyba parametrů |
| 40001 | webhook_url_invalid | Neplatný formát webhook_url |
| 40001 | params_must_be_json_object_or_array | params musí být JSON objekt nebo pole |
| 40001 | execution_options_must_be_json_object_or_array | execution_options musí být JSON objekt nebo pole |
| Rozsah | Kategorie |
|---|---|
| 1xxxx | Systémová chyba |
| 2xxxx | Chyba autentizace |
| 3xxxx | Chyba obchodní logiky |
| 4xxxx | Chyba parametrů |
| 5xxxx | Chyba externí závislosti |