-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
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_stringGET /json/torrents HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_stringServer 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_stringIf your torrent hash is invalid server will reply with:
HTTP/1.1 200 OK
content-type: text/javascript
content-length: 0Otherwise 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_stringIf 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_stringIf your torrent hash is invalid server will reply with:
HTTP/1.1 200 OK
content-type: text/javascript
content-length: 0Otherwise 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_stringServer 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 download speed and global amount of data downloaded 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_stringServer 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%3A80Please note that:
-
Content-Type: application/x-www-form-urlencodedis required -
urlscontains 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 OKPOST 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/dummyAnnounceThis 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 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKPOST http://127.0.0.1/command/pauseall HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKPOST http://127.0.0.1/command/resumeall HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178hashes can contain multiple hashes separated by |
No matter if successful or not server will return the following reply:
HTTP/1.1 200 OKRequires 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=7Please 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 OKPOST http://127.0.0.1/command/getGlobalDlLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
31457283145728 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=4194304limit 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 OKPOST http://127.0.0.1/command/getGlobalUpLimit HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Content-Length: 0Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
31457283145728 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=4194304limit 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 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
338944338944 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=131072limit 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 OKRequires 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=fae6e49afa359ab07c3ef169438ff95d870bc178Server reply (example):
HTTP/1.1 200 OK
content-type: text/html
content-length: length
338944338944 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=131072limit 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 OKPOST 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:valuepairs if you only want to change one option - When setting preferences
scan_dirsmust always be accompanied withdownload_in_scan_dirs - Paths in
scan_dirsmust 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 >= 5.0 |
| Previous | qBittorrent v4.1.0 - v4.6.x |
| 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