Skip to main content

API

A free, read-only JSON API and iframe widgets for external wikis and tools that want to show monster data, images or 3D models from this site. Read the legal notice before using visual assets in another project.

Base URL and versioning

All endpoints are under the URL below. The v1 prefix is a stable contract: existing fields are never renamed or removed without moving to a new version.

https://dqmj1.wiki/api/v1/

Endpoints

GET/api/v1/metaAPI version, species count, supported languages
GET/api/v1/familiesThe 8 monster families, names in 5 languages
GET/api/v1/monstersPaginated list (filters: family, rank; params: cursor, limit)
GET/api/v1/monsters/{id}Full monster sheet (names, stats, images, model, resistances...)
GET/api/v1/monsters/{id}/model3D model metadata (glTF URL, embed URL)
GET/api/v1/monsters/{id}/fusionsSpecial recipes, generic fusion examples, used-as-parent list
GET/api/v1/skills/{id}Skill sheet (name, description, point tiers)
GET/api/v1/chestsChests loot tables (tiers A, B, C), 65 maps, 52 fixed rewards
GET/api/v1/itemsItem catalog (126 items, buy/sell prices, reward sources)
GET/api/v1/items/{id}Item sheet with detailed chest and fixed reward sources

{id} is the internal monster id shown in this site's URLs (e.g. m000 for Slime). No API key is required; all responses allow cross-origin requests from any site.

Example call

curl https://dqmj1.wiki/api/v1/monsters/m000

Example response

{
  "id": "m000",
  "speciesId": 1,
  "rank": "F",
  "family": "slime",
  "names": { "en": "Slime", "fr": "Gluant", "de": "Schleim", "it": "Slime", "es": "Limo" },
  "images": {
    "icon": "https://dqmj1.wiki/api/assets/images/icons/monsters/m000.png",
    "preview": "https://dqmj1.wiki/api/assets/models/previews/m000.webp"
  },
  "model": {
    "gltf": "https://dqmj1.wiki/api/assets/models/web-gltf/animated/m000/m000.gltf",
    "animated": true
  },
  "stats": {
    "caps": { "hp": 910, "mp": 600, "attack": 820, "defense": 900, "agility": 800, "wisdom": 840 },
    "source": "rom-verified"
  },
  "innateSkill": { "id": 102, "names": { "en": "Slimer", "fr": "Pot de glu", "...": "..." } },
  "resistances": [],
  "traits": ["Critical Massacre"],
  "nicknames": ["Slimer", "Slimo", "Mr Slim"],
  "wikiUrl": "https://dqmj1.wiki/bestiaire/m000",
  "legal": {
    "notice": "Dragon Quest Monsters: Joker [...] property of Square Enix [...]",
    "attributionRequired": true,
    "termsUrl": "https://dqmj1.wiki/legal"
  }
}

Errors use a uniform shape (error), with a standard HTTP status code (404, 400) and a stable code field.

{ "error": { "code": "not_found", "message": "No monster with id \"m999\"." } }

Iframe widgets

For a ready-made visual block instead of raw JSON, embed one of these pages in an <iframe>. They carry their own permanent attribution notice.

GET/embed/monster/{id}Compact card: name, rank/family, stats, innate skill
GET/embed/monster/{id}/model3D model viewer only (orbit controls)
GET/embed/fusion/{id}Fusion lineage diagram

Parameters: ?lang= (en, fr, de, it, es) and ?compact=1 (compact card only, on the monster card widget). The widget reports its real height to the parent page via postMessage so you can size the iframe without an inner scrollbar:

<iframe id="dqmj1" src="https://dqmj1.wiki/embed/monster/m000" width="320" height="0" frameborder="0"></iframe>
<script>
  window.addEventListener("message", (e) => {
    if (e.data?.type === "dqmj1-wiki:resize") {
      document.getElementById("dqmj1").height = e.data.height;
    }
  });
</script>

Cache, rate limits, availability

  • Responses are cacheable (data only changes on a redeploy); cache them on your side if you make many requests.
  • No API key, but requests may be rate-limited per IP if usage causes problems.
  • This is a personal, non-commercial project with no uptime guarantee.