API Documentation

Everything you need to pull slot, emoji, and match data straight from Reelagio.

Base URL

https://reelagio.com

Slot Endpoints

GET /api/slots

List slots with optional search and filtering. Returns up to 50 slots per request.

Query Parameters:

limit - Number of results (default: 20, max: 50)
search - Match slot name, provider, description, theme or feature
provider - Filter by exact provider name (ignored when search is set)
minRtp - Minimum RTP percentage
sortBy - rtp (default), popularity, maxWin, or newest

Examples:

GET https://reelagio.com/api/slots?limit=10
GET https://reelagio.com/api/slots?provider=Pragmatic Play&minRtp=96
GET https://reelagio.com/api/slots?search=bonanza&sortBy=popularity

Response:

{
  "slots": [
    {
      "id": "...",
      "number": 76,
      "name": "Fire Portals",
      "slug": "fire-portals",
      "provider": "Pragmatic Play",
      "rtp": 96.04,
      "volatility": "high",
      "maxWin": 10000,
      "theme": [...],
      "features": [...],
      "emojiTags": ["๐Ÿ”ฅ", "๐Ÿง™โ€โ™‚๏ธ"],
      "popularity": 101
    }
  ],
  "count": 10,
  "total": 187
}

count is the number returned; total is how many slots match. Use GET /api/slots/[id] for a slot's full details.features includes megaways, cluster pays and scatter pays when the slot uses that mechanic, and search matches them too.

GET /api/slots/[id]

Get a specific slot by ID or slug

GET https://reelagio.com/api/slots/cmfcts4we001ddoumjxzez8pj// By ID
GET https://reelagio.com/api/slots/wild-swarm// By slug

Response 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"],
  "description": "...",
  "review": "...",
  "rating": 4.5,
  "pros": [...],
  "cons": [...]
}

Play API - GET /api/play/[emojis]

Redirects to a slot matching the emoji(s)

Examples:

GET https://reelagio.com/api/play/๐Ÿ’// Single emoji
GET https://reelagio.com/api/play/๐Ÿ€๐Ÿ’Ž๐Ÿ’// Multiple emojis

Note: This endpoint performs a 302 redirect to the matching slot page

Match API - POST /api/match

Find slots matching specific emoji combinations (1โ€“5 emojis, up to 30 results). Results are a weighted shuffle, so better matches are more likely to come first but order varies between calls; sort by matchScore for a ranked list.

Request Body:

{
  "emojis": ["๐Ÿ€", "๐Ÿ’Ž", "๐Ÿ’"]
}

Response:

{
  "success": true,
  "data": {
    "slots": [
      {
        "id": "cmfcueq8d000812s0nl48q6nn",
        "name": "Big Bass Vegas Double Down Deluxe",
        "slug": "big-bass-vegas-double-down-deluxe",
        "url": "/slot/big-bass-vegas-double-down-deluxe",
        "provider": "Pragmatic Play",
        "matchScore": 340,
        "emojiTags": ["๐Ÿ ", "๐Ÿ’ฐ", "๐Ÿ€"],
        "rtp": 96.7,
        "volatility": "high",
        "maxWin": 5000
      }
    ],
    "emojis": ["๐Ÿ€", "๐Ÿ’Ž", "๐Ÿ’"],
    "bestMatch": { "name": "...", "url": "/slot/..." },
    "totalMatches": 30
  },
  "message": "Slots matched successfully"
}

Emoji Endpoints

GET /api/emojis

Get emoji usage statistics across all slots

Query Parameters:

format=aggregated (default) - Returns emoji usage counts
format=raw - Returns raw emoji mappings from database

Aggregated Response (default):

GET https://reelagio.com/api/emojis
{
  "emojis": [
    {
      "emoji": "๐ŸŽฒ",
      "count": 48,
      "category": "Uncategorized"
    },
    {
      "emoji": "๐Ÿƒ",
      "count": 45,
      "category": "Uncategorized"
    }
  ],
  "total": 131,
  "totalUsage": 1205
}

GET /api/emojis/categories

Get emojis grouped by category

GET https://reelagio.com/api/emojis/categories
{
  "categories": {
    "luck": ["๐Ÿ€", "๐ŸŽฒ", "๐Ÿƒ"],
    "wealth": ["๐Ÿ’Ž", "๐Ÿ’ฐ", "๐Ÿ’ต"],
    "energy": ["๐Ÿ”ฅ", "โšก", "โ˜„๏ธ"]
  }
}

GET /api/emojis/stats

Get detailed emoji statistics and analytics

GET https://reelagio.com/api/emojis/stats
{
  "totalEmojis": 131,
  "totalUsage": 1205,
  "averagePerSlot": 7.1,
  "mostUsed": {
    "emoji": "๐ŸŽฒ",
    "count": 48
  },
  "leastUsed": {
    "emoji": "โ›ฉ๏ธ",
    "count": 1
  }
}

MCP Server (AI assistants)

A read-only Model Context Protocol server, so AI assistants (Claude, ChatGPT, Cursor and other MCP clients) can look up slot specs directly. Add it as a remote MCP server / custom connector. No API key needed.

https://reelagio.com/api/mcp

Transport: Streamable HTTP, stateless (POST JSON-RPC, JSON responses, no sessions). Tools:

search_slots - filter by name, provider, themes, features, volatility, gameType, emoji, minMaxWin, bonusBuy
get_slot - full spec sheet for one slot (id, slug or name)
similar_slots - slots that play alike, with the reasons for each match
list_vocabulary - valid providers, themes, features and emoji tags with slot counts

Example (Claude Code):

claude mcp add --transport http reelagio https://reelagio.com/api/mcp

Raw request:

POST https://reelagio.com/api/mcp
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"similar_slots","arguments":{"slot":"gates-of-olympus","limit":3}}}

Returns catalogue specs and reelagio.com slot page links only (no casino links). Counts toward the public API rate limit.

V1 Legacy Endpoints

GET /api/v1/redirect

Legacy redirect endpoint with query parameters

Query Parameters:

emoji - Single emoji or emoji string

Examples:

GET https://reelagio.com/api/v1/redirect?emoji=๐Ÿ’
GET https://reelagio.com/api/v1/redirect?emoji=๐Ÿ’Ž๐Ÿ’ฐ

Info: This is a legacy endpoint. Use /api/play/[emojis] for new implementations.

GET /api/v1/spin

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 percentage

Examples:

GET https://reelagio.com/api/v1/spin// Random slot
GET https://reelagio.com/api/v1/spin?volatility=high&minRtp=96

Note: Returns 302 redirect to a random matching slot

Response Codes

200Success - Request completed successfully
302Redirect - Redirecting to slot page
400Bad Request - Invalid parameters
404Not Found - Resource not found
429Rate Limit Exceeded - Too many requests
500Server Error - Internal server error

Rate Limiting

All public API endpoints are rate limited to prevent abuse. Rate limits apply per IP address.

Current Limits:

  • 60 requests per minute per IP address
  • 600 requests per hour per IP address
  • 3,000 requests per day per IP address
  • Bursts: up to 20 requests at once, then about 1 per second

Rate limit headers are included in all API responses:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 55
X-RateLimit-Reset: 1735689600
X-RateLimit-Window: minute

429 Rate Limit Response:

When you exceed the rate limit, you'll receive:

{
  "error": "Rate limit exceeded",
  "message": "Too many requests. Limit: 60 per minute",
  "retryAfter": 1735689600
}

Exceeding the burst limit also returns 429, but as a plain HTML page without a JSON body. Wait a second or two and retry.

Note: Admin endpoints require authentication and have their own separate limits.

CORS Support

Browser requests from other websites are not allowed: cross-origin (CORS) access is limited to reelagio.com.

You can still:

  • Call the API from your own server, script, or backend
  • Use the API from pages on reelagio.com

Example request from a server or script:

fetch('https://reelagio.com/api/slots?limit=5')
  .then(res => res.json())
  .then(data => console.log(data.slots));

Example Integration

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 ๐Ÿ’