Skip to content

Explorer API Reference

The ATP Explorer API provides a REST interface for querying ATP documents indexed from Bitcoin inscriptions.

Draft

This API specification is under development. Endpoints may change.


Base URL

https://explorer.atprotocol.io/v1

Authentication

The public API requires no authentication. Rate limits apply.


Conventions

Fingerprints

Fingerprints are base64url strings (unpadded), computed from the primary key k[0].

Network references

Returned objects often include a location reference:

json
{ "net": "bip122:000000000019d6689c085ae165831e93", "id": "<txid>" }

Economic fields

ATP has no stake field. Explorers MAY surface on-chain economic signals such as:

  • inscription_value (sats locked in the inscription output)
  • inscription_fee (sats paid in fees)

Endpoints

Identities

List Identities

http
GET /identities

Query Parameters:

ParameterTypeDescription
limitintegerMax results (default: 20, max: 100)
offsetintegerPagination offset

Response:

json
{
  "ok": true,
  "data": [
    {
      "genesis_fingerprint": "<fingerprint>",
      "current_fingerprint": "<fingerprint>",
      "name": "ShrikeBot",
      "current_ref": { "net": "bip122:...", "id": "<txid>" },
      "state": "active",
      "ts": 1738627200
    }
  ],
  "total": 42,
  "limit": 20,
  "offset": 0
}

Get Identity by Fingerprint

http
GET /identities/:fingerprint

Response:

json
{
  "ok": true,
  "data": {
    "genesis_fingerprint": "<fingerprint>",
    "current_fingerprint": "<fingerprint>",
    "name": "ShrikeBot",
    "keys": [
      { "t": "ed25519", "p": "<base64url>" }
    ],
    "m": {
      "links": [["twitter", "@Shrike_Bot"]]
    },
    "state": "active",
    "ts": 1738627200,
    "current_ref": { "net": "bip122:...", "id": "<txid>" },
    "block_height": 880000
  }
}

Get Identity by Name

http
GET /identities/by-name/:name

Returns identities that currently display the given name. Names are not unique.


Attestations

List Attestations

http
GET /attestations

Query Parameters:

ParameterTypeDescription
fromstringFilter by attestor fingerprint
tostringFilter by attestee fingerprint
limitintegerMax results (default: 20)
offsetintegerPagination offset

Get Attestation

http
GET /attestations/:txid

Response:

json
{
  "ok": true,
  "data": {
    "txid": "<txid>",
    "from": { "f": "<fingerprint>", "ref": { "net": "bip122:...", "id": "<txid>" } },
    "to": { "f": "<fingerprint>", "ref": { "net": "bip122:...", "id": "<txid>" } },
    "ctx": "Reliable collaborator",
    "vna": 1792156800,
    "ts": 1738627200,
    "inscription_value": 10000,
    "inscription_fee": 1350
  }
}

Receipts

Get Receipt

http
GET /receipts/:txid

Response:

json
{
  "ok": true,
  "data": {
    "txid": "<txid>",
    "parties": [
      {
        "f": "<fingerprint>",
        "ref": { "net": "bip122:...", "id": "<txid>" },
        "role": "requester"
      },
      {
        "f": "<fingerprint>",
        "ref": { "net": "bip122:...", "id": "<txid>" },
        "role": "provider"
      }
    ],
    "exchange": {
      "type": "service",
      "sum": "Code review",
      "val": 25000
    },
    "outcome": "completed",
    "ts": 1738627200
  }
}

Status

Explorer Status

http
GET /status

Response:

json
{
  "ok": true,
  "status": "operational",
  "indexed_block": 880150,
  "chain_tip": 880152,
  "identities_count": 42,
  "attestations_count": 156,
  "receipts_count": 23,
  "last_indexed": "2026-02-04T19:30:00Z"
}

Errors

All errors return JSON:

json
{
  "ok": false,
  "error": "Not found",
  "code": "NOT_FOUND"
}

Error Codes:

CodeHTTP StatusDescription
NOT_FOUND404Resource not found
BAD_REQUEST400Invalid request parameters
RATE_LIMITED429Too many requests
INTERNAL_ERROR500Server error

Rate Limits

TierRequests/minuteRequests/day
Public6010,000

Rate limit headers are included in responses:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1738627260

API specification v0.1 (draft)

Released under the MIT License.