Table of Contents
- Table of Contents
- Authorization
- GET methods
- 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
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This WebUI API documentation applies to qBittorrent v3.1.x. For other API versions, visit WebUI API.
Table of Contents
- 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
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 methods
Shutdown qBittorrent
GET /command/shutdown HTTP/1.1
User-Agent: Fiddler
Host: 127.0.0.1
Authorization: your_auth_string
Get torrent list
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 reasonX 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 reasonX 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 minuteMMm
- MM minutesHHh MMm
- HH hours and MM minutesDDd 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 torrentspausedUP
- torrent is paused and has finished downloadingpausedDL
- torrent is paused and has NOT finished downloadingqueuedUP
- queuing is enabled and torrent is queued for uploadqueuedDL
- queuing is enabled and torrent is queued for downloaduploading
- torrent is being seeded and data is being transferredstalledUP
- torrent is being seeded, but no connection were madecheckingUP
- torrent has finished downloading and is being checked; this status also applies to preallocation (if enabled) and checking resume data on qBt startupcheckingDL
- same ascheckingUP
, but torrent has NOT finished downloadingdownloading
- torrent is being downloaded and data is being transferredstalledDL
- 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.
Get torrent generic properties
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
Get torrent trackers
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 workingUpdating...
- tracker is currently being updatedNot 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)
Get torrent contents
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 download1
- normal priority2
- high priority7
- maximal priority
is_seed
- only present for the first file in torrent; true if torrent is in seed mode
Get global transfer info
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 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 qBittorrent preferences
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 day1
- every weekday2
- every weekend3
- every Monday4
- every Tuesday5
- every Wednesday6
- every Thursday7
- every Friday8
- every Saturday9
- 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 encryption1
- force encryption on2
- 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 disabled1
- HTTP proxy without authentication2
- SOCKS5 proxy without authentication3
- HTTP proxy with authentication4
- SOCKS5 proxy with authentication5
- 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 DyDNS1
- use NOIP
dyndns_username
- username for DDNS service
dyndns_password
- password for DDNS service
dyndns_domain
- your DDNS domain name
POST methods
Please adjust you auth string aacordingly for POST methods.
Download torrent from URL
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 requiredurls
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
Upload torrent from disk
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>
Add trackers to torrent
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
Pause torrent
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
Pause all torrents
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
Resume torrent
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
Resume all torrents
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
Delete torrent
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
Delete torrent with downloaded data
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
Recheck torrent
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
Increase torrent priority
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
Decrease torrent priority
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
Maximal torrent priority
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
Minimal torrent priority
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
Set file priority
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
Get global download limit
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.
Set global download limit
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
Get global upload limit
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.
Set global upload limit
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
Get torrent download limit
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.
Set torrent download limit
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
Get torrent upload limit
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.
Set torrent upload limit
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
Set qBittorrent preferences
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
Additional information
Version 3.0.8 bugs
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
General
- 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
Troubleshooting
External programs
Search plugins
Themes
Translation
WebUI
WebUI API
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 |
WebAPI clients
Alternate WebUI
Reverse proxy setup for WebUI access
WebUI HTTPS configuration
- 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
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
Development
- 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
Compilation
*BSD, Linux
- Alpine Linux
- CentOS 8.x
- Debian / Ubuntu and derivatives (CMake)
- Debian / Ubuntu and derivatives (autotools/qmake)
- Docker
- FreeBSD (no GUI)
- Fully static binaries on Linux (glibc or musl)
- Raspberry Pi OS / DietPi
- Raspbian for LeMaker Banana Pro