OpenLyst API
Access OpenLyst app and release data programmatically. Free to use, no authentication required.
Base URL
All API requests should be made to this URL
https://openlyst.ink/api/v1How the API Works
Response format, parameters, and error codes
Response format
Successful responses are JSON with success: true, a data field (array or object), and often language and count. Add ?lang=en|zh|ru to any request for localized strings (default: en).
// Success
{ "success": true, "language": "en", "data": ... }
// Error (400, 404, 500)
{ "success": false, "error": "message" }Error Handling
Understanding API error responses
- 400 — Returned when required parameters are missing.
- 404 — Returned when the requested resource doesn't exist.
- 500 — Returned when an internal error occurs.
Quick Start
Get started with a simple example
const response = await fetch('https://openlyst.ink/api/v1/apps');
const data = await response.json();
console.log(data.data);API Endpoints
Complete reference for all available endpoints
/api/v1/repoGet repository info: name, icon, featured apps, total counts, and download status.
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"data": {
"name": "OpenLyst",
"subtitle": "...",
"totalApps": 6,
"totalNews": 5,
"tempDownloadsOff": false,
"featuredApps": ["doudou", "finar", ...]
}
}/api/v1/appsList all apps. Filter by status or platform if needed.
Query Parameters
| Name | required | Description |
|---|---|---|
| filter | Default | Limit to active or deprecated apps (active | deprecated) |
| platform | Default | Only apps that support this platform (e.g. iOS, Android, macOS) |
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"count": 6,
"language": "en",
"data": [
{
"name": "Doudou",
"slug": "doudou",
"subtitle": "The final music player",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android"],
"versions": [...]
}
]
}/api/v1/apps/:slugGet full app details including all versions.
Path Parameters
| Name | required | Description |
|---|---|---|
| slug | required | App slug or bundle identifier (e.g. doudou, finar) |
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"data": {
"name": "Doudou",
"slug": "doudou",
"bundleIdentifier": "doudou",
"applicationId": "gitlab.openlyst.doudou",
"subtitle": "The final music player",
"localizedDescription": "...",
"iconURL": "https://...",
"platforms": ["iOS", "macOS", ...],
"versions": [{ "version": "14.0.0", "date": "2026-02-16", ... }]
}
}/api/v1/apps/:slug/versionsGet all versions of an app, newest first.
Path Parameters
| Name | required | Description |
|---|---|---|
| slug | required | App slug or bundle identifier (e.g. doudou) |
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"appName": "Doudou",
"count": 12,
"data": [
{ "version": "14.0.0", "date": "2026-02-16", "platforms": [...], "downloads": {...} },
{ "version": "13.0.0", ... }
]
}/api/v1/apps/:slug/latestGet the latest version of an app. Returns 404 if no versions exist.
Path Parameters
| Name | required | Description |
|---|---|---|
| slug | required | App slug or bundle identifier (e.g. doudou) |
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"appName": "Doudou",
"appSlug": "doudou",
"data": {
"version": "14.0.0",
"date": "2026-02-16",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android"],
"downloads": { "iOS": "https://...", "Android": { "apk": "https://..." }, ... }
}
}/api/v1/apps/:slug/nightlyGet the rolling nightly build of an app, resolved live from its GitLab nightly release. Filenames always reflect the current build since release assets are replaced as new builds land. Returns 404 when the app has no nightly channel.
Path Parameters
| Name | required | Description |
|---|---|---|
| slug | required | App slug or bundle identifier (e.g. doudou) |
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"appName": "Doudou",
"appSlug": "doudou",
"data": {
"version": "nightly",
"channel": "nightly",
"date": "2026-09-06",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android"],
"downloads": { "iOS": "https://...", "Android": { "apk": "https://..." }, ... }
}
}/api/v1/newsGet news and announcements. Filter by app or limit count.
Query Parameters
| Name | required | Description |
|---|---|---|
| limit | Default | Max number of items to return (positive integer) |
| appId | Default | Only news for this app (bundle ID) (e.g. doudou) |
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"count": 5,
"data": [
{
"identifier": "...",
"title": "New release",
"caption": "...",
"date": "2026-02-16",
"appID": "doudou"
}
]
}/api/v1/searchSearch apps by name, subtitle, description, or bundle ID. Results include relevanceScore.
Query Parameters
| Name | required | Description |
|---|---|---|
| q | required | Search term (any string) |
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"query": "music",
"language": "en",
"count": 1,
"data": [
{
"name": "Doudou",
"slug": "doudou",
"subtitle": "The final music player",
"relevanceScore": 11
}
]
}/api/v1/platformsGet all platforms with at least one app, sorted by app count.
Query Parameters
| Name | required | Description |
|---|---|---|
| lang | Default | Content language (en | zh | ru) |
Example Response
{
"success": true,
"language": "en",
"count": 6,
"data": [
{ "name": "Android", "appCount": 6 },
{ "name": "iOS", "appCount": 5 },
{ "name": "macOS", "appCount": 5 }
]
}Download Structure
Understanding the platform-specific download formats
The downloads field in version objects contains platform-specific download URLs. Different platforms support different installer types and architectures.
Repository flag: tempDownloadsOffThe repo endpoint (GET /api/v1/repo) may include tempDownloadsOff: true. When true, clients should hide or disable download UI and show an appropriate message (e.g. that hosted builds are temporarily unavailable).
Rate Limits & Usage
Fair usage guidelines
Currently no rate limits are enforced. Please use responsibly.
No authentication or API keys required to access any endpoint.