-
-
Notifications
You must be signed in to change notification settings - Fork 4k
WebUI API (qBittorrent v3.1.x)
This WebUI API documentation applies to qBittorrent v3.1.x. For other API versions, visit WebUI API.
- Authorization
- GET methods
- Shutdown qBittorrent
- Get torrent list
- Get torrent generic properties
- Get torrent trackers
- Get torrent contents
- Get global transfer info
- Get qBittorrent preferences
- POST methods
- Download torrent from URL
- Upload torrent from disk
- Add trackers to torrent
- Pause torrent
- Pause all torrents
- Resume torrent
- Resume all torrents
- Delete torrent
- Delete torrent with downloaded data
- Recheck torrent
- Increase torrent priority
- Decrease torrent priority
- Maximal torrent priority
- Minimal torrent priority
- Set file priority
- Get global download limit
- Set global download limit
- Get global upload limit
- Set global upload limit
- Get torrent download limit
- Set torrent download limit
- Get torrent upload limit
- Set torrent upload limit
- Set qBittorrent preferences
- Additional information
- Version 3.0.8 bugs
Authorization requires using Authorization
header inside GET/POST requests. qBittorrent uses the standard Digest Authorization type (using a MD5 hash generator).
For example on Python using requests:
import requests
from requests.auth import HTTPDigestAuth
response = requests.post('http://127.0.0.1:8080/command/download', {'urls': magnet_link}, auth=HTTPDigestAuth(username, password))
if not response.ok:
response.raise_for_status()
response.content
- Digest Authorization standard
This page describes how this auth method should ideally work. The most important thing there is response
field generation.
Response is generated like this: MD5 ( A1 + ':' + nonce + ':' + A2 )
where
A1 is MD5 (username + ':' + realm + ':' + password)
A2 is MD5 (<method type string (e.g. GET or POST)> + ':' + uri)
- Server Auth response
When you fail Authorization or don't supply required header qBittorrent will send the following reply (example):
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest realm="Web UI Access", nonce="a3f396f2dcc1cafae73637e2ac321134", opaque="a3f396f2dcc1cafae73637e2ac321134", stale="false", algorithm="MD5", qop="auth"
nonce
and opaque
values will be random, nevertheless it looks like matching them is not required for successful authorization - qBittorrent doesn't track user session.
- Client Auth request
We will now generate our request to the server containing proper Authorization header based on the example above.
-
User-Agent
You can place whatever you want as user agent, it is not required anyway.
User-Agent: Fiddler
-
Host
Server address or domain name.
Host: 127.0.0.1
-
Authorization
This header is required.
Authorization: Digest username="admin", realm="Web UI Access", nonce="a3f396f2dcc1cafae73637e2ac321134", uri="/", response="4067cfe4c029cd00b56076c78abd034c" ```
All fields in this header are required. Since `nonce` is not tracked by qBittorrent you should MD5-generate it yourself either one-time or each time you do any request. `uri` is not checked, if you want to GET host/someurl and `uri` doesn't match this value - no problem, just remember that `uri` is used in `response` generation.
In Short: **You don't need a previous server reply in order to generate a proper request.**
You must supply Authorization header in any POST/GET request you issue.
-
End Result
Server reply:
HTTP/1.1 401 Unauthorized WWW-Authenticate: Digest realm="Web UI Access", nonce="a3f396f2dcc1cafae73637e2ac321134", opaque="a3f396f2dcc1cafae73637e2ac321134", stale="false", algorithm="MD5", qop="auth" ```
Client request:
```http
GET / HTTP/1.1 User-Agent: Fiddler Host: 127.0.0.1 Authorization: Digest username="admin", realm="Web UI Access", nonce="a3f396f2dcc1cafae73637e2ac321134", uri="/", response="4067cfe4c029cd00b56076c78abd034c" ```
GET /command/shutdown HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
GET /json/torrents HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Server will return the following reply (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
[{"hash":"0283b35cc14387a4f6d01de33aa012fb1b740df6","name":"Sword of the Stars II Enhanced Edition","size":"1.8 ГиБ","progress":1,"dlspeed":"0 Б/с","upspeed":"0 Б/с","priority":"*","num_seeds":"0","num_leechs":"0","ratio":"0.1","eta":"∞","state":"stalledUP"},{another_torrent_info}]
where
hash
- torrent hash; most queries will use torrent hash as parameter
name
- torrent name
size
- size of files and folders in torrent selected for download; possible values:
-
Unknown
- this may happen, which means qBt couldn't determine torrent size for some reason -
X suffix
- X B/KiB/MiB/GiB/TiB
Proper suffix is appended automatically by qBt.
progress
- float number for download completion percentage, where 1 == 100%, 0 == 0%, and, 0.58 == 58%
dlspeed
and upspeed
: torrent download and upload speed respectively, possible values:
-
Unknown
- qBt couldn't determine torrent speed for some reason -
X suffix/s
- X B/KiB/MiB/GiB/TiB
priority
- torrent number in priority queue; contains *
if queuing is disabled or torrent is in seed mode
num_seeds
and num_leechs
- number of peers and lecchers
ratio
- Uploaded/Downloaded ratio, rounded to first digit after comma; contains ∞
if ratio > 100
eta
- contains ∞
if torrent is seeding only or eta >= 8640000 seconds; possible values:
-
0
- zero -
< 1m
- less than a minute -
MMm
- MM minutes -
HHh MMm
- HH hours and MM minutes -
DDd HHh
- DD days and HH hours
DD/HH/MM values can be truncated if first digit is zero
state
- torrent state, possible values:
-
error
- some error occurred, applies to paused torrents -
pausedUP
- torrent is paused and has finished downloading -
pausedDL
- torrent is paused and has NOT finished downloading -
queuedUP
- queuing is enabled and torrent is queued for upload -
queuedDL
- queuing is enabled and torrent is queued for download -
uploading
- torrent is being seeded and data is being transferred -
stalledUP
- torrent is being seeded, but no connection were made -
checkingUP
- torrent has finished downloading and is being checked; this status also applies to preallocation (if enabled) and checking resume data on qBt startup -
checkingDL
- same ascheckingUP
, but torrent has NOT finished downloading -
downloading
- torrent is being downloaded and data is being transferred -
stalledDL
- torrent is being downloaded, but no connection were made
BIG FAT WARNING: size
, dlspeed
, upspeed
and eta
suffixes (e.g. MiB, KiB/s) will depend on current language selected in qBt; these suffixes will be translated.
BIG FAT WARNING 2: Raw data this methods provides can exceed 40 KiB for ~200 torrents. Continuous polling is strongly discouraged for mobile clients.
Requires known torrent hash, get 'em from torrent list.
GET /json/propertiesGeneral/fae6e49afa359ab07c3ef169438ff95d870bc178 HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
If your torrent hash is invalid server will reply with:
HTTP/1.1 200 OK
content-type: text/javascript
content-length: 0
Otherwise server will return the following reply (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
{"save_path":"D:/Downloads/somefolder","creation_date":"16 ноября 2011 г. 20:52:54","piece_size":"4.0 МиБ","comment":"comment_string_if_any","total_wasted":"0 Б","total_uploaded":"41.9 ГиБ (0 Б за эту сессию)","total_downloaded":"261.2 МиБ (0 Б за эту сессию)","up_limit":"∞","dl_limit":"∞","time_elapsed":"53д 0ч (Раздается 0)","nb_connections":"0 (100 макс)","share_ratio":"∞"}
where
path
- path where torrent contents are saved, separated by slashes
creation_date
- (translated string) date when torrent was added
piece_size
- (translated string) torrent piece size
comment
- torrent comment
total_wasted
- (translated string) amount of data 'wasted'
total_uploaded
and total_downloaded
- (translated string) amounts of data uploaded and downloaded, value in parentheses count current session data only
up_limit
and dl_limit
- (translated string) upload and download speed limits for current torrent
time_elapsed
- (translated string) total time active; value in parentheses represents current seeding time
nb_connections
- (translated string) number of connections, value in parentheses represents maximum number of connections per torrent set in preferences
share_ratio
- (translated string) UL/DL ratio; contains ∞
for ratios > 100
Requires known torrent hash, get 'em from torrent list.
GET http://127.0.0.1/json/propertiesTrackers/fae6e49afa359ab07c3ef169438ff95d870bc178 HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
If your torrent hash is invalid server will reply with:
HTTP/1.1 200 OK
content-type: text/javascript
content-length: 2
[]
Otherwise server will return the following reply (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
[{"url":"http://someaddress/announce","status":"Работает","num_peers":"1","msg":""},{"url":"http://retracker.local/announce","status":"Не соединился","num_peers":"0","msg":""}]
where
url
- tracker url
status
- (translated string) tracker status; possible values:
-
Working
- tracker has been contacted and is working -
Updating...
- tracker is currently being updated -
Not working
- tracker has been contacted, but it is not working (or doesn't send proper replies) -
Not contacted yet
- tracker has not been contacted yet
num_peers
- number of peers for current torrent eported by tracker
msg
- tracker message (there is no way of knowing what this message is - it's up to tracker admins)
Requires known torrent hash, get 'em from torrent list.
GET http://127.0.0.1/json/propertiesFiles/fae6e49afa359ab07c3ef169438ff95d870bc178 HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
If your torrent hash is invalid server will reply with:
HTTP/1.1 200 OK
content-type: text/javascript
content-length: 0
Otherwise server will return the following reply (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
[{"name":"Isekai no Seikishi Monogatari 01.mka","size":"70.4 МиБ","progress":0,"priority":0,"is_seed":true},{"name":"Isekai no Seikishi Monogatari 02.mka","size":"62.4 МиБ","progress":0,"priority":0}]
where
name
- file name
size
- (translated string) file size
progress
- float value, indicating file progress; 0 == 0% and 1 == 100%
priority
- file priority, possible values:
-
0
- do not download -
1
- normal priority -
2
- high priority -
7
- maximal priority
is_seed
- only present for the first file in torrent; true if torrent is in seed mode
This method returns info you usually see in qBt status bar.
GET http://127.0.0.1/json/transferInfo HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Server reply (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
{"dl_info":"Приём: 0 Б/с - Передано: 0 Б","up_info":"Отдача: 209.9 КиБ/с - Передано: 7.2 ГиБ"}
where
dl_info
- (translated string) contains current global downalod speed and global amount of data downaloded during this session
up_info
- (translated string) contains current global upload speed and global amount of data uploaded during this session
GET http://127.0.0.1/json/preferences HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Server reply; contents may vary depending on which settings are present in qBittorrent.ini (example):
HTTP/1.1 200 OK
content-type: text/javascript
content-length: length
{"locale":"ru_RU","save_path":"C:/Users/Dayman/Downloads","temp_path_enabled":false,"temp_path":"C:/Users/Dayman/Documents/Downloads/temp","scan_dirs":["D:/Browser Downloads"],"download_in_scan_dirs":[false],"export_dir_enabled":false,"export_dir":"","mail_notification_enabled":false,"mail_notification_email":"","mail_notification_smtp":"smtp.changeme.com","mail_notification_ssl_enabled":false,"mail_notification_auth_enabled":false,"mail_notification_username":"","mail_notification_password":"","autorun_enabled":false,"autorun_program":"","preallocate_all":false,"queueing_enabled":true,"max_active_downloads":2,"max_active_torrents":200,"max_active_uploads":200,"dont_count_slow_torrents":false,"incomplete_files_ext":false,"listen_port":31498,"upnp":false,"dl_limit":3072,"up_limit":3072,"max_connec":500,"max_connec_per_torrent":100,"max_uploads_per_torrent":15,"enable_utp":true,"limit_utp_rate":false,"limit_tcp_overhead":true,"alt_dl_limit":1024,"alt_up_limit":2048,"scheduler_enabled":false,"schedule_from_hour":8,"schedule_from_min":0,"schedule_to_hour":20,"schedule_to_min":0,"scheduler_days":0,"dht":true,"dhtSameAsBT":true,"dht_port":6881,"pex":true,"lsd":true,"encryption":0,"anonymous_mode":false,"proxy_type":-1,"proxy_ip":"0.0.0.0","proxy_port":8080,"proxy_peer_connections":false,"proxy_auth_enabled":false,"proxy_username":"","proxy_password":"","ip_filter_enabled":false,"ip_filter_path":null,"web_ui_port":80,"web_ui_username":"admin","web_ui_password":"8888efb275743684292cff99f57867a9","bypass_local_auth":false,"use_https":false,"ssl_key":"","ssl_cert":"","dyndns_enabled":false,"dyndns_service":0,"dyndns_username":"","dyndns_password":"","dyndns_domain":"changeme.dyndns.org"}
where
locale
- currently selected language (e.g. en_GB for english)
save_path
- default save path for torrents, separated by slashes
temp_path_enabled
- true if folder for incomplete torrents is enabled
temp_path
- path for incomplete torrents, separated by slashes
scan_dirs
- list of watch folders to add torrent automatically; slashes are used as path separators; list entries are separated by commas
download_in_scan_dirs
- true if torrents should be downloaded to watch folder; list entries are separated by commas
export_dir_enabled
- true if .torrent file should be copied to export directory upon adding
export_dir
- path to directory to copy .torrent files if export_dir_enabled
is enabled; path is separated by slashes
mail_notification_enabled
- true if e-mail notification should be enabled
mail_notification_email
- e-mail to send notifications to
mail_notification_smtp
- smtp server for e-mail notifications
mail_notification_ssl_enabled
- true if smtp server requires SSL connection
mail_notification_auth_enabled
- true if smtp server requires authentication
mail_notification_username
- username for smtp authentication
mail_notification_password
- password for smtp authentication
autorun_enabled
- true if external program should be run after torrent has finished downloading
autorun_program
- program path/name/arguments to run if autorun_enabled
is enabled; path is separated by slashes; you can use %f
and %n
arguments, which will be expanded by qBittorent as path_to_torrent_file and torrent_name (from the GUI; not the .torrent file name) respectively
preallocate_all
- true if file preallocation should take place, otherwise sparse files are used
queueing_enabled
- true if torrent queuing is enabled
max_active_downloads
- maximum number of active simultaneous downloads
max_active_torrents
- maximum number of active simultaneous downloads and uploads
max_active_uploads
- maximum number of active simultaneous uploads
dont_count_slow_torrents
- if true torrents w/o any activity (stalled ones) will not be counted towards max_active_*
limits; see dont_count_slow_torrents for more information
incomplete_files_ext
- if true .!qB
extension will be appended to incomplete files
listen_port
- port for incoming connections
upnp
- true if UPnP/NAT-PMP is enabled
dl_limit
- global download speed limit in KiB/s; -1
means no limit is applied
up_limit
- global upload speed limit in KiB/s; -1
means no limit is applied
max_connec
- maximum global number of simultaneous connections
max_connec_per_torrent
- maximum number of simultaneous connections per torrent
max_uploads_per_torrent
- maximum number of upload slots per torrent
enable_utp
- true if uTP protocol should be enabled; this option is only available in qBittorent built against libtorrent version 0.16.X and higher
limit_utp_rate
- true if [du]l_limit
should be applied to uTP connections; this option is only available in qBittorent built against libtorrent version 0.16.X and higher
limit_tcp_overhead
- true if [du]l_limit
should be applied to estimated TCP overhead (service data: e.g. packet headers)
alt_dl_limit
- alternative global download speed limit in KiB/s
alt_up_limit
- alternative global upload speed limit in KiB/s
scheduler_enabled
- true if alternative limits should be applied according to schedule
schedule_from_hour
- scheduler starting hour
schedule_from_min
- scheduler starting minute
schedule_to_hour
- scheduler ending hour
schedule_to_min
- scheduler ending minute
scheduler_days
- scheduler days; possible values:
-
0
- every day -
1
- every weekday -
2
- every weekend -
3
- every Monday -
4
- every Tuesday -
5
- every Wednesday -
6
- every Thursday -
7
- every Friday -
8
- every Saturday -
9
- every Sunday
dht
- true if DHT is enabled
dhtSameAsBT
- true if DHT port should match TCP port
dht_port
- DHT port if dhtSameAsBT
is false
pex
- true if PeX is enabled
lsd
- true if LSD is enabled
encryption
- possible values:
-
0
- prefer encryption -
1
- force encryption on -
2
- force encryption off
First options allows you to use both encrypted and unencrypted connections (this is the default); other options are mutually exclusive: e.g. by forcing encryption on you won't be able to use unencrypted connections and vice versa.
anonymous_mode
- if true anonymous mode will be enabled; read more here; this option is only available in qBittorent built against libtorrent version 0.16.X and higher
proxy_type
- possible values:
-
-1
- proxy is disabled -
1
- HTTP proxy without authentication -
2
- SOCKS5 proxy without authentication -
3
- HTTP proxy with authentication -
4
- SOCKS5 proxy with authentication -
5
- SOCKS4 proxy without authentication
proxy_ip
- proxy IP address or domain name
proxy_port
- proxy port
proxy_peer_connections
- true if peer and web seed connections should be proxified; this option will have any effect only in qBittorent built against libtorrent version 0.16.X and higher
proxy_auth_enabled
- true proxy requires authentication; doesn't apply to SOCKS4 proxies
proxy_username
- username for proxy authentication
proxy_password
- password for proxy authentication
ip_filter_enabled
- true if external IP filter should be enabled
ip_filter_path
- path to IP filter file (.dat, .p2p, .p2b files are supported); path is separated by slashes
web_ui_port
- WebUI port
web_ui_username
- WebUI username
web_ui_password
- MD5 hash of WebUI password; hash is generated from the following string: username:Web UI Access:plain_text_web_ui_password
bypass_local_auth
- true if auithetication challenge for loopback address (127.0.0.1) should be disabled
use_https
- true if WebUI HTTPS access is enabled
ssl_key
- SSL keyfile contents (this is a not a path)
ssl_cert
- SSL certificate contents (this is a not a path)
dyndns_enabled
- true if server DNS should be updated dynamically
dyndns_service
- possible values:
-
0
- use DyDNS -
1
- use NOIP
dyndns_username
- username for DDNS service
dyndns_password
- password for DDNS service
dyndns_domain
- your DDNS domain name
Please adjust you auth string aacordingly for POST methods.
This method can add torrents from urls and magnet links. BC links are also supported.
POST http://127.0.0.1/command/download HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
urls=http://www.nyaa.eu/?page=download%26tid=305093%0Ahttp://www.nyaa.eu/?page=download%26tid=305255%0Amagnet:?xt=urn:btih:4c284ebef5bf0d967e2e174cfe825d9fb40ae5e1%26dn=QBittorrent+2.8.4+Win7+Vista+64+working+version%26tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80%26tr=udp%3A%2F%2Ftracker.publicbt.com%3A80%26tr=udp%3A%2F%2Ftracker.istole.it%3A6969%26tr=udp%3A%2F%2Ftracker.ccc.de%3A80
Please note that:
-
Content-Type: application/x-www-form-urlencoded
is required -
urls
contains a list of links; links are separated with%0A
(LF newline) -
http://
,https://
,magnet:
andbc://bt/
links are supported - Links' contents must be escaped, e.g.
&
becomes%26
(don't know about other characters but ampersand MUST be escaped)
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/upload HTTP/1.1
Content-Type: multipart/form-data; boundary=-------------------------acebdf13572468
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: length
---------------------------acebdf13572468
Content-Disposition: form-data; name="torrents"; filename="8f18036b7a205c9347cb84a253975e12f7adddf2.torrent"
Content-Type: application/x-bittorrent
file_binary_data_goes_here
---------------------------acebdf13572468
Content-Disposition: form-data; name="torrents"; filename="UFS.torrent"
Content-Type: application/x-bittorrent
file_binary_data_goes_here
---------------------------acebdf13572468--
The above example will add two torrent files. file_binary_data_goes_here
represents raw data of torrent file (basically a byte array).
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
content-type: text/html
content-length: 64
<script type="text/javascript">window.parent.hideAll();</script>HTTP/1.1 200 OK
content-type: text/html
content-length: 64
<script type="text/javascript">window.parent.hideAll();</script>
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/addTrackers HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178&urls=http://192.168.0.1/announce%0Audp://192.168.0.1:3333/dummyAnnounce
This adds two trackers to torrent with hash fae6e49afa359ab07c3ef169438ff95d870bc178
. Note %0A
(aka LF newline) between trackers. Ampersand in tracker urls MUST be escaped.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/pause HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/pauseall HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/resume HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/resumeall HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/delete HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/deletePerm HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/recheck HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/increasePrio HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/decreasePrio HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/topPrio HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/bottomPrio HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hashes=fae6e49afa359ab07c3ef169438ff95d870bc178
hashes
can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/setFilePrio HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178&id=0&priority=7
Please consult torrent contents API for possible priority
values. id
values coresspond to contents returned by torrent contents API, e.g. id=0
for first file, id=1
for second file, etc.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/getGlobalDlLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0
Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
3145728
3145728
is the value of current global download speed limit in bytes; this value will be zero if no limit is applied.
POST http://127.0.0.1/command/setGlobalDlLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
limit=4194304
limit
is global download speed limit you want to set in bytes.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/getGlobalUpLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0
Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
3145728
3145728
is the value of current global upload speed limit in bytes; this value will be zero if no limit is applied.
POST http://127.0.0.1/command/setGlobalUpLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
limit=4194304
limit
is global upload speed limit you want to set in bytes.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/getTorrentDlLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178
Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
338944
338944
is the value of current torrent download speed limit in bytes; this value will be zero if no limit is applied.
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/setTorrentDlLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178&limit=131072
limit
is torrent download speed limit you want to set in bytes.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/getTorrentUpLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178
Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
338944
338944
is the value of current torrent upload speed limit in bytes; this value will be zero if no limit is applied.
Requires known torrent hash, get 'em from torrent list.
POST http://127.0.0.1/command/setTorrentUpLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
hash=fae6e49afa359ab07c3ef169438ff95d870bc178&limit=131072
limit
is torrent download speed limit you want to set in bytes.
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
POST http://127.0.0.1/command/setPreferences HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Type: application/x-www-form-urlencoded
Content-Length: length
json={"save_path":"C:/Users/Dayman/Downloads","queueing_enabled":false,"scan_dirs":["C:/Games","D:/Downloads"],"download_in_scan_dirs":[false,true]}
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OK
- There is no need to pass all possible preferences'
token:value
pairs if you only want to change one option - When setting preferences
scan_dirs
must always be accompanied withdownload_in_scan_dirs
- Paths in
scan_dirs
must exist, otherwise this option will have no effect - String values must be quoted; integer and boolean values must never be quoted
For a list of possible preference options see Get qBittorrent preferences
The following WebUI-related bugs exist in qBittorent v3.0.8 and lower:
- JSON generation bugs
-
'
and&
(apostrophe and ampersand) characters are escaped by backslash\
- JSON parsing bugs
- When setting qBittorent preferences JSON values, containing
:
semicolons will be disregarded; this mostly affects Windows users, whose paths start withDiskName:\
- When setting qBittorent preferences JSON bool lists (e.g.
"download_in_scan_dirs":[false,true]
) will be treated as all bool values in the list arefalse
, this doesn't affect bool values outside JSON lists
- Installing qBittorrent
- Frequently Asked Questions (FAQ)
- qBittorrent options (current and deprecated)
- How to use qBittorrent as a tracker
- How to use portable mode
- Anonymous mode
- How to bind your vpn to prevent ip leaks
State | Version |
---|---|
Current | qBittorrent ≥ v4.1 |
Previous | qBittorrent v3.2.0 - v4.0.x |
Obsolete | qBittorrent < v3.2.0 |
- Let's Encrypt Certificates + Caddy2 Reverse Proxy
- Let's Encrypt certificates + NGINX reverse proxy - Linux
- Let's Encrypt certificates - Linux
- Self-signed SSL certificates - Linux
- Running qBittorrent without X server (WebUI only)
- Running qBittorrent without X server (WebUI only, systemd service set up, Ubuntu 15.04 or newer)
- OpenVPN and qBittorrent without X server
- Coding style
- Contributing
- How to write a search plugin
- Using VSCode for qBittorrent development
- Setup GDB with Qt pretty printers
- How to debug WebUI code