Skip to content

The external surface of a jack instance: the peer API other jacks consume, plus the Torznab indexer and qBittorrent download-client APIs the operator's Radarr/Sonarr talk to.

Servers

http://localhost:5225Default local port (PORT)

System

Health and identity probes.


Health check

GET
/ping

Unauthenticated liveness probe for Docker/orchestrators.

Responses

The server is up

application/json
JSON
{
  
"status": "OK"
}

Samples


Peer handshake

GET
/handshake

Identity and protocol version. Peers probe this at init and check the version against their minimum compatible version.

Authorizations

X-Api-Key

Peer API key issued by this instance's operator. Scoped to /handshake and /peer/*.

Type
API Key (header: X-Api-Key)

Responses

Identity and protocol version

application/json
JSON
{
  
"name": "string",
  
"version": "string"
}

Samples


Log in

POST
/api/v2/auth/login

Form fields username/password. The password must be the master key or a managed key; on success a SID session cookie is set. Mirrors qBittorrent: the body is Ok. or Fails., always 200.

Responses

Ok. with a SID cookie, or Fails.

text/plain

Samples


Log out

POST
/api/v2/auth/logout

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.; the SID cookie is cleared

text/plain

Samples


WebAPI version

GET
/api/v2/app/webapiVersion

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

The emulated qBittorrent WebAPI version

text/plain

Samples


Application version

GET
/api/v2/app/version

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

The emulated qBittorrent application version

text/plain

Samples


Client preferences

GET
/api/v2/app/preferences

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

qBittorrent-shaped preferences object

application/json

Samples


List torrents

GET
/api/v2/torrents/info

*arr polls this for download progress. Optional category and hashes (pipe-separated) filters.

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Parameters

Query Parameters

category

Filter by category

Type
string
hashes

Pipe-separated torrent hashes

Type
string

Responses

qBittorrent-shaped torrent list

application/json

Samples


Torrent properties

GET
/api/v2/torrents/properties

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Parameters

Query Parameters

hash*
Type
string
Required

Responses

Properties for the torrent

application/json

Samples


Torrent file list

GET
/api/v2/torrents/files

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Parameters

Query Parameters

hash*
Type
string
Required

Responses

Files belonging to the torrent

application/json

Samples


List categories

GET
/api/v2/torrents/categories

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Known categories keyed by name

application/json

Samples


Add a torrent

POST
/api/v2/torrents/add

Multipart/form upload of stub .torrent files (torrents) and/or download URLs (urls, newline-separated), with an optional category. Only Jack stubs are accepted; each one queues an HTTP download from the owning peer.

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok. — download queued

text/plain

Samples


Delete torrents

POST
/api/v2/torrents/delete

Form fields hashes (pipe-separated) and deleteFiles (true/false).

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Set torrent category

POST
/api/v2/torrents/setCategory

Form fields hashes (pipe-separated) and category.

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Create a category

POST
/api/v2/torrents/createCategory

Acknowledged no-op: jack doesn't seed or prioritize, but *arr expects a 200 (real qBittorrent returns one too).

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Set share limits

POST
/api/v2/torrents/setShareLimits

Acknowledged no-op: jack doesn't seed or prioritize, but *arr expects a 200 (real qBittorrent returns one too).

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Move to top priority

POST
/api/v2/torrents/topPrio

Acknowledged no-op: jack doesn't seed or prioritize, but *arr expects a 200 (real qBittorrent returns one too).

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Set force start

POST
/api/v2/torrents/setForceStart

Acknowledged no-op: jack doesn't seed or prioritize, but *arr expects a 200 (real qBittorrent returns one too).

Authorizations

SID

qBittorrent WebUI session cookie obtained from /api/v2/auth/login.

Type
API Key (cookie: SID)

Responses

Ok.

text/plain

Samples


Peer

Endpoints other jack instances call to search this library and download files from it.


Search this library

GET
/peer/search

Search the local Radarr/Sonarr libraries by external id. Only movies/episodes that have files are returned. Serves empty results when no local source is configured.

Authorizations

X-Api-Key

Peer API key issued by this instance's operator. Scoped to /handshake and /peer/*.

Type
API Key (header: X-Api-Key)

Parameters

Query Parameters

imdbId
Type
string
tmdbId
Type
string
tvdbId
Type
string
season
Type
integer
Minimum
-9007199254740991
Maximum
9007199254740991
episode
Type
integer
Minimum
-9007199254740991
Maximum
9007199254740991

Responses

Matching releases, mirroring the *arr file metadata

application/json
JSON
{
  
"items": [
  
  
{
  
  
  
"additionalProperties": null
  
  
}
  
]
}

Samples


Get release metadata

GET
/peer/items/{itemId}

Authorizations

X-Api-Key

Peer API key issued by this instance's operator. Scoped to /handshake and /peer/*.

Type
API Key (header: X-Api-Key)

Parameters

Path Parameters

itemId*
Type
string
Required

Responses

Release metadata for the item

Samples


Stream the release file

GET
/peer/items/{itemId}/file

Streams the file straight from disk at the path the local *arr reports. Supports HTTP Range requests for resumable transfers.

Authorizations

X-Api-Key

Peer API key issued by this instance's operator. Scoped to /handshake and /peer/*.

Type
API Key (header: X-Api-Key)

Parameters

Path Parameters

itemId*
Type
string
Required

Responses

Full file stream

application/octet-stream

Samples


Torznab

Torznab indexer API the operator's Radarr/Sonarr search through. Responses are XML per the Torznab spec.


Torznab entrypoint

GET
/torznab/api

Single Torznab endpoint dispatching on the t query param: caps (capabilities), search (catalog/RSS), movie (imdbid/tmdbid), and tvsearch (tvdbid + season/ep). Id searches fan out to every configured peer; text (q) searches return empty results by design.

Authorizations

apikey

Managed key jack auto-registered in Radarr/Sonarr. Scoped to /torznab/*. Also accepted as the X-Api-Key header.

Type
API Key (query: apikey)

Parameters

Query Parameters

t*

Torznab function to run

Type
string
Required
Valid values
"caps""search""movie""tvsearch"
q

Free-text term. Non-empty terms return empty results; jack only searches by id.

Type
string
cat

Comma-separated Torznab category ids (2000 Movies, 5000 TV; subcategories roll up)

Type
string
imdbid

IMDb id for movie search

Type
string
tmdbid

TMDB id for movie search

Type
string
tvdbid

TVDB id for TV search

Type
string
season

Season number for TV search

Type
string
ep

Episode number for TV search

Type
string

Responses

Torznab XML: caps document or an RSS feed of releases

application/xml

Samples


Download a stub .torrent

GET
/torznab/download/{id}

Returns the stub .torrent for a release. The id is peerId:itemId (an optional .torrent suffix is stripped). The stub is bencoded data encoding just the peer and item — no trackers, no pieces — which *arr immediately hands back to the qBittorrent API to start the real HTTP transfer.

Authorizations

apikey

Managed key jack auto-registered in Radarr/Sonarr. Scoped to /torznab/*. Also accepted as the X-Api-Key header.

Type
API Key (query: apikey)

Parameters

Path Parameters

id*
Type
string
Required

Responses

Stub torrent file

application/x-bittorrent

Samples


Powered by VitePress OpenAPI

Released under the GPL-3.0 License.