TorBox.NET is a .NET wrapper library for the TorBox API, written in C#.
Forked from rogerfar's RD.NET.
Currently supports Torrents, Usenet, WebDL, queued downloads, and user API calls.
Install the package from NuGet:
dotnet add package TorBox.NETCreate an instance of TorBoxNetClient for each user you want to authenticate. If you need to support multiple users, create a new instance whenever you switch users.
var client = new TorBoxNetClient();The client follows the TorBox API closely in naming and parameters:
var client = new TorBoxNetClient();
client.UseApiAuthentication("my-api-key");
var torrents = await client.Torrents.GetCurrentAsync(skipCache: true);
var webDownloads = await client.WebDownloads.GetCurrentAsync(skipCache: true);Call UseApiAuthentication with the user's TorBox API key:
client.UseApiAuthentication("user API key");You can find your TorBox API key in your TorBox account settings.
GetHashInfoAsync is deprecated. On or after 31 August 2026, it will be removed. Migrate to GetIdInfoAsync and use torrent ID instead of torrent hash.
ControlAsync currently accepts a torrent hash. On or after 31 August 2026, it will require a torrentId instead. Migrate to ControlByIdAsync.
On or after 31 August 2026, ControlByIdAsync is expected to become an alias for ControlAsync after ControlAsync changes to require a torrentId.
Add a magnet link:
var result = await client.Torrents.AddMagnetAsync(
"magnet:?xt=urn:btih:...",
seeding: 1,
allowZip: false,
name: "Example torrent");Add a .torrent file:
var bytes = await File.ReadAllBytesAsync("example.torrent");
var result = await client.Torrents.AddFileAsync(bytes, seeding: 1);List current torrents:
var torrents = await client.Torrents.GetCurrentAsync(skipCache: true);Request a download link after TorBox has cached the torrent:
var download = await client.Torrents.RequestDownloadAsync(
torrent_id: 123,
file_id: 456,
zip: false);Add an NZB link:
var result = await client.Usenet.AddLinkAsync(
"https://example.com/file.nzb",
post_processing: 3,
name: "Example NZB");Add an NZB file:
var bytes = await File.ReadAllBytesAsync("example.nzb");
var result = await client.Usenet.AddFileAsync(bytes, post_processing: 3);Request a download link after TorBox has cached the Usenet download:
var download = await client.Usenet.RequestDownloadAsync(
usenet_id: 123,
file_id: 0,
zip: false);Create a WebDL from a direct download or supported hoster link:
var result = await client.WebDownloads.AddLinkAsync(
"https://example.com/file.zip",
name: "file.zip",
as_queued: false,
add_only_if_cached: false);List current WebDL items:
var webDownloads = await client.WebDownloads.GetCurrentAsync(skipCache: true);Request a generated download link after TorBox has cached the WebDL:
var download = await client.WebDownloads.RequestDownloadAsync(
web_id: 123,
file_id: 0,
zip: false);Check supported WebDL hosters:
var hosters = await client.WebDownloads.GetHostersAsync();Queued downloads can be queried directly:
var queuedTorrents = await client.Queued.GetQueuedAsync(type: "torrent");
var queuedUsenet = await client.Queued.GetQueuedAsync(type: "usenet");
var queuedWebDl = await client.Queued.GetQueuedAsync(type: "webdl");To run tests, create TorBoxNET.Test/secret.json. An example file exists at TorBoxNET.Test/secret.json.example.
You will need a link from a supported provider to run WebDL tests.