OpenLyst API
Access our complete app repository 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);
cURL
curl https://openlyst.ink/api/v1/appsPython
import requests response = requests.get('https://openlyst.ink/api/v1/apps') data = response.json()
API Endpoints
Complete reference for all available endpoints
/api/v1/repo Get repository metadata and basic statistics.
Example Response
{
"success": true,
"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": 3,
"totalNews": 2
}
}/api/v1/apps Get all apps in the repository with optional filtering.
Query Parameters
filter string Filter apps by status Default: none (returns all)platform string Filter apps by platform (iOS, Android, macOS, Windows, Linux, Web) Example Response
{
"success": true,
"count": 3,
"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")Example Response
{
"success": true,
"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 slugExample Response
{
"success": true,
"appName": "Doudou",
"count": 3,
"data": [
{
"version": "8.0.0",
"date": "2025-12-06",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"platformInstall": {...},
"downloads": {...},
"localizedDescription": "# 8.0.0\n..."
}
]
}/api/v1/apps/:slug/latest Get the latest version of a specific app.
Path Parameters
slug string required The app slugExample Response
{
"success": true,
"appName": "Doudou",
"appSlug": "doudou",
"data": {
"version": "8.0.0",
"date": "2025-12-06",
"platforms": ["iOS", "macOS", "Windows", "Linux", "Android", "Web"],
"platformInstall": {...},
"downloads": {...},
"localizedDescription": "..."
}
}/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) Example Response
{
"success": true,
"count": 2,
"data": [
{
"title": "BaoBao Discontinued - Meet Klit!",
"identifier": "baobao_deprecated_klit_release",
"caption": "BaoBao is being retired...",
"date": "2025-12-06",
"tintColor": "#ff6b35",
"imageURL": "/icons/Klit/klit_release_image.png",
"notify": true,
"url": "/apps/klit",
"appID": "klit"
}
]
}/api/v1/search Search for apps by name, description, or bundle identifier.
Query Parameters
q string Search query (required) Example Response
{
"success": true,
"query": "music",
"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.
Example Response
{
"success": true,
"count": 6,
"data": [
{ "name": "iOS", "appCount": 3 },
{ "name": "Android", "appCount": 3 },
{ "name": "macOS", "appCount": 2 },
{ "name": "Windows", "appCount": 2 },
{ "name": "Linux", "appCount": 2 },
{ "name": "Web", "appCount": 2 }
]
}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