# 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.

URL: https://blockspace.wiki/data/ord-api/

blockspace.to is the explorer built into [ord](https://blockspace.wiki/glossary/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](https://blockspace.wiki/glossary/spent-sats/)). It indexes sats, inscriptions, runes, addresses and transactions; its own `/status` says so (below). block.space's inscription pages and [BTI](https://blockspace.wiki/glossary/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:

```bash
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](https://blockspace.wiki/glossary/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](https://blockspace.wiki/glossary/rune/) |
| `/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](https://blockspace.wiki/glossary/recursive-inscription/)). 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`:

```json
{"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,317, 2026-10-20 12:01:32 UTC) ord was at block 972317 with 128,170,095 inscriptions, 472,043 of them [cursed](https://blockspace.wiki/glossary/cursed-inscription/), and 2,895,844,904 [lost sats](https://blockspace.wiki/glossary/lost-sats/).

`https://blockspace.to/r/blockheight`:

```text
972303
```

`https://blockspace.to/inscription/269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0`, trimmed (the largest inscription on block.space's board):

```json
{"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:

```json
{"number": 79351656, "output": "14580fd5072a0e96d8e0e6b1526319fde391d788b80a17eee23bf91ee1f961b2:6",
 "sat": 257704999999999, "satpoint": "14580fd5…f961b2:6:0", "timestamp": 1733723872, "value": 10000}
```

`https://blockspace.to/sat/257704999999999`, trimmed:

```json
{"number": 257704999999999, "name": "mahbufyxugw", "block": 51540, "rarity": "common",
 "decimal": "51540.4999999999", "percentile": "12.271666680165458%",
 "inscriptions": ["269730d6cd8c0795317bb8fd043fc7cecb147bb98ae0fed1a1ca9cc646a0c6a2i0"]}
```

`https://blockspace.to/rune/UNCOMMON•GOODS`, trimmed:

```json
{"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:

```json
{"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".

Sources:

- Blockspace Holdings records
- ord /status (the blockspace.to ord server) · https://blockspace.to/status
- blockspace.to ord JSON API, read-only GETs with Accept: application/json · https://blockspace.to/status

Live figures: ord as of block 972,317, 2026-10-20 12:01:32 UTC

Updated: 2026-10-20
