https://yourdomain.comGet all available slots with optional filtering and pagination
Query Parameters:
limit - Number of results (default: 50, max: 1000)
offset - Skip N results for pagination
provider - Filter by provider name
minRtp - Minimum RTP percentage
volatility - Filter by volatility (low, medium, high, extreme)
hasBonusBuy - Filter bonus buy slots (true/false)Examples:
GET /api/slots?limit=10GET /api/slots?provider=Pragmatic Play&minRtp=96GET /api/slots?volatility=high&hasBonusBuy=trueResponse:
{
"slots": [...],
"count": 10,
"total": 169
}Get a specific slot by ID or slug
GET /api/slots/cmfcts4we001ddoumjxzez8pj// By IDGET /api/slots/wild-swarm// By slugResponse includes full slot details:
{
"id": "...",
"name": "Wild Swarm",
"slug": "wild-swarm",
"provider": "Push Gaming",
"rtp": 97.03,
"volatility": "High",
"maxWin": 4569,
"emojiTags": ["đĨ", "đ", "đ"],
"theme": ["adventure"],
"features": ["free spins"],
"shuffleUrl": "https://...",
"stakeUrl": "https://...",
"description": "...",
"review": "...",
"rating": 4.5,
"pros": [...],
"cons": [...]
}Redirects to a slot matching the emoji(s)
Examples:
GET /api/play/đ°// Single emojiGET /api/play/đ°đđ// Multiple emojisNote: This endpoint performs a 302 redirect to the matching slot page
Find slots matching specific emoji combinations
Request Body:
{
"emojis": ["đ°", "đ", "đ"]
}Response:
{
"slots": [
{
"id": 1,
"name": "Diamond Cherries",
"url": "https://example.com/slot/1",
"emojis": ["đ", "đ"],
"rtp": 96.5
}
]
}Get emoji usage statistics across all slots
Query Parameters:
format=aggregated (default) - Returns emoji usage counts
format=raw - Returns raw emoji mappings from databaseAggregated Response (default):
GET /api/emojis{
"emojis": [
{
"emoji": "đ˛",
"count": 48,
"category": "Uncategorized"
},
{
"emoji": "đ",
"count": 45,
"category": "Uncategorized"
}
],
"total": 131,
"totalUsage": 1205
}Get emojis grouped by category
GET /api/emojis/categories{
"categories": {
"luck": ["đ", "đ˛", "đ°"],
"wealth": ["đ", "đ°", "đĩ"],
"energy": ["đĨ", "âĄ", "âī¸"]
}
}Get detailed emoji statistics and analytics
GET /api/emojis/stats{
"totalEmojis": 131,
"totalUsage": 1205,
"averagePerSlot": 7.1,
"mostUsed": {
"emoji": "đ˛",
"count": 48
},
"leastUsed": {
"emoji": "âŠī¸",
"count": 1
}
}Legacy redirect endpoint with query parameters
Query Parameters:
emoji - Single emoji or emoji string
casino - Optional casino preference (shuffle, stake)Examples:
GET /api/v1/redirect?emoji=đ°GET /api/v1/redirect?emoji=đ°đ°&casino=shuffleInfo: This is a legacy endpoint. Use /api/play/[emojis] for new implementations.
Lucky spin - redirects to a random slot matching criteria
Query Parameters (all optional):
emoji - Filter by emoji
provider - Filter by provider name
volatility - Filter by volatility level
minRtp - Minimum RTP percentageExamples:
GET /api/v1/spin// Random slotGET /api/v1/spin?volatility=high&minRtp=96Note: Returns 302 redirect to a random matching slot
All public API endpoints are rate limited to prevent abuse. Rate limits apply per IP address.
Rate limit headers are included in all API responses:
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1735689600
X-RateLimit-Window: minute
X-Response-Time: 12msWhen you exceed the rate limit, you'll receive:
{
"error": "Rate limit exceeded",
"message": "Too many requests. Limit: 100 per minute",
"retryAfter": 1735689600
}Note: Rate limiting does not apply to admin endpoints (requires authentication).
All public API endpoints support Cross-Origin Resource Sharing (CORS) for easy integration from web applications.
The following headers are sent with all API responses:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Content-Type, AuthorizationThis means you can:
Example fetch from browser:
fetch('https://reelagio.com/api/slots?limit=5')
.then(res => res.json())
.then(data => console.log(data.slots));JavaScript/TypeScript example:
// Find slots with specific emojis
async function findSlots(emojis) {
const response = await fetch('/api/match', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ emojis })
});
return response.json();
}
// Redirect to a slot game
function playSlot(emoji) {
window.location.href = `/api/play/${emoji}`;
}
// Usage
findSlots(['đ°', 'đ']).then(data => {
console.log('Matching slots:', data.slots);
});
playSlot('đ°'); // Redirects to a random slot with đ°