Overview & Protocol
The ArtPexels API is built using REST principles. All requests are served over secure HTTPS and return standard JSON payloads. All timestamps are ISO 8601 UTC strings.
Authentication
Every request to protected endpoints must include your API Key. You can pass your key either in the HTTP headers or as a query parameter.
Pass your API key as an HTTP header with each request:
X-API-Key: apx_your_api_key_here
Alternatively, pass your key directly in the request URL:
https://artpexels.com/api/wallpapers?api_key=apx_your_api_key_here
If your API key is restricted by an administrator to specific domains or application bundle identifiers (e.g. Flutter, Android, or iOS), you must transmit your package ID via the x-app-package or x-api-origin header. Unmatched origins will receive a 403 Forbidden response.
Endpoints Matrix
| Method | Endpoint | Auth | Description |
|---|---|---|---|
| GET | /wallpapers | API Key | Retrieve wallpapers with pagination, sorting, layout, and category filters. |
| GET | /categories | API Key | List all active wallpaper categories and subcategories. |
| GET | /api-status/data | Public | Real-time health status, latency, and uptime telemetry. |
/wallpapers
Retrieve wallpaper assets filtered by orientation, tags, category, and sorting.
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| api_key | string | Required* | — | Your API key (can alternatively be sent in X-API-Key header). |
| page | integer | Optional | 1 | The pagination page number. |
| limit | integer | string | Optional | 20 | Number of items per page. Use all or -1 for complete list. |
| orientation | string | Optional | all | landscape (desktop PC), portrait (mobile), square. |
| sort | string | Optional | recent | recent, popular (most views), featured (most downloads), random. |
| category | string | Optional | — | Exact category name (e.g. Nature, Gaming, Anime, Cars). |
| subCategory | string | Optional | — | Subcategory name within the category. |
| search | string | Optional | — | Search keyword matching wallpaper title, category, and tags. |
Example Response (200 OK)
{
"success": true,
"data": [
{
"id": 1420,
"title": "Neon Cyberpunk City Skyline",
"description": "Ultra 4K HD cybernetic city wallpaper",
"tags": "cyberpunk, neon, futuristic, 4k",
"category": "Gaming",
"resolution": "3840x2160",
"width": 3840,
"height": 2160,
"fileSize": 4194304,
"views": 18240,
"downloads": 4920,
"slug": "neon-cyberpunk-city-skyline",
"thumbnailUrl": "https://artpexels.com/uploads/preview_neon-cyberpunk-city.webp",
"fullImageUrl": "https://artpexels.com/uploads/neon-cyberpunk-city.webp",
"createdAt": "2026-03-01T12:00:00.000Z"
}
],
"pagination": {
"currentPage": 1,
"totalPages": 42,
"totalItems": 840,
"itemsPerPage": 20
}
}
/categories
Retrieve list of all active categories and their parent-child hierarchy.
Example Response (200 OK)
{
"success": true,
"data": [
{ "id": 1, "name": "Nature", "slug": "nature", "parentId": null },
{ "id": 2, "name": "Anime", "slug": "anime", "parentId": null },
{ "id": 3, "name": "Cars", "slug": "cars", "parentId": null },
{ "id": 4, "name": "Gaming", "slug": "gaming", "parentId": null },
{ "id": 5, "name": "Minimal", "slug": "minimal", "parentId": null }
]
}
Interactive Live Console
Test live requests against the API directly in your browser.
// Click "Send Request" to test live query...
SDK & Code Snippets
Ready-to-use production code snippets for your preferred language or framework.
# Fetch 20 high-resolution wallpapers sorted by popularity
curl -X GET "https://artpexels.com/api/wallpapers?limit=20&sort=popular" \
-H "Accept: application/json" \
-H "X-API-Key: apx_your_api_key_here"
Errors & Status Codes
Standard HTTP status codes returned by the API.
| Status | Type | Description & Common Remedy |
|---|---|---|
| 200 | OK | Request succeeded. Wallpapers or categories returned in payload. |
| 400 | Bad Request | Invalid parameters, malformed pagination numbers, or unsupported formats. |
| 401 | Unauthorized | Missing API Key. Check that X-API-Key or ?api_key= is provided. |
| 403 | Forbidden | API Key is inactive, IP address blocked, or origin header does not match Allowed Origins. |
| 429 | Too Many Requests | Rate limit exceeded. Wait 60 seconds or contact admin to upgrade quota. |
| 500 | Internal Error | Unexpected server issue. Check our System Status page. |
Rate Limits Policy
Default developer keys are limited to 60 requests per minute per key. If your product needs higher capacity for production launches or mobile app distribution, email us at [email protected] with your app details to get an unlimited or high-tier key.