iPX

API ipx 1.0.0

The HTTP API of an iPX server: everything the page does, a script can do. Every request and answer is JSON unless an item says otherwise. The page is served by ipx-web, which passes /api and /media on to ipx at the same address, so a script talks to the address people open in a browser.

Signing in

Send an API token, made in Settings under API tokens or with POST /api/tokens:

Authorization: Bearer ipx_…

A token acts as the person who made it, and is an admin only if they are. A browser signs in with POST /api/login instead and is given a cookie. Behind Cloudflare Access, Access stops a request with no Access sign-in before iPX sees it: send an Access service token's CF-Access-Client-Id and CF-Access-Client-Secret beside the API token.

Errors

A request that fails answers with its status and a sentence saying why, as plain text: 401 not signed in, 403 an admin's to do, 404 not there or not yours, 400 a request that cannot be done as asked, 409 a conflict the answer explains.

Ids

A feed's id is a short name made from its title, such as 99-invisible, and appears in the page's address when the feed is open. An episode is its feed's id and its guid, the guid URL-encoded in a path. A file (an enclosure) has a number. Times are Unix seconds.

Modules

auth
Who you are, signing in and out, and API tokens.
feeds
Your subscriptions: list, subscribe, change, unsubscribe, check, OPML.
entries
Episodes and posts: list, search, mark read or kept, save where you are.
files
Downloading, deleting and playing an episode’s file.
directory
Browse the directory and subscribe from it; iPX asks it on your behalf.
server
Its counts and version, and live updates.
admin
Server settings, accounts, the log and the directory’s administration. Admins only.

Types

Credentials
A name and password.
Me
Who is signed in.
MePatch
What PATCH /api/me changes.
Token
An API token, as listed.
NewToken
A token to make.
NewTokenMade
A token just made: the only time it is shown.
FeedRow
A feed as you see it: the feed, your settings for it and its counts for you.
FailingRow
Why a feed has been failing.
NewFeed
A feed to subscribe to.
Added
A feed subscribed to.
FeedPatch
What PATCH /api/feeds/{id} changes. Leave out what stays; null clears a field that can be cleared.
Marked
HowMany
Queued
FetchBody
What to check.
OpmlBody
Imported
Page
Which episodes, as query parameters.
EntryPage
A page of episodes.
EntryRow
An episode or post, with your state for it.
EncRow
An episode’s file.
Flags
Position
Force
A query parameter.
PopularRow
A feed in the directory. Never its address: subscribe by its id.
Listed
A feed’s page in the directory.
ListedItem
Subscribed
Status
Event
One live update. ev says which, and the rest depends on it.
Settings
The server’s settings.
SettingsPatch
What PATCH /api/settings changes. Leave out what stays.
UserRow
An account.
NewUser
UserPatch
LogQuery
Query parameters.
LogPage
LogLine
DirectoryStatus
DirectoryAdmin
BlockedRow
A feed the directory keeps out. Never its address.
Instance
A server sharing with the directory.
SnapshotResult
What the directory made of a share.