REST API for Ethereal: Clash of Souls game data. Access myths, items, characters, and more.

All systems operational
Open Admin Dashboard

Endpoints

+ Health

1 endpoint
GET /health Server status check

M Myths (Heroes)

15 endpoints
GET /api/myths Get all myths
GET /api/myths/:id Get myth by ID
GET /api/myths/name/:name Get myth by name
GET /api/myths/class/:class Get myths by class
GET /api/myths/region/:region Get myths by region
GET /api/myths?filters Filter by difficulty, rangeType, damageType
POST /api/mythsAdmin Create new myth
PUT /api/myths/:idAdmin Full myth replacement
PATCH /api/myths/:idAdmin Partial myth update
DELETE /api/myths/:idAdmin Delete myth
PATCH /api/myths/:id/abilities/:slotAdmin Update single ability
PATCH /api/myths/:id/baseStatsAdmin Update base stats
PATCH /api/myths/:id/levelUpStatsAdmin Update level-up stats
POST /api/myths/:id/skinsAdmin Add new skin
DELETE /api/myths/:id/skins/:skinNameAdmin Remove skin

I Items

2 endpoints
GET /api/items Get all items
GET /api/items/:id Get item by ID

C Characters

2 endpoints
GET /api/characters Get all characters
GET /api/characters/:id Get character by ID

P Players

3 endpoints
GET /api/players/:id Get player profile
GET /api/players/:id/progress Get player progress
POST /api/players/:id/progress Update player progress

G Game State

2 endpoints
GET /api/game-state Get current game state
GET /api/game-state/leaderboard Get leaderboard

R Realms

7 endpoints
GET /api/realms Get all realms
GET /api/realms/:id Get realm by ID
GET /api/realms/name/:name Get realm by name
POST /api/realmsAdmin Create new realm
PUT /api/realms/:idAdmin Full realm replacement
PATCH /api/realms/:idAdmin Partial realm update
DELETE /api/realms/:idAdmin Delete realm

C Classes

7 endpoints
GET /api/classes Get all myth classes
GET /api/classes/:id Get class by ID
GET /api/classes/name/:name Get class by name
POST /api/classesAdmin Create new class
PUT /api/classes/:idAdmin Full class replacement
PATCH /api/classes/:idAdmin Partial class update
DELETE /api/classes/:idAdmin Delete class

L Lanes

7 endpoints
GET /api/lanes Get all lanes/roles
GET /api/lanes/:id Get lane by ID
GET /api/lanes/name/:name Get lane by name
POST /api/lanesAdmin Create new lane
PUT /api/lanes/:idAdmin Full lane replacement
PATCH /api/lanes/:idAdmin Partial lane update
DELETE /api/lanes/:idAdmin Delete lane

B Branding

3 endpoints
GET /api/branding Get game logo and icon
GET /api/branding/icon Get game icon only
GET /api/branding/logo Get game logo only

U Upload

3 endpoints
POST /api/upload Upload single file
POST /api/upload/multiple Upload multiple files (max 10)
DELETE /api/upload Delete file by URL

I Images

1 endpoint
GET /api/images/*path?w=&h=&q= Resize image on-demand

Quick Start

Authentication: All API requests require an API key passed via the x-api-key header. Contact Menhir Interactive to obtain your API key.
JavaScript / TypeScript
const API_URL = 'https://api.menhirinteractive.com';
const API_KEY = 'your-api-key-here';

// Fetch all myths
async function fetchMyths() {
  const response = await fetch(`${API_URL}/api/myths`, {
    headers: {
      'x-api-key': API_KEY,
    },
  });

  const data = await response.json();
  return data.data; // Array of myths
}

// Fetch a specific myth by name
async function fetchMythByName(name) {
  const response = await fetch(
    `${API_URL}/api/myths/name/${name}`,
    { headers: { 'x-api-key': API_KEY } }
  );

  const data = await response.json();
  return data.data;
}

// Usage
const myths = await fetchMyths();
const arawn = await fetchMythByName('Arawn');
cURL
# Get all myths
curl -X GET "https://api.menhirinteractive.com/api/myths" \
  -H "x-api-key: your-api-key-here"

# Get myth by name
curl -X GET "https://api.menhirinteractive.com/api/myths/name/Arawn" \
  -H "x-api-key: your-api-key-here"

# Get all classes
curl -X GET "https://api.menhirinteractive.com/api/classes" \
  -H "x-api-key: your-api-key-here"

# Get all realms
curl -X GET "https://api.menhirinteractive.com/api/realms" \
  -H "x-api-key: your-api-key-here"

# Get branding assets (logo/icon)
curl -X GET "https://api.menhirinteractive.com/api/branding" \
  -H "x-api-key: your-api-key-here"
Example Response - GET /api/myths
{
  "success": true,
  "count": 3,
  "data": [
    {
      "id": "abc123",
      "name": "Arawn",
      "title": "Lord of the Underworld",
      "class": "Fighter",
      "difficulty": "Medium",
      "rangeType": "Melee",
      "damageType": "Physical",
      "region": "Kraxus",
      "squareIcon": "https://pub-xxx.r2.dev/images/myths/arawn/square-icon.webp",
      "previewImage": "https://pub-xxx.r2.dev/images/myths/arawn/splash-original.webp",
      "abilities": [...],
      "skins": [...],
      "baseStats": { "health": 650, "mana": 300, ... },
      "images": {
        "squareIcon": { "url": "...", "width": 256, "height": 256 },
        "splash": {
          "original": { "url": "...", "width": 3840, "height": 2160 },
          "1080p": { "url": "...", "width": 1920, "height": 1080 }
        }
      }
    }
  ]
}