-
Notifications
You must be signed in to change notification settings - Fork 0
Available Fields
qBittorrent Automation provides access to 8 different API endpoint categories through dot notation.
| Category | API Endpoint | API Calls | Cache Scope | Description |
|---|---|---|---|---|
info.* |
/torrents/info | Pre-loaded (free) | Per execution | Core torrent data from main list |
trackers.* |
/torrents/trackers | 1 per torrent | Per execution | Tracker information (collection) |
files.* |
/torrents/files | 1 per torrent | Per execution | File list and details (collection) |
peers.* |
/sync/torrentPeers | 1 per torrent | Per execution | Connected peers (collection) |
properties.* |
/torrents/properties | 1 per torrent | Per execution | Extended torrent metadata |
webseeds.* |
/torrents/webseeds | 1 per torrent | Per execution | Web seed sources (collection) |
transfer.* |
/transfer/info | 1 total (global) | Per execution | Global transfer statistics |
app.* |
/app/preferences | 1 total (global) | Per execution | Application preferences |
Performance Notes:
- info.*: Already loaded, use freely
- Per-torrent fields: Cached after first use for that torrent
- Global fields: Cached after first use, shared across all torrents
- Collection fields (trackers, files, peers, webseeds): Return lists, operators check ANY item
No additional API calls required - already loaded
| Field | Type | Description | Example Values |
|---|---|---|---|
info.hash |
string | Torrent info hash (40-char hex) | "8c9a6e4f3b2d1a..." |
info.name |
string | Torrent name | "Movie.2160p.BluRay" |
info.state |
string | Current state |
downloading, uploading, stalledUP, stalledDL, pausedUP, pausedDL, queuedUP, queuedDL, checkingUP, checkingDL, error, missingFiles, metaDL
|
info.category |
string | Category name |
"movies", "" (empty) |
info.tags |
string | Comma-separated tags |
"hd,private", ""
|
info.size |
integer | Total size in bytes |
1073741824 (1 GB) |
info.progress |
float | Download progress (0.0-1.0) |
0.75 (75%) |
info.dlspeed |
integer | Download speed (bytes/s) |
1048576 (1 MB/s) |
info.upspeed |
integer | Upload speed (bytes/s) |
524288 (512 KB/s) |
info.downloaded |
integer | Downloaded bytes | 1073741824 |
info.uploaded |
integer | Uploaded bytes | 2147483648 |
info.ratio |
float | Upload/download ratio | 2.0 |
info.dl_limit |
integer | Download limit (bytes/s, -1=unlimited) |
1048576, -1
|
info.up_limit |
integer | Upload limit (bytes/s, -1=unlimited) |
524288, -1
|
info.num_seeds |
integer | Connected seeds | 5 |
info.num_leechs |
integer | Connected leeches | 2 |
info.num_complete |
integer | Complete sources (from tracker) | 50 |
info.num_incomplete |
integer | Incomplete sources (from tracker) | 10 |
info.eta |
integer | Estimated time remaining (seconds) |
3600 (1 hour) |
info.seeding_time |
integer | Total seeding time (seconds) |
86400 (1 day) |
info.added_on |
integer | Unix timestamp when added | 1609459200 |
info.completion_on |
integer | Unix timestamp when completed |
1609545600, -1 (not completed) |
info.tracker |
string | Primary tracker URL | "https://tracker.example.com" |
info.save_path |
string | Save directory | "/downloads/movies" |
info.content_path |
string | Full path to content | "/downloads/movies/Movie" |
info.priority |
integer | Queue priority (1=highest, 8=lowest) | 1 |
info.auto_tmm |
boolean | Automatic Torrent Management enabled |
true, false
|
info.force_start |
boolean | Force start enabled |
true, false
|
Common Use Cases:
# By state
- field: info.state
operator: ==
value: stalledUP
# By name pattern
- field: info.name
operator: matches
value: '(?i).*(1080p|2160p).*'
# By category
- field: info.category
operator: ==
value: "" # No category
# By ratio
- field: info.ratio
operator: ">="
value: 2.0
# By age
- field: info.added_on
operator: older_than
value: "30 days"
# By size
- field: info.size
operator: ">"
value: 10737418240 # > 10GB
# By completion
- field: info.completion_on
operator: "!="
value: -1 # Has completedOne API call per torrent (cached after first use)
Collection: Returns list of values. Operators check if ANY tracker matches.
| Field | Type | Description | Example Values |
|---|---|---|---|
trackers.url |
string | Tracker announce URL | "https://tracker.example.com/announce" |
trackers.status |
integer | Tracker status code |
0=disabled, 1=not contacted, 2=working, 3=updating, 4=not working |
trackers.tier |
integer | Tracker tier (failover priority) |
0, 1, 2... |
trackers.num_peers |
integer | Peers reported by this tracker | 50 |
trackers.num_seeds |
integer | Seeds reported by this tracker | 30 |
trackers.num_leeches |
integer | Leeches reported by this tracker | 20 |
trackers.num_downloaded |
integer | Times downloaded (from tracker) | 1000 |
trackers.msg |
string | Tracker status message |
"Success", "Unregistered", "Not found"
|
Collection Behavior:
# Returns TRUE if ANY tracker URL contains ".private"
- field: trackers.url
operator: contains
value: ".private"
# Returns TRUE if ANY tracker status is 4 (not working)
- field: trackers.status
operator: ==
value: 4Common Use Cases:
# Private tracker detection
- field: trackers.url
operator: contains
value: ".private"
# Specific tracker
- field: trackers.url
operator: contains
value: "tracker.example.com"
# Working trackers only
- field: trackers.status
operator: ==
value: 2
# Dead trackers
- field: trackers.status
operator: in
value: [0, 4]One API call per torrent (cached after first use)
Collection: Returns list of values. Operators check if ANY file matches.
| Field | Type | Description | Example Values |
|---|---|---|---|
files.name |
string | File path/name within torrent |
"Movie/movie.mkv", "sample.avi"
|
files.size |
integer | File size in bytes | 1073741824 |
files.progress |
float | File download progress (0.0-1.0) | 0.95 |
files.priority |
integer | File priority |
0=do not download, 1=normal, 6=high, 7=maximum |
files.is_seed |
boolean | File is complete |
true, false
|
files.piece_range |
list[int] | Piece range [start, end] | [0, 500] |
Collection Behavior:
# Returns TRUE if ANY file name ends with .rar
- field: files.name
operator: matches
value: '(?i)\.rar$'
# Returns TRUE if ANY file is larger than 10GB
- field: files.size
operator: ">"
value: 10737418240Common Use Cases:
# Block specific file extensions
- field: files.name
operator: matches
value: '(?i)\.(rar|zip|7z)$'
# Detect sample files
- field: files.name
operator: contains
value: "sample"
# Find large files
- field: files.size
operator: ">"
value: 5368709120 # > 5GBOne API call per torrent (cached after first use)
Contains extended metadata not available in info.*.
| Field | Type | Description |
|---|---|---|
properties.save_path |
string | Save directory path |
properties.creation_date |
integer | Torrent creation timestamp |
properties.piece_size |
integer | Piece size in bytes |
properties.comment |
string | Torrent comment field |
properties.total_wasted |
integer | Wasted bytes (hash fails) |
properties.total_uploaded |
integer | Total uploaded bytes |
properties.total_downloaded |
integer | Total downloaded bytes |
properties.up_limit |
integer | Upload limit (bytes/s) |
properties.dl_limit |
integer | Download limit (bytes/s) |
properties.time_elapsed |
integer | Active time (seconds) |
properties.seeding_time |
integer | Seeding time (seconds) |
properties.nb_connections |
integer | Current connections |
properties.nb_connections_limit |
integer | Connection limit |
properties.share_ratio |
float | Share ratio |
properties.addition_date |
integer | Date added timestamp |
properties.completion_date |
integer | Date completed timestamp |
properties.created_by |
string | Torrent creator string |
properties.dl_speed_avg |
integer | Average download speed |
properties.dl_speed |
integer | Current download speed |
properties.eta |
integer | ETA in seconds |
properties.last_seen |
integer | Last seen complete timestamp |
properties.peers |
integer | Connected peers |
properties.peers_total |
integer | Total peers in swarm |
properties.pieces_have |
integer | Pieces downloaded |
properties.pieces_num |
integer | Total pieces |
properties.reannounce |
integer | Seconds until next reannounce |
properties.seeds |
integer | Connected seeds |
properties.seeds_total |
integer | Total seeds in swarm |
properties.total_size |
integer | Total size in bytes |
properties.up_speed_avg |
integer | Average upload speed |
properties.up_speed |
integer | Current upload speed |
Note: Most data overlaps with info.*. Use properties.* only when you need fields not available in info.*.
Single API call per execution (cached, shared across all torrents)
Global transfer statistics for the entire qBittorrent instance.
| Field | Type | Description |
|---|---|---|
transfer.dl_info_speed |
integer | Global download speed (bytes/s) |
transfer.up_info_speed |
integer | Global upload speed (bytes/s) |
transfer.dl_info_data |
integer | Session downloaded bytes |
transfer.up_info_data |
integer | Session uploaded bytes |
transfer.connection_status |
string | Connection status: "connected", "firewalled", "disconnected"
|
transfer.dht_nodes |
integer | DHT nodes connected |
Use Cases:
# Pause torrents if global speed maxed
- field: transfer.dl_info_speed
operator: ">"
value: 10485760 # > 10 MB/s
# Check connection before operations
- field: transfer.connection_status
operator: ==
value: "connected"Single API call per execution (cached, shared across all torrents)
qBittorrent application settings.
| Field | Type | Description |
|---|---|---|
app.save_path |
string | Default save path |
app.temp_path |
string | Temp path for incomplete downloads |
app.temp_path_enabled |
boolean | Use temp path |
app.max_active_downloads |
integer | Max active downloads |
app.max_active_torrents |
integer | Max active torrents |
app.max_active_uploads |
integer | Max active uploads |
app.dl_limit |
integer | Global download limit (bytes/s, -1=unlimited) |
app.up_limit |
integer | Global upload limit (bytes/s, -1=unlimited) |
app.max_connec |
integer | Max global connections |
app.max_connec_per_torrent |
integer | Max connections per torrent |
app.dht |
boolean | DHT enabled |
app.pex |
boolean | Peer Exchange enabled |
app.lsd |
boolean | Local Service Discovery enabled |
app.encryption |
integer | Encryption: 0=prefer unencrypted, 1=prefer encrypted, 2=require encrypted |
app.proxy_type |
integer | Proxy type: -1=none, 1=HTTP, 2=SOCKS5 |
app.queueing_enabled |
boolean | Queueing system enabled |
app.autorun_enabled |
boolean | Run external program on completion |
app.autorun_program |
string | External program path |
Use Cases:
# Check encryption requirement
- field: app.encryption
operator: ==
value: 2 # Require encrypted
# Verify queueing enabled
- field: app.queueing_enabled
operator: ==
value: trueqbt-rules v0.3.0 | Python-based rules engine for qBittorrent automation
GitHub • PyPI • Issues • Discussions • Contributing • License
Requirements: Python 3.8+ • qBittorrent 5.0+
Made with ❤️ by the qbt-rules community | Licensed under MIT
v0.3.0 | GitHub
- ✅ Unified CLI (
qbt-rules) - ✅ Custom triggers
- ✅ Trigger-agnostic mode
- ✅ Size operators (
50GB)