The blockspace.to ord API
blockspace.to is an ord server with its JSON API switched on: how to ask for JSON, the endpoints its guide lists, the recursive /r/ endpoints, the brotli rule for /content, and real responses.
blockspace.to is the explorer built into ord, the ordinals indexer, run by Blockspace Holdings as one process with its indexer. It is a fork of ord 0.27.1 that also indexes spent sat ranges (spent sats). It indexes sats, inscriptions, runes, addresses and transactions; its own /status says so (below). block.space's inscription pages and BTI both read it.
Asking for JSON #
The ord API guide: the server returns JSON instead of HTML when the request carries the header Accept: application/json, and the objects follow what the HTML pages show. For example:
curl -s -H "Accept: application/json" https://blockspace.to/status
Responses allow cross-origin reads (access-control-allow-origin: *).
Endpoints #
The guide lists these JSON endpoints (all GET unless marked):
| path | returns |
|---|---|
/status |
the server and its index: height, counts, which indexes are on |
/address/<address> |
every asset of an address (needs the address index) |
/block/<hash>, /block/<height> |
one block: hash, height, its inscriptions |
/blockcount, /blockhash, /blockhash/<height>, /blockheight, /blocktime |
the latest block's height, hash and time |
/blocks |
the latest height, the last 100 block hashes and featured inscriptions |
/decode/<txid> |
a decoded transaction |
/galleries, /galleries/<page>, /gallery/<id>, /gallery/<id>/<page> |
gallery inscriptions |
/inscription/<id>, /inscription/<id>/<child> |
one inscription |
/inscriptions, /inscriptions/<page>, /inscriptions/block/<height> |
the latest 100, a page of 100, or one block's inscriptions |
POST /inscriptions |
details for a list of inscription ids |
/output/<outpoint>, /outputs/<address>, POST /outputs |
outputs: value, sat ranges, inscriptions, runes, spent |
/rune/<rune>, /runes, /runes/<page> |
runes |
/sat/<sat> |
one sat (needs the sat index) |
/tx/<txid> |
one transaction |
The guide also lists POST /offer and GET /offers (PSBT offers) and /install.sh; they are not data endpoints. The fork's guide documents no endpoint of its own for spent sat ranges.
Recursive endpoints #
The /r/ endpoints are the ones an inscription can call from inside its own content (recursion). They answer JSON without the Accept header: /r/blockhash, /r/blockhash/<height>, /r/blockheight, /r/blockinfo/<query>, /r/blocktime, /r/children/<id> (and paged, and /inscriptions), /r/parents/<id> (likewise), /r/inscription/<id>, /r/metadata/<id>, /r/undelegated-content/<id>, /r/sat/<sat>, /r/sat/<sat>/<page>, /r/sat/<sat>/at/<index> and its /content, /r/tx/<txid> and /r/utxo/<outpoint>.
/content and brotli #
/content/<id> returns an inscription's raw content. An inscription stored with content-encoding: br gets a 406 unless the request accepts brotli, so send Accept-Encoding: br and decode the answer; block.space's thumbnailer does exactly that; it had met 38 such inscriptions by 2026-10-19. With the header, the response carries content-encoding: br. Content responses are served cache-control: public, max-age=1209600, immutable.
Examples #
All read 2026-10-20 at 09:44 UTC with Accept: application/json; the public form is shown.
https://blockspace.to/status:
{"address_index": true, "blessed_inscriptions": 127697344, "chain": "mainnet",
"cursed_inscriptions": 472043, "height": 972303, "inscription_index": true,
"inscriptions": 128169387, "json_api": true, "lost_sats": 2895844904,
"minimum_rune_for_next_block": "LLGKX", "rune_index": true, "runes": 216409,
"sat_index": true, "started": "2026-10-18T13:35:35.217254841Z",
"transaction_index": true, "unrecoverably_reorged": false}
The wiki reads the same endpoint every hour: on its latest reading (as of block 972,304, 2026-10-20 10:17:29 UTC) ord was at block 972304 with 128,169,401 inscriptions, 472,043 of them cursed, and 2,895,844,904 lost sats.
https://blockspace.to/r/blockheight:
972303
https://blockspace.to/inscription/269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0, trimmed (the largest inscription on block.space's board):
{"id": "269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0",
"address": "bc1pxj0y2yddwd2vccy9tf29czjun97ssmnyxt4n7w0y7ch9w93w5w8sanhtax",
"charms": ["vindicated"], "child_count": 6,
"content_length": 3969429, "content_type": "text/html;charset=utf-8",
"fee": 49979388, "height": 873893, "metaprotocol": null}
https://blockspace.to/r/inscription/269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0, trimmed:
{"number": 79351656, "output": "14580fd5072a0e96d8e0e6b1526319fde391d788b80a17eee23bf91ee1f961b2:6",
"sat": 257704999999999, "satpoint": "14580fd5…f961b2:6:0", "timestamp": 1733723872, "value": 10000}
https://blockspace.to/sat/257704999999999, trimmed:
{"number": 257704999999999, "name": "mahbufyxugw", "block": 51540, "rarity": "common",
"decimal": "51540.4999999999", "percentile": "12.271666680165458%",
"inscriptions": ["269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0"]}
https://blockspace.to/rune/UNCOMMON•GOODS, trimmed:
{"id": "1:0", "mintable": true,
"entry": {"spaced_rune": "UNCOMMON•GOODS", "symbol": "⧉", "number": 0, "block": 1,
"mints": 165723114, "burned": 24212, "divisibility": 0, "premine": 0, "turbo": true}}
https://blockspace.to/output/14580fd5072a0e96d8e0e6b1526319fde391d788b80a17eee23bf91ee1f961b2:6, trimmed:
{"value": 10000, "spent": false, "indexed": true, "confirmations": 98199,
"inscriptions": ["269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0"],
"runes": {}}
The output's sat_ranges field lists its sats as [start, end) pairs.
A known defect #
As of 2026-10-20 the server's operating notes record one defect: ord 0.27.1 cannot decode Bitcoin Core 28's "anchor" (P2A) script type, so a page for a transaction with such an output fails with "error serving request".
Related #
Sources #
Live figures: ord as of block 972,304, 2026-10-20 10:17:29 UTC. Refreshed hourly.
Updated 2026-10-20 · This page as Markdown