HTTP API

Public endpoints you can call without signing in. Each one returns JSON.

OpenAPI document

A failure returns a non-2xx status with { error: { code, message } }.

Addons

Read the addon store: listings, versions and maintainers.

Get the catalog

GET/api/v1/catalog

Every listed addon with its newest version. Send revision in If-None-Match to get 304 while nothing changed.

Response

revisionstringrequired
  • ≥ 1 characters
addonsobject[]required

List addons

GET/api/v1/addons

A filtered, sorted page of listed addons with their newest versions.

Query parameters

type'plugin' | 'theme' | 'icon-pack' | 'font'

Only addons of this type.

qstring

Search text, matched in the name or description.

sort'name' | 'created' | 'updated'

Defaults to name. Ties sort by id.

order'asc' | 'desc'

Defaults to asc.

tagsstring

Comma-separated tag ids, combined by tagMatch.

  • ≤ 512 characters
  • pattern ^[a-z\d]+(?:-[a-z\d]+)*(?:,[a-z\d]+(?:-[a-z\d]+)*)*$
tagMatch'any' | 'all' | 'none'

Defaults to any.

authorsstring

Comma-separated Discord ids of credited authors.

  • ≤ 512 characters
  • pattern ^[1-9]\d{0,19}(?:,[1-9]\d{0,19})*$
authorMatch'any' | 'none'

Defaults to any. none excludes these authors.

updatedstring

Days since the newest version was approved.

  • pattern ^[1-9]\d{0,3}$
updatedMatch'any' | 'none'

Defaults to any, within updated days. none means older.

cursorstring

The previous page's nextCursor. Keep the same filters.

  • ≤ 512 characters

Response

addonsobject[]required

nextCursorstring | nullrequired

List an addon's versions

GET/api/v1/addons/{id}/versions

A listed addon's live versions, newest first.

Path parameters

idstringrequired

The addon id, such as unbound.example.

Response

versionsobject[]required

List an addon's maintainers

GET/api/v1/addons/{id}/maintainers

An addon's maintainers with their roles.

Path parameters

idstringrequired

The addon id, such as unbound.example.

Response

maintainersobject[]required

Updates

Check installed addons and the native loader for updates.

Check addons for updates

POST/api/v1/updates

The installed addons that have a newer, withdrawn or rebuilt version. Rate limited per IP.

Request body

clientVersionstringrequired
  • ≤ 64 characters
  • pattern ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
addonsobject[]required
  • ≤ 500 items

Response

updatesobject[]required

Check for loader updates

GET/api/v1/loader/updates

The newest loader release, or null when current, and the loader version the newest bundle on channel needs when the installed loader is older. Rate limited per IP.

Query parameters

platform'ios' | 'android'required

The platform the loader runs on.

versionstringrequired

The installed loader version.

  • ≤ 64 characters
  • pattern ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$
channel'stable' | 'beta'

The bundle channel the client runs.

Response

updateobject | nullrequired

requiredVersionstring | nullrequired
  • ≤ 64 characters
  • pattern ^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?$

List patched Android Discord builds

GET/api/v1/loader/android-builds

A channel's patched Discord builds with each gzipped split's URL, newest Discord first. Rate limited per IP.

Query parameters

channel'stable' | 'beta' | 'alpha'required

The Google Play channel the builds were made from.

Response

buildsobject[]required
  • ≤ 50 items

Users

Read what a user shows on their profile.

List a user's badges

GET/api/v1/users/{id}/badges

The sponsor badges a user shows on their profile, in order.

Path parameters

idstringrequired

The user's id, as the maintainers list returns it, or the Discord id of their linked Discord account.

Response

badgesobject[]required

Fonts

Find the files behind a font link. Unbound hosts no font files.

Resolve a font

GET/api/v1/fonts/resolve

A font's files at its provider: Google Fonts, Fontsource, Bunny Fonts, Fontshare, Font Squirrel, dafont, GitHub, or a direct link. Rate limited per IP.

Query parameters

inputstringrequired

A Google Fonts family name, a font page link, or a direct .ttf, .otf or .zip link.

  • ≥ 1 characters
  • ≤ 2048 characters

Response

provider'google' | 'fontsource' | 'fontshare' | 'fontsquirrel' | 'dafont' | 'github' | 'url'required
idstringrequired
  • ≥ 1 characters
familystringrequired
  • ≥ 1 characters
filesobject[]required
  • ≥ 1 items
  • ≤ 64 items