API Documentation

Access Ragnarok Online game data programmatically from divine-pride.net.

Base URL

https://www.divine-pride.net/api

Authentication

All API requests require an API key passed as a query parameter. You can get your personal key from your profile page after signing in.

Parameter Location Required Description
apiKey Query string Yes Your personal API key

Example

GET /api/database/Monster/1002?apiKey=YOUR_API_KEY

Headers

Use HTTP headers to select the Ragnarok Online region whose data you want to query, and the language for localized content.

Header Required Default Description
Accept-Language No en Language for localized data. Values: en, ko, ja, pt, ru, fr, de, es, th, cn
x-server No kROM Ragnarok Online region to query — this selects the RO game server whose data you want, not a divine-pride.net server. Each region has its own game data. Value must be the server's real alias (not its display name): bRO, cRO, dpRO, idRO, GGH, GZero, iRO, jRO, kROM, kROZ, LATAM, ropEU, ropRU, thROC, thRO, twRO, twROZ

Example

curl -H "Accept-Language: ko" \
     -H "x-server: kROM" \
     "https://www.divine-pride.net/api/database/Monster/1002?apiKey=YOUR_API_KEY"

Usage Guidelines

This API is provided for personal tools, bots, and integrations that need occasional lookups — please use it responsibly:

  • Cache responses. Item/monster/skill/status-effect data rarely changes — don't re-fetch the same id on every use. Store what you look up and reuse it.
  • Watch your rate limit. Exceeding it returns 429 — back off and retry after the Retry-After header, don't hammer it in a tight loop.
  • Don't try to mirror the whole database. There's no general search/browse endpoint — this API is for looking up entities you already know the id for, plus polling LatestUpdates for what changed. It isn't meant to let a third party stand up a competing copy of this site's database.
  • Repeated abuse (ignoring rate limits, scripted bulk id enumeration, etc.) will get a key revoked.
GET /api/database/Monster/{id}

Retrieve detailed information for a single monster by its ID.

Parameters

NameInTypeDescription
id Path integer Monster ID
apiKey Query string Your API key

Example Request

GET /api/database/Monster/1002?apiKey=YOUR_API_KEY
Accept-Language: en

Example Response

{
  "id": 1002,
  "name": "Poring",
  "spriteName": "PORING",
  "level": 1,
  "race": "Plant",
  "element": "Water",
  "elementLevel": 1,
  "size": "Medium",
  "type": "Normal",
  "health": 50,
  "attackRange": "7~10",
  "def": 0,
  "mDef": 5,
  "hit": 0,
  "flee": 0,
  "drops": [ ... ],
  "mvpDrops": [ ... ],
  "spawns": [ ... ],
  "skills": [ ... ],
  "dataUpdatedAtUtc": "2026-05-14T16:21:13Z",
  "region": "kROM"
}
GET /api/database/Item/{id}

Retrieve detailed information for a single item by its ID.

Parameters

NameInTypeDescription
id Path integer Item ID
apiKey Query string Your API key

Example Request

GET /api/database/Item/501?apiKey=YOUR_API_KEY
Accept-Language: en
x-server: iRO

Example Response

{
  "id": 501,
  "name": "Red Potion",
  "aegisName": "Red_Potion",
  "iconUrl": "https://static.divine-pride.net/images/items/item/501.png",
  "type": "Healing",
  "subType": "",
  "description": "A potion made from red herbs.",
  "sellPrice": 25,
  "buyPrice": 50,
  "weight": 70,
  "canDrop": true,
  "canTrade": true,
  "canStore": true,
  "canCart": true,
  "canSellToNpc": true,
  "canMail": true,
  "canAuction": true,
  "canGuildStorage": true,
  "itemMoveInfo": {
    "drop": true,
    "trade": true,
    "store": true,
    "cart": true,
    "sell": true,
    "mail": true,
    "auction": true,
    "guildStore": true
  },
  "allJobsAllowed": true,
  "allowedJobIds": [ ... ],
  "sources": [ ... ],
  "scripts": [ ... ],
  "dataUpdatedAtUtc": "2026-05-14T16:21:13Z",
  "region": "iRO"
}

canDrop/canTrade/etc. and itemMoveInfo carry the same 8 trade-permission flags in two shapes — the flat fields plus a nested object matching the legacy public API's itemMoveInfo contract, kept for backward compatibility. accessorySprite/robeSprite (headgear/garment view-sprite resource names, omitted above) are only ever populated for the item type they actually apply to — null otherwise, even if the item's own classNum happens to coincidentally match an unrelated row in the other table.

GET /api/database/Skill/{id}

Retrieve detailed information for a single skill by its ID.

Parameters

NameInTypeDescription
id Path integer Skill ID
apiKey Query string Your API key

Example Request

GET /api/database/Skill/28?apiKey=YOUR_API_KEY
Accept-Language: en

Example Response

{
  "id": 28,
  "name": "Heal",
  "databaseName": "AL_HEAL",
  "iconUrl": "https://static.divine-pride.net/images/skills/al_heal.png",
  "description": "Restore a target's HP. Undead-property targets receive damage.",
  "skillType": "Supportive",
  "targetType": "Self/Ally",
  "maxLevel": 10,
  "spCost": "...",
  "castTime": "...",
  "cooldown": "...",
  "range": "9",
  "levelTable": [ ... ],
  "prerequisites": [ ... ],
  "dataUpdatedAtUtc": "2026-05-14T16:21:13Z",
  "region": "kROM"
}
GET /api/database/Efst/{id}

Retrieve detailed information for a single status effect (buff/debuff) by its ID.

Parameters

NameInTypeDescription
id Path integer Efst (status effect) ID
apiKey Query string Your API key

Example Request

GET /api/database/Efst/1?apiKey=YOUR_API_KEY
Accept-Language: en

Example Response

{
  "id": 1,
  "key": "EFST_BLESSING",
  "name": "Blessing",
  "description": "Increases STR, INT, and DEX.",
  "iconUrl": "https://static.divine-pride.net/images/efst/1.png"
}
GET /api/database/latestupdates

Bare ids for one entity type that changed on the requested server, with their last-updated timestamp — for incremental sync. Fetch full details for the ids you care about via the Monster/Item/Skill/Efst endpoints above. Want more than one type? Call this once per type — results is always a flat list of just the one type you asked for, not a mixed bag that would need per-row type tagging to make sense of.

The window is always capped at 14 days from startDate, regardless of how far in the past it is — this is not a general "give me everything since X" endpoint. To cover a longer span, page through it one 14-day window at a time.

Parameters

NameInTypeDescription
apiKey Query string Your API key
type Query string Required. One entity type: monster, item, efst, or skill. Missing or any other value returns 400.
startDate Query date Start of the 14-day window (UTC, e.g. 2026-08-01). Optional — defaults to 14 days ago.

Example Request

GET /api/database/latestupdates?type=item&startDate=2026-08-01&apiKey=YOUR_API_KEY
x-server: kROM

Example Response

{
  "region": "kROM",
  "type": "item",
  "startDate": "2026-08-01T00:00:00Z",
  "endDate": "2026-08-15T00:00:00Z",
  "results": [
    { "id": 501, "lastUpdate": "2026-08-01T09:12:04Z" },
    { "id": 4212, "lastUpdate": "2026-08-02T03:41:19Z" },
    ...
  ]
}

Rate Limits

TierRequests / minuteNotes
Per API key Varies Set per account when your key is issued; contact support to raise your limit

Exceeding the limit returns HTTP 429. Retry after the Retry-After header value (seconds).

Error Codes

HTTP StatusMeaning
200Success
400Bad request — missing or invalid parameter
401Unauthorized — invalid or missing API key
404Entity not found
429Rate limit exceeded
500Internal server error
Start typing to search…