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/v1 Quick Start
Get started with a simple example
JavaScript / Fetch
const response = await fetch('https://openlyst.ink/api/v1/apps'); const data = await response.json(); // Get all apps console.log(data.data); // With language parameter (zh = Chinese, ru = Russian) const zhResponse = await fetch('https://openlyst.ink/api/v1/apps?lang=zh');
cURL
curl https://openlyst.ink/api/v1/apps # With language parameter curl "https://openlyst.ink/api/v1/apps?lang=zh"
Python
import requests response = requests.get('https://openlyst.ink/api/v1/apps') data = response.json() # With language parameter response = requests.get('https://openlyst.ink/api/v1/apps', params={lang': 'ru'})
API Endpoints
Complete reference for all available endpoints
/api/v1/repo Get repository metadata and basic statistics.
Query Parameters
lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"data": {
"name": "OpenLyst Repository",
"subtitle": "Every Openlyst iOS app.",
"description": "FOSS apps for iOS, Android, and Desktop...",
"iconURL": "/favicon.svg",
"headerURL": "https://...",
"website": "https://openlyst.ink",
"tintColor": "#dc2626",
"featuredApps": ["doudou"],
"totalApps": 6,
"totalNews": 5,
"tempDownloadsOff": true
}
}/api/v1/apps Get all apps in the repository with optional filtering.
Query Parameters
filter string Filter apps by status: "active" (non-deprecated), "deprecated", or omit for all Default: none (returns all)platform string Filter apps by platform (iOS, Android, macOS, Windows, Linux, Web) lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"count": 6,
"language": "en",
"data": [
{
"name": "Doudou",
"slug": "doudou",
"bundleIdentifier": "doudou",
"subtitle": "Music player for self-hosted services",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"iconURL": "https://...",
"versions": [...],
...
}
]
}/api/v1/apps/:slug Get detailed information about a specific app.
Path Parameters
slug string required The app slug (e.g., "doudou", "klit")Query Parameters
lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"data": {
"name": "Doudou",
"slug": "doudou",
"bundleIdentifier": "doudou",
"subtitle": "Music player for self-hosted services",
"localizedDescription": "...",
"iconURL": "https://...",
"tintColor": "#dc2626",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"screenshots": [...],
"versions": [...]
}
}/api/v1/apps/:slug/versions Get all versions of a specific app.
Path Parameters
slug string required The app slugQuery Parameters
lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"appName": "Doudou",
"count": 3,
"data": [
{
"version": "12.0.0",
"date": "2026-01-13",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"platformInstall": {...},
"downloads": {...},
"sourceCode": "https://..."
}
]
}/api/v1/apps/:slug/latest Get the latest version of a specific app.
Path Parameters
slug string required The app slugQuery Parameters
lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"appName": "Doudou",
"appSlug": "doudou",
"data": {
"version": "12.0.0",
"date": "2026-01-13",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"platformInstall": {...},
"downloads": {...},
"sourceCode": "https://..."
}
}/api/v1/news Get news and announcements.
Query Parameters
limit number Maximum number of news items to return appId string Filter news by app ID (bundleIdentifier) lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"count": 5,
"data": [
{
"identifier": "gone_but_not_forgotten",
"title": "Old builds are deprecated",
"caption": "We have removed old builds from the main website...",
"date": "2026-01-13",
"tintColor": "#6366f1",
"imageURL": "",
"notify": false,
"url": "",
"appID": ""
}
]
}/api/v1/search Search for apps by name, description, or bundle identifier.
Query Parameters
q string Search query (required) lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"query": "music",
"language": "en",
"count": 1,
"data": [
{
"name": "Doudou",
"slug": "doudou",
"subtitle": "Music player for self-hosted services",
"relevanceScore": 15,
...
}
]
}/api/v1/platforms Get all available platforms and app counts.
Query Parameters
lang string Language code for localized content (en, zh, ru) Default: enExample Response
{
"success": true,
"language": "en",
"count": 6,
"data": [
{ "name": "iOS", "appCount": 6 },
{ "name": "Android", "appCount": 6 },
{ "name": "macOS", "appCount": 4 },
{ "name": "Windows", "appCount": 4 },
{ "name": "Linux", "appCount": 4 },
{ "name": "Web", "appCount": 3 }
]
}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: tempDownloadsOff The 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).
Windows Downloads
Windows supports multiple installer types and package managers.
"Windows": {
"exe": {
"x86_64": "https://.../app-setup-x64.exe",
"arm64": "https://.../app-setup-arm64.exe"
},
"msi": {
"x86_64": "https://.../app-x64.msi",
"arm64": ""
},
"msix": {
"x86_64": "https://.../app.msix",
"arm64": ""
},
"zip": {
"x86_64": "https://.../app-win-x64.zip",
"arm64": ""
},
"portable": {
"x86_64": "https://.../app-portable.exe",
"arm64": ""
},
"winget": "Publisher.AppName",
"chocolatey": "app-name",
"scoop": "extras/app-name"
}Installer Types:
exe- NSIS, Inno Setup, or other installersmsi- Windows Installer packagesmsix- Modern Windows app packageszip- Portable zip archivesportable- Standalone portable executables
Package Managers:
winget- Windows Package Manager IDchocolatey- Chocolatey package namescoop- Scoop bucket/package name
Linux Downloads
Linux supports various package formats and package managers.
"Linux": {
"zip": {
"x86_64": "https://.../app-linux-x64.zip",
"arm64": ""
},
"appimage": {
"x86_64": "https://.../app-x86_64.AppImage",
"arm64": ""
},
"deb": {
"x86_64": "https://.../app-amd64.deb",
"arm64": ""
},
"rpm": {
"x86_64": "https://.../app-x86_64.rpm",
"arm64": ""
},
"aur": {
"x86_64": "https://aur.archlinux.org/packages/app-bin"
},
"homebrew": "https://.../homebrew/tap"
}Package Types:
appimage- Universal Linux packagesdeb- Debian/Ubuntu packagesrpm- Fedora/RHEL packageszip/tar- Archive formatsaur- Arch User Repositoryhomebrew- Homebrew tap URL
macOS Downloads
macOS supports architecture-specific downloads.
"macOS": {
"x86_64": "https://.../app-mac-x64.zip",
"arm64": "https://.../app-mac-arm64.zip",
"universal": "https://.../app-mac-universal.zip",
"homebrew": "https://.../homebrew/tap"
}Architectures:
x86_64- Intel Macsarm64- Apple Silicon (M1/M2/M3)universal- Universal binary (both)homebrew- Homebrew cask/tap
Android Downloads
Android supports APK and AAB formats.
"Android": {
"apk": "https://.../app-release.apk",
"aab": "https://.../app-release.aab",
"apkpure": "https://apkpure.com/p/..."
}Formats:
apk- Android Package (direct install)aab- Android App Bundleapkpure- APKPure store link
Architecture Reference
x86_64 64-bit Intel/AMD
arm64 64-bit ARM (Apple Silicon, Snapdragon)
universal Multi-architecture binary
i386 32-bit Intel (legacy)
Error Handling
Understanding API error responses
Returned when the requested resource doesn't exist.
{
"success": false,
"error": "App not found"
}Returned when required parameters are missing.
{
"success": false,
"error": "Search query is required"
}Returned when an internal error occurs.
{
"success": false,
"error": "Failed to load apps"
}All successful responses include success: true.
{
"success": true,
"data": { ... }
}Rate Limits & Usage
Fair usage guidelines
No Rate Limits
Currently no rate limits are enforced. Please use responsibly.
No API Key
No authentication or API keys required to access any endpoint.
Open Source
This API is part of the OpenLyst open source project.
Fair Usage Guidelines
- Cache responses when possible to reduce server load
- Use specific endpoints instead of fetching all data repeatedly
- Include a User-Agent header identifying your application
- Don't make excessive requests in short time periods