A JSON REST API for searching, browsing, and downloading wallpapers. Get an API key from /developers.
Pass your API key in one of two headers:
Authorization: Bearer YOUR_API_KEY # or X-API-Key: YOUR_API_KEY
Each key has a per-minute limit (default 60). Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers. Exceeding the limit returns HTTP 429.
curl -H "Authorization: Bearer YOUR_API_KEY" \ /api/public/v1/wallpapers?per_page=5
/api/public/v1/wallpapersList wallpapers. Filters: category, orientation, is_premium, sort (newest|popular|trending), q, page, per_page.
/api/public/v1/wallpapers/:slugGet a single wallpaper by slug.
/api/public/v1/wallpapers/:slug/downloadSigned 10-minute download URL. Requires `download` scope.
/api/public/v1/search?q=Text search across title & description.
/api/public/v1/ai-searchSemantic search. Body: { query, limit? }.
/api/public/v1/categoriesList all categories.
/api/public/v1/categories/:slugCategory detail + wallpapers.
/api/public/v1/collectionsPublic collections.
/api/public/v1/collections/:slugCollection detail + wallpapers.
/api/public/v1/trending?window=7dTrending wallpapers (24h | 7d | 30d).
/api/public/v1/usageUsage stats for the calling API key.
{
"data": [ { "id": "...", "slug": "...", "title": "...", "preview_url": "...", "tags": ["..."], ... } ],
"pagination": { "page": 1, "per_page": 24, "total": 128, "total_pages": 6, "has_more": true }
}Errors return { "error": "message" } with an appropriate HTTP status: 401 (bad key), 403 (missing scope), 404 (not found), 429 (rate limit), 500 (server error).