Overview
API v1 Overview
The Quote Gallery API v1 is a RESTful API that provides read access to the Quote Gallery catalog. All endpoints return JSON responses and follow consistent conventions for pagination, filtering, and error handling.
Base URL
All v1 API requests should be made to:
https://quotegallery.nl/api/v1
https://your-deployment.convex.site/api/v1. The Quote Gallery application server proxies requests to Convex under the hood.Authentication
Every request must include a valid API key in the X-API-Key header:
curl -H "X-API-Key: your_api_key_here" \
https://quotegallery.nl/api/v1/quotes
See the Authentication guide for details on obtaining and managing API keys.
Available Endpoints
The v1 API is organized into four resource groups:
Quotes
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/quotes | Retrieve a paginated list of approved quotes |
GET | /api/v1/quotes/random | Get a random quote |
GET | /api/v1/quotes/:id | Get a single quote by ID |
Authors
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/authors | Retrieve a paginated list of authors |
GET | /api/v1/authors/:id | Get a single author by ID |
Playlists
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/playlists | Retrieve a paginated list of public playlists |
GET | /api/v1/playlists/:id | Get a single playlist by ID |
Categories
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/categories | Get all available categories with quote counts |
Common Conventions
Response Format
All successful responses follow a consistent structure:
{
"data": { ... }
}
List endpoints include pagination metadata:
{
"data": [ ... ],
"pagination": {
"total": 150,
"limit": 20,
"offset": 0,
"hasMore": true
}
}
Pagination
All list endpoints accept the following query parameters for pagination:
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | number | 20 | Number of results per page (max 100) |
offset | number | 0 | Number of results to skip |
Filtering
Most list endpoints support filtering via query parameters. Common filters include:
| Parameter | Type | Description |
|---|---|---|
language | string | Filter by language code (e.g., en, nl, tr) |
categories | string | Comma-separated list of category slugs |
Error Responses
Errors return a JSON object with an error field and an appropriate HTTP status code:
{
"error": "Invalid API key",
"status": 401
}
See the Error Handling guide for a complete list of error codes.
Rate Limits
Your rate limit depends on your API tier:
| Tier | Requests / Hour |
|---|---|
| Free | 100 |
| Hobby | 500 |
| Premium | 2,000 |
When you exceed your rate limit, the API returns a 429 Too Many Requests response. See Rate Limits & Pricing for more details.
Versioning Policy
When breaking changes are necessary, they will be released under a new version (e.g., /api/v2). Previous versions will continue to be supported with a deprecation timeline communicated well in advance.