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/meta | API version, species count, supported languages |
| GET | /api/v1/families | The 8 monster families, names in 5 languages |
| GET | /api/v1/monsters | Paginated 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}/model | 3D model metadata (glTF URL, embed URL) |
| GET | /api/v1/monsters/{id}/fusions | Special recipes, generic fusion examples, used-as-parent list |
| GET | /api/v1/skills/{id} | Skill sheet (name, description, point tiers) |
| GET | /api/v1/chests | Chests loot tables (tiers A, B, C), 65 maps, 52 fixed rewards |
| GET | /api/v1/items | Item 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/m000Example 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}/model | 3D 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.