Endless Memories API

Public REST API for accessing game data

https://api.endless-memories.net/

Getting Started

The Endless Memories API provides read-only access to game data. All requests use HTTP GET and return JSON responses.

Base URL

https://api.endless-memories.net/

Quick Example

curl https://api.endless-memories.net/item/1
{
  "id": 1,
  "name": "Gold",
  "type": { "id": 2, "name": "Currency" },
  ...
}

Authentication

No authentication is required. The API is publicly accessible for all read operations.

Rate Limiting

To ensure fair usage, the API implements rate limiting:

  • 60 requests per 60 seconds per IP address

Rate Limit Headers

Header Description
X-RateLimit-Limit Maximum requests per window
X-RateLimit-Remaining Requests remaining in current window
X-RateLimit-Reset Unix timestamp when the window resets

Endpoints

Server Information

GET /status

Returns server status, bonuses, and staff list.

Response Fields
FieldTypeDescription
server_onlinebooleanServer availability
server_timestringISO 8601 timestamp
bonuses.double_exp_weekend_activebooleanDouble EXP status
bonuses.player_exp_bonusintegerOnline player bonus %
bonuses.total_exp_bonusintegerCombined EXP bonus %
staffarrayList of staff members
GET /online

Returns online player count and list.

GET /news

Returns server news and welcome message.

GET /download

Returns latest client download information.

Items

GET /item/{id}

Returns detailed information about a specific item.

ParameterTypeDescription
idintegerRequired Item ID
GET /item/search

Search for items by name or filter by type.

ParameterTypeDescription
qstringOptional Search query (min 3 chars)
typestringOptional Filter by type
Valid Item Types

currency, heal, teleport, spell, exp_reward, stat_reward, skill_reward, weapon, shield, armor, hat, boots, gloves, accessory, belt, necklace, ring, armlet, bracer, wings, back, alcohol, effect, hairdye, curseremoval

NPCs

GET /npc/{id}

Returns detailed information about a specific NPC.

GET /npc/search

Search for NPCs by name or filter by type.

ParameterTypeDescription
qstringOptional Search query (min 3 chars)
typestringOptional Filter by type
Valid NPC Types

friendly, passive, aggressive, shop, inn, skill, quest, law, bank, barber, guild, priest, monster

Classes

GET /class/{id}

Returns detailed class information including stats and formulas.

GET /class/search

Search for classes by name or filter by type.

Valid Class Types

melee, paladin, magical, archer, peasant, priest

Spells

GET /spell/{id}

Returns detailed spell information including damage, effects, and trainers.

GET /spell/search

Search for spells by name, type, or element.

ParameterTypeDescription
qstringOptional Search query (min 3 chars)
typestringOptional heal, damage, passive, support
elementstringOptional light, dark, earth, wind, water, fire

Maps

GET /map/{id}

Returns detailed map information including NPCs, items, and warps.

GET /map/search

Search for maps with various filters.

ParameterTypeDescription
qstringOptional Search by name (min 3 chars)
pkbooleanOptional Filter by PK enabled
hazardstringOptional poison, vortex, quake1-4
has_npc_idintegerOptional Maps with specific NPC
has_item_idintegerOptional Maps with specific item
has_questsbooleanOptional Maps with quest NPCs

Leaderboards

All leaderboard endpoints return the top 100 entries.

GET /leaderboard/level

Top 100 players sorted by experience.

GET /leaderboard/quests

Top 100 players sorted by completed quests.

GET /leaderboard/wealth

Top 100 players sorted by total gold.

GET /leaderboard/playtime

Top 100 players sorted by playtime.

GET /leaderboard/guilds

Top 100 guilds sorted by total member experience.

Leaderboard Response Fields
FieldDescription
rankPosition on leaderboard
nameCharacter/Guild name
*_formattedHuman-readable formatted values

Response Format

All responses are JSON. HTTP status codes indicate success (200) or failure (4xx/5xx).

Success Response (HTTP 200)

{
  "id": 1,
  "name": "Gold",
  "type": { "id": 2, "name": "Currency" },
  // ... response data at root level
}

Error Response (HTTP 4xx/5xx)

{
  "error": {
    "message": "Human-readable error message",
    "code": "ERROR_CODE"
  }
}

Error Handling

The API uses standard HTTP status codes and returns detailed error information.

HTTP Status Codes

CodeDescription
200Success
400Bad Request - Invalid parameters
404Not Found - Resource doesn't exist
429Too Many Requests - Rate limit exceeded
500Internal Server Error

Error Codes

CodeDescription
NOT_FOUNDRequested resource not found
INVALID_IDInvalid ID format
INVALID_QUERYSearch query too short (min 3 chars)
INVALID_TYPEInvalid type filter value
MISSING_PARAMSRequired parameters missing
RATE_LIMIT_EXCEEDEDToo many requests
INTERNAL_ERRORServer error occurred

Code Examples

JavaScript (Fetch)

// Get item by ID
const response = await fetch('https://api.endless-memories.net/item/1');

if (response.ok) {
    const item = await response.json();
    console.log(`Item: ${item.name}`);
    console.log(`Type: ${item.type.name}`);
}

// Search for items
const searchResponse = await fetch(
    'https://api.endless-memories.net/item/search?q=sword&type=weapon'
);

if (searchResponse.ok) {
    const data = await searchResponse.json();
    data.items.forEach(item => {
        console.log(`${item.id}: ${item.name}`);
    });
}

Python (Requests)

import requests

# Get item details
response = requests.get('https://api.endless-memories.net/item/1')

if response.ok:
    item = response.json()
    print(f"Item: {item['name']}")
    print(f"Type: {item['type']['name']}")

# Search for items
response = requests.get(
    'https://api.endless-memories.net/item/search',
    params={'q': 'sword', 'type': 'weapon'}
)

if response.ok:
    data = response.json()
    for item in data['items']:
        print(f"{item['id']}: {item['name']}")

cURL

# Get server status
curl https://api.endless-memories.net/status

# Get item by ID
curl https://api.endless-memories.net/item/1

# Search for fire spells
curl "https://api.endless-memories.net/spell/search?type=damage&element=fire"

# Get top players
curl https://api.endless-memories.net/leaderboard/level