Get Started
Authentication
- An API key is required for all requests
- Create a key from Account Settings on the website
- Strictly, one key per person
- Using multiple keys will result in all access being revoked
- Key creation is currently limited. If you are not eligible but would like to request access, contact the Admin on Discord
Rate limits
- 30 requests per minute (500 per hour)
- Some endpoints may also list their own limit below
- 2x usage for supporters
- Higher usage can be requested by contacting the Admin on Discord
Request example
Set your API key
Set your key as an environment variable. The commands below read it from DREAM_API_KEY, so it never lands in your shell history or source.
export DREAM_API_KEY="YOUR_API_KEY"
Make your first API call
Send a GET request to /api/v1/usage.php. Choose how to send the key, then your language:
curl https://dreamms.gg/api/v1/usage.php \ -H "X-API-Key: $DREAM_API_KEY"
curl https://dreamms.gg/api/v1/usage.php \ -H "Authorization: Bearer $DREAM_API_KEY"
curl "https://dreamms.gg/api/v1/usage.php?key=$DREAM_API_KEY"
import os
import requests
res = requests.get(
"https://dreamms.gg/api/v1/usage.php",
headers={"X-API-Key": os.environ["DREAM_API_KEY"]},
)
print(res.json())
import os
import requests
res = requests.get(
"https://dreamms.gg/api/v1/usage.php",
headers={"Authorization": f"Bearer {os.environ['DREAM_API_KEY']}"},
)
print(res.json())
import os
import requests
res = requests.get(
"https://dreamms.gg/api/v1/usage.php",
params={"key": os.environ["DREAM_API_KEY"]},
)
print(res.json())
const res = await fetch("https://dreamms.gg/api/v1/usage.php", {
headers: { "X-API-Key": process.env.DREAM_API_KEY },
});
const data = await res.json();
console.log(data);
const res = await fetch("https://dreamms.gg/api/v1/usage.php", {
headers: { "Authorization": "Bearer " + process.env.DREAM_API_KEY },
});
const data = await res.json();
console.log(data);
const res = await fetch("https://dreamms.gg/api/v1/usage.php?key=" + process.env.DREAM_API_KEY);
const data = await res.json();
console.log(data);
Read the response
Every response is returned in JSON. A successful call looks like:
{
"ok": true,
"data": {
"rate": 1,
"global": {
"perMinute": { "limit": 30, "used": 2, "remaining": 28, "window": 60, "reset": 41 },
"perHour": { "limit": 500, "used": 17, "remaining": 483, "window": 3600, "reset": 2873 }
},
"endpoints": {
"player": { "limit": 10, "used": 1, "remaining": 9, "window": 60, "reset": 41 },
"economy": { "limit": 5, "used": 0, "remaining": 5, "window": 60, "reset": 0 }
}
},
"meta": { "cachedAt": "2026-06-29T12:00:00+00:00" }
}
Endpoints
Your current rate-limit usage: used/remaining per window and seconds until each resets.
Example: https://dreamms.gg/api/v1/usage.php
Average price and total sold of verified trades and merchant sales over a period.
| param | default | description |
|---|---|---|
item * |
— | exact item name (case in-sensitive), eg. "white scroll" |
period |
30 | 7 | 14 | 30 | 90 | 180 | all |
Example: https://dreamms.gg/api/v1/economy.php?item=White%20Scroll&period=30
Player profiles. Search up to 18 players separated by commas.
| param | default | description |
|---|---|---|
name * |
— | exact name(s), up to 18 comma-separated, case-insensitive |
Example: https://dreamms.gg/api/v1/player.php?name=Issue,misaki,glidestep
Rankings. Up to 50 rows per request. Only the top 1000 may be requested.
| param | default | description |
|---|---|---|
type |
overall | overall | job | dpm | mdpm | fame |
job |
— | job id, required when type=job (e.g. 412 = Night Lord) |
page |
1 | page number; rejected once rank reaches 1000 |
limit |
25 | rows per page, max 50 |
Example: https://dreamms.gg/api/v1/rankings.php?type=job&job=412
Job IDs (85)
0
Beginner
100
Warrior
110
Fighter
111
Crusader
112
Hero
120
Page
121
White Knight
122
Paladin
130
Spearman
131
Dragon Knight
132
Dark Knight
200
Magician
210
F/P Wizard
211
F/P Mage
212
F/P Arch Mage
220
I/L Wizard
221
I/L Mage
222
I/L Arch Mage
230
Cleric
231
Priest
232
Bishop
300
Archer
310
Hunter
311
Ranger
312
Bow Master
320
Crossbowman
321
Sniper
322
Marksman
400
Thief
410
Assassin
411
Hermit
412
Night Lord
420
Bandit
421
Chief Bandit
422
Shadower
430
Blade Recruit
431
Blade Acolyte
432
Blade Specialist
433
Blade Lord
434
Blade Master
500
Pirate
510
Brawler
511
Marauder
512
Buccaneer
520
Gunslinger
521
Outlaw
522
Corsair
910
Game Master
1000
Noblesse
1100
Dawn Warrior
1110
Dawn Warrior
1111
Dawn Warrior
1112
Dawn Warrior
1200
Blaze Wizard
1210
Blaze Wizard
1211
Blaze Wizard
1212
Blaze Wizard
1300
Wind Archer
1310
Wind Archer
1311
Wind Archer
1312
Wind Archer
1400
Night Walker
1410
Night Walker
1411
Night Walker
1412
Night Walker
1500
Thunder Breaker
1510
Thunder Breaker
1511
Thunder Breaker
1512
Thunder Breaker
2000
Legend
2001
Evan
2100
Aran
2110
Aran
2111
Aran
2112
Aran
2200
Evan
2210
Evan
2211
Evan
2212
Evan
2213
Evan
2214
Evan
2215
Evan
2216
Evan
2217
Evan
2218
Evan
Expedition leaderboards: total completions, top classes, fastest run times, top player records.
| param | default | description |
|---|---|---|
range |
all | 24h | 7d | 30d | 90d | all |
type |
— | completions | classes | fastest | records |
Example: https://dreamms.gg/api/v1/expeditions.php?range=30d&type=fastest
Real-time event leaderboards. Displays unique players.
| param | default | description |
|---|---|---|
event * |
— | event id (see Event IDs) |
type |
jq | jq |
Example: https://dreamms.gg/api/v1/event.php?event=5thanni&type=jq
Event IDs (1)
5thanni
5th Anniversary Event
Real-time online and peak count; total/unique players active players.
Example: https://dreamms.gg/api/v1/population.php
The most recent changelogs.
| param | default | description |
|---|---|---|
count |
5 | number of entries, max 20 |
format |
html | html | text |
Example: https://dreamms.gg/api/v1/changelog.php?count=3&format=text
Error codes
| HTTP | code · meaning |
|---|---|
400 | bad_request - a parameter was missing or invalid |
404 | not_found - no matching record |
401 | unauthorized - a valid ?key= is required |
405 | method_not_allowed - use GET or HEAD |
429 | rate_limited - slow down (see Retry-After) |
503 | unavailable - backend temporarily down |
Stats API v1 · Made with ❤️ by Dream MS