Quickstart
No key, no signup. Pick a DNK Asset ID and read the building.
Get a building by ID
Every building has an ID in the form DNK-JP-<2-digit prefecture>-<8 digits>. We'll use 丸ビル (the Marunouchi Building) in Tokyo, DNK-JP-13-01000000, as the running example through these docs.
curl https://dnk.co/japan/api/v1/assets/DNK-JP-13-01000000
The response is a BuildingPage: identity and location, a fields object keyed by field name, geometry, the list of sources that fed it, venues inside the building, nearby buildings, and a change history. Here's a trimmed shape:
{
"id": "DNK-JP-13-01000000",
"path": "/japan/tokyo/chiyoda/marunouchi/DNK-JP-13-01000000",
"fields": {
"nameJa": {
"value": "丸ビル",
"unit": null,
"tier": "free",
"provenance": {
"source": "osm",
"sourceRecordId": "way/123456789",
"sourceUrl": "https://www.openstreetmap.org/way/123456789",
"retrievedAt": "2026-08-20T04:00:00Z",
"extractionMethod": "osm-tag",
"confidence": 0.9
},
"conflict": null,
"estimated": false
},
"heightM": {
"value": 179.2,
"unit": "m",
"tier": "free",
"provenance": {
"source": "wikidata",
"sourceRecordId": "Q11241344",
"sourceUrl": "https://www.wikidata.org/wiki/Q11241344",
"retrievedAt": "2026-08-20T04:00:00Z",
"extractionMethod": "wikidata-claim",
"confidence": 0.85
},
"conflict": {
"value": 18,
"unit": "m",
"source": "osm"
},
"estimated": false
},
"floorsAbove": { "value": 37, "unit": null, "tier": "free", "estimated": false },
"floorsBelow": { "value": 4, "unit": null, "tier": "free", "estimated": false },
"footprintM2": { "value": 9890, "unit": "m2", "tier": "free", "estimated": false },
"gfaM2": { "value": 405490, "unit": "m2", "tier": "free", "estimated": true },
"yearBuilt": { "value": 2002, "unit": null, "tier": "free", "estimated": false }
}
}Each field carries its own value, unit, tier, and provenance (source, source record ID, source URL, retrieval time, extraction method, confidence). When more than one source reported the field, conflict holds the losing value and its source; otherwise it's null. estimated: true means JMAD computed the value rather than reading it directly. Height here shows the shape of a source conflict: OpenStreetMap's 18 m loses to a taller structural-height figure from Wikidata, and both stay on the record. The numbers are illustrative: on the live record PLATEAU's surveyed height outranks Wikidata's, and the Wikidata and OpenStreetMap values stay attached as the losing candidates. Full field reference: Field dictionary. Full precedence rules: Provenance and precedence.
Read it as markdown
Every asset page has a plain-text twin, meant for terminals, agents, and anywhere JSON is more than you need.
curl -H "Accept: text/markdown" https://dnk.co/japan/tokyo/chiyoda/marunouchi/DNK-JP-13-01000000
Or fetch the .md file directly:
curl https://dnk.co/japan/tokyo/chiyoda/marunouchi/DNK-JP-13-01000000.md
Both return the same markdown body. See Markdown twins and negotiation for how content negotiation picks the format.
Search by name
curl "https://dnk.co/japan/api/v1/assets?q=丸ビル"
The response is { items, page, total, totalCapped }. Details on filters and pagination: Search and pagination.
Open the page
The permanent URL for this building is https://dnk.co/japan/tokyo/chiyoda/marunouchi/DNK-JP-13-01000000. It follows the prefecture / ward / 町字 (machi-aza, the smallest administrative unit below a ward) / ID tree. Open it in a browser for the human-readable version, or keep using curl for the machine-readable one.
NoteNo API key anywhere in this page. The public layer has no authentication step at all. See Authentication for what that means in practice.
Next: How JMAD is built for where these numbers come from.
Start from the website
Open the Build with this data panel on the homepage or an area list. Use the API provides a copyable curl command and an Open JSON link. Area examples include the current location and search term; advanced table filters and sorting do not carry over to the API request.
On a building record, choose Use this data or the API & agent tab for a request using that building's permanent ID. The MCP instructions use the same ID with get_asset.
Updated about 19 hours ago
