Tribler REST API

Overview

The Tribler REST API allows you to create your own applications with the channels, torrents and other data that can be found in Tribler. Moreover, you can control Tribler and add data to Tribler using various endpoints. This documentation explains the format and structure of the endpoints that can be found in this API. Note that this API is currently under development and more endpoints will be added over time.

Making requests

The API has been built using the aiohttp library. Requests go over HTTP where GET requests should be used when data is fetched from the Tribler core and POST requests should be used if data in the core is manipulated (such as adding a torrent or removing a download). Responses of the requests are in JSON format. Tribler should be running either headless or with the GUI before you can use this API. To make successful requests, you should pass the X-Api-Key header, which can be found in your Tribler configuration file (triblerd.conf).

Some requests require one or more parameters. These parameters are passed using the JSON format. An example of performing a request with parameters using the curl command line tool can be found below:

curl -X PUT -H "X-Api-Key: <YOUR API KEY>" http://localhost:52194/mychannel/rssfeeds/http%3A%2F%2Frssfeed.com%2Frss.xml

Alternatively, requests can be made using Swagger UI by starting Tribler and opening http://localhost:52194/docs in a browser.

Note: 52194 is a default port value. It can be changed by setting up “CORE_API_PORT” environment variable.

Error handling

If an unhandled exception occurs the response will have code HTTP 500 and look like this:

{
    "error": {
        "handled": False,
        "code": "SomeException",
        "message": "Human readable error message"
    }
}

If a valid request of a client caused a recoverable error the response will have code HTTP 500 and look like this:

{
    "error": {
        "handled": True,
        "code": "DuplicateChannelIdError",
        "message": "Channel name already exists: foo"
    }
}

Download states

There are various download states possible which are returned when fetching downloads. These states are explained in the table below.

DLSTATUS_ALLOCATING_DISKSPACE

Libtorrent is allocating disk space for the download

DLSTATUS_WAITING4HASHCHECK

The download is waiting for the hash check to be performed

DLSTATUS_HASHCHECKING

Libtorrent is checking the hashes of the download

DLSTATUS_DOWNLOADING

The torrent is being downloaded

DLSTATUS_SEEDING

The torrent has been downloaded and is now being seeded to other peers

DLSTATUS_STOPPED

The torrent has stopped downloading, either because the downloading has completed or the user has stopped the download

DLSTATUS_STOPPED_ON_ERROR

The torrent has stopped because an error occurred

DLSTATUS_METADATA

The torrent information is being fetched from the DHT

DLSTATUS_CIRCUITS

The (anonymous) download is building circuits