API v1
API Documentation
Integrate CoverImage.app into your browser extensions, WordPress plugins, and automations.
Authentication
All API requests require authentication using an API key. Include your API key in theAuthorization header:
Authorization: Bearer ci_live_your_api_key_hereGenerate API keys in your account settings. All plans have API access with different rate limits.
Base URL
https://coverimage.app/api/v1AI Content Analysis
POST
/findAnalyze content with AI to find matching cover images. Uses your daily AI search quota.
Request Body
| Parameter | Type | Description |
|---|---|---|
content | string | Article or text content to analyze (required, 10-2000 chars) |
sources | string[] | Image sources to search (default: ["pexels", "pixabay"]) |
auto_pick | boolean | Return only the top image in the images array (default: false) |
Example
curl -X POST "https://coverimage.app/api/v1/find" \
-H "Authorization: Bearer ci_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"content": "Your article or tweet content here..."}'Response
{
"success": true,
"data": {
"analysis": {
"topics": ["technology", "productivity"],
"mood": "professional",
"queries": ["modern workspace", "laptop coffee"]
},
"images": [
{
"id": "pexels-123",
"source": "pexels",
"url": {
"small": "...",
"regular": "...",
"full": "..."
},
"width": 1920,
"height": 1080,
"color": "#2c3e50",
"alt": "Image description",
"attribution": {
"name": "Photographer Name",
"link": "https://..."
}
}
],
"total": 50,
"usage": {
"used": 5,
"limit": 50,
"remaining": 45
}
}
}Check Usage
GET
/usageCheck your current usage and remaining quota.
Example
curl "https://coverimage.app/api/v1/usage" \
-H "Authorization: Bearer ci_live_your_api_key_here"Response
{
"success": true,
"data": {
"plan": "pro",
"today": {
"ai_searches": {
"used": 5,
"limit": 50,
"remaining": 45
}
},
"subscription": {
"status": "active",
"current_period_end": "2026-02-26T00:00:00Z"
}
}
}Rate Limits
Rate limits are based on your subscription plan:
| Plan | AI Searches/day |
|---|---|
| Free | 10 |
| Pro | 100 |
| Team | 500 |
Error Responses
All errors return a JSON response with success: false:
{
"success": false,
"error": "Error message here"
}| Status | Description |
|---|---|
| 400 | Bad request (invalid parameters) |
| 401 | Unauthorized (missing or invalid API key) |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
CORS
The API supports CORS and can be called from browser extensions and client-side applications. All origins are allowed.