← Back to wiki index

API Reference

API is pluggable, plugins can use host add_api_method() to add custom API calls (see classes/pluginhost.php for details).

API is stateful. You need to login and maintain a session ID to perform further operations. Session ID should be specified using JSON parameter sid. I.e.

curl -d '{"sid":"your-session-id","op":"getVersion"}' http://example.com/tt-rss/api/

All API calls output JSON-encoded data. API can be enabled or disabled per-user in the preferences. Client parameters should be passed encoded using JSON in HTTP POST data (supported since version:1.5.3). Older versions allowed passing parameters using HTTP GET and POST, but this is no longer supported.

Numeric values

Numbers can also be passed (and are sometimes returned) as quoted string literals, i.e. "0".

Some tt-rss versions have issues recognizing 0 as a valid number (unimplemented strict type checking causes 0 to be equivalent to false in getHeadlines, etc) so it might be a good idea to pass numerics as quoted strings for better backwards compatibility.

Boolean values

For boolean parameters the expected syntax is:

https://git.tt-rss.org/fox/tt-rss/src/master/classes/api.php#L11

Testing API calls (using curl)

curl -d '{"op":"login","user":"you","password":"xxx"}' http://example.com/tt-rss/api/
curl -d '{"sid":"...","op":"getHeadlines","feed_id":"0","is_cat":"1"}' http://example.com/tt-rss/api/

Most of the calls (except login, logout, isLoggedIn) require valid login session or will return this error object: {“error”:“NOT_LOGGED_IN”}

Output format

All API methods return JSON data like this:

{"seq":0,"status":0,"content":{"version":"1.4.3.1"}}
1.4.3 and below (obsolete)

Methods return the “content” object below, sequence numbers and statuses are not supported.

Methods

getApiLevel (since version:1.5.8, api level 1)

Return an abstracted integer API version level, increased with each API functionality change. This is the proper way to detect host API functionality, instead of using getVersion.

{"level":1}

Whether tt-rss returns error for this method (e.g. version:1.5.7 and below) client should assume API level 0.

getVersion

Returns tt-rss version. As of, version:1.5.8 it is not recommended to use this to detect API functionality, please use getApiLevel instead.

{"version":"1.4.0"}

login

Parameters:

Returns client session ID.

{"session_id":"xxx"}

It can also return several error objects:

In case it isn’t immediately obvious, you have to login and get a session ID even if you are using single user mode. You can omit user and password parameters.

logout

Closes your login session. Returns either status-message {“status”:“OK”} or an error (e.g. {“error”:“NOT_LOGGED_IN”})

isLoggedIn

Returns a status message with boolean value showing whether your client (e.g. specific session ID) is currently logged in.

{"status":false}

getUnread

Returns an integer value of currently unread articles.

{"unread":"992"}

getCounters

Returns JSON-encoded counter information. Requires version:1.5.0.

getFeeds

Returns JSON-encoded list of feeds. The list includes category id, title, feed url, etc.

Parameters:

Pagination:

Limit and offset are useful if you need feedlist pagination. If you use them, you shouldn’t filter by unread, handle filtering in your app instead.

Special category IDs are as follows:

Added in version:1.5.0:

Known bug: Prior to version:1.5.0 passing null or 0 cat_id to this method returns full list of feeds instead of Uncategorized feeds only.

getCategories

Returns JSON-encoded list of categories with unread counts.

Nested mode in this case means that a flat list of only topmost categories is returned and unread counters include counters for child categories.

This should be used as a starting point, to display a root list of all (for backwards compatibility) or topmost categories, use getFeeds to traverse deeper.

getHeadlines

Returns JSON-encoded list of headlines.

Parameters:

Limit:

Before API level 6 maximum amount of returned headlines is capped at 60, API 6 and above sets it to 200.

This parameters might change in the future (supported since API level 2):

Special feed IDs are as follows:

Sort order values:

updateArticle

Update information on specified articles.

Parameters:

E.g. to set unread status of articles X and Y to false use the following:

?article_ids=X,Y&mode=0&field=2

Since version:1.5.0 returns a status message:

{"status":"OK","updated":1}

“Updated” is number of articles updated by the query.

getArticle

Requests JSON-encoded article object with specific ID.

Since version:1.4.3 also returns article attachments.

getConfig

Returns tt-rss configuration parameters:

{"icons_dir":"icons","icons_url":"icons","daemon_is_running":true,"num_feeds":71}

updateFeed

Tries to update specified feed. This operation is not performed in the background, so it might take considerable time and, potentially, be aborted by the HTTP server.

Returns status-message if the operation has been completed.

{"status":"OK"}

getPref

Returns preference value of specified key.

{"value":true}

catchupFeed

Required version: version:1.4.3

Tries to catchup (e.g. mark as read) specified feed.

Parameters:

Returns status-message if the operation has been completed.

{"status":"OK"}

getCounters

Required version: version:1.5.0

Returns a list of unread article counts for specified feed groups.

Parameters:

Output mode is a character string, comprising several letters (defaults to “flc”):

Several global counters are returned as well, those can’t be disabled with output_mode.

getLabels (since API level 1)

Returns list of configured labels, as an array of label objects:

{"id":2,"caption":"Debian","fg_color":"#e14a00","bg_color":"#ffffff","checked":false},

Before version:1.7.5

Returned id is an internal database id of the label, you can convert it to the valid feed id like this:

feed_id = -11 - label_id

After:

No conversion is necessary.

Parameters:

setArticleLabel (since API level 1)

Assigns article_ids to specified label.

Parameters:

Note: Up until version:1.15 setArticleLabel() clears the label cache for the specified articles. Make sure to regenerate it (e.g. by calling API method getLabels() for the respecting articles) when you’re using methods which don’t do that by themselves (e.g. getHeadlines()) otherwise getHeadlines() will not return labels for modified articles.

shareToPublished (since API level 4 - version:1.6.0)

Creates an article with specified data in the Published feed.

Parameters:

subscribeToFeed (API level 5 - version:1.7.6)

Subscribes to specified feed, returns a status code. See subscribe_to_feed() in functions.php for details.

Parameters:

unsubscribeFeed (API level 5 - version:1.7.6)

Unsubscribes specified feed.

Parameters:

getFeedTree (API level 5 - version:1.7.6)

Returns full tree of categories and feeds.

Note: counters for most feeds are not returned with this call for performance reasons.