Authentication
All API requests require authentication via an API key. Include your key in the request header:
X-API-Key: qg_your_api_key_here You can also use the Authorization: Bearer header.
Rate Limits
Rate limits are based on your subscription tier and apply per hour.
| Tier | Rate Limit | Price |
|---|---|---|
| Free | 100/hour | €0 |
| Hobby | 500/hour | €7.99/mo |
| Premium | 2,000/hour | €19.99/mo |
Rate limit info is included in response headers: X-RateLimit-Limit
Error Handling
The API uses standard HTTP status codes. Error responses include a JSON body:
{
"error": "Rate limit exceeded",
"code": "RATE_LIMIT_EXCEEDED",
"status": 429
}| Code | Name | Description |
|---|---|---|
| 400 | Bad Request | Invalid request parameters |
| 401 | Unauthorized | Missing or invalid API key |
| 404 | Not Found | Resource not found |
| 429 | Rate Limit Exceeded | Too many requests, please slow down |
| 500 | Internal Error | Server error, please try again later |
Quotes
/api/v1/quotesRetrieve a paginated list of approved public quotes
| Parameter | Type | Description |
|---|---|---|
| language | string | Filter by language code (e.g., "en", "nl", "tr") |
| categories | string | Comma-separated list of categories to filter by |
| author_id | string | Filter quotes by author ID |
| limit | number | Number of results per page (max 100, default 20) |
| offset | number | Pagination offset (default 0) |
/api/v1/quotes/randomGet a random quote, optionally filtered by language or categories
| Parameter | Type | Description |
|---|---|---|
| language | string | Filter by language code |
| categories | string | Comma-separated list of categories |
/api/v1/quotes/:idGet a single quote by its ID, including all translations
| Parameter | Type | Description |
|---|---|---|
| language | string | Preferred language for the quote text |
Playlists
/api/v1/playlistsRetrieve a paginated list of public playlists
| Parameter | Type | Description |
|---|---|---|
| search | string | Search playlists by name |
| categories | string | Comma-separated list of categories |
| limit | number | Number of results per page (max 100, default 20) |
| offset | number | Pagination offset (default 0) |
/api/v1/playlists/:idGet a single playlist by ID, optionally including its quotes
| Parameter | Type | Description |
|---|---|---|
| include_quotes | boolean | Include playlist's quotes in response |
| language | string | Preferred language for quote texts |
Categories
/api/v1/categoriesGet all available categories with quote counts
No parameters