PearlStack logoPearlStack.net
MarketBlocksTxsMinersMempoolAPIPoUWSupplyStatus
PearlStack logoPearlStack

Independent Pearl explorer for blocks, transactions, addresses, miners, and PoUW data.

Support PearlStackDonate PRL to help keep the explorer running.prl1p5rypvczc58s4arumg0fgn4twdfem6xrm0v4thr7gdjwy9wpynu3suj50aa
ExploreMarketBlocksTransactionsMinersMempoolFree APIData Sources
AnalyticsMarketSupplyPoUWLabelsStatus

API Docs

PearlStack exposes a versioned JSON API for Pearl explorer data. Start anonymously, add an API key for a higher bucket, and use cursor pagination for list endpoints.

Base URL: https://api.pearlstack.netAnonymous: 60 requests/minFree key: 300 requests/minOpenAPI JSON/v1/docs

Quick Start

copy-paste friendly

Anonymous requests work immediately:

curl "https://api.pearlstack.net/v1/status"
curl "https://api.pearlstack.net/v1/blocks?limit=5"
curl "https://api.pearlstack.net/v1/search?q=PearlHash"

Use an API key when you want a separate, higher rate-limit bucket:

curl -H "X-API-Key: psk_live_..." "https://api.pearlstack.net/v1/api/me"
curl -H "Authorization: Bearer psk_live_..." "https://api.pearlstack.net/v1/blocks?limit=5"

Authentication

API keys are optional for now. When present, the key is checked server-side and responses identify the current bucket through /v1/api/me.

X-API-Key: psk_live_...
Authorization: Bearer psk_live_...

Rate Limits

Every rate-limited response includes headers your client can use to avoid noisy retries.

X-RateLimit-Limit: 300
X-RateLimit-Remaining: 299
X-RateLimit-Reset: 1782466380
Retry-After: 12

Pagination

List endpoints accept limit and cursor. The first request omits cursor. Use pagination.nextCursor for the next page.

curl "https://api.pearlstack.net/v1/blocks?limit=10"
curl "https://api.pearlstack.net/v1/blocks?limit=10&cursor=<nextCursor>"

Legacy offset still works, but new integrations should use cursors.

Response Metadata

JSON responses include meta so clients can log request ids and know how fresh the indexed data is.

{
  "meta": {
    "requestId": "...",
    "cached": false,
    "indexedTip": 78030,
    "indexedTipHash": "...",
    "txIndexedTip": 78030,
    "nodeHeight": 78404,
    "servedAt": "..."
  }
}

Paginated Response Shape

example
{
  "ok": true,
  "blocks": [...],
  "pagination": {
    "limit": 10,
    "cursor": null,
    "nextCursor": "eyJvZmZzZXQiOjEwfQ"
  },
  "meta": {
    "requestId": "...",
    "cached": false,
    "indexedTip": 78030,
    "nodeHeight": 78404,
    "servedAt": "..."
  }
}

Error Handling

same JSON pattern

Errors return ok: false, an error message, and response metadata when they happen inside /v1.

HTTP/1.1 400 Bad Request
{
  "ok": false,
  "error": "cursor must be a valid pagination cursor",
  "meta": {
    "requestId": "...",
    "indexedTip": 78030,
    "nodeHeight": 78404,
    "servedAt": "..."
  }
}

Show Latest Blocks

curl "https://api.pearlstack.net/v1/blocks?limit=5"

Get A Block And Its Pearl Certificate

curl "https://api.pearlstack.net/v1/blocks/78030"
curl "https://api.pearlstack.net/v1/blocks/78030/certificate"

Follow A Transaction

curl "https://api.pearlstack.net/v1/txs?limit=5"
curl "https://api.pearlstack.net/v1/txs/<txid>/flow"
curl "https://api.pearlstack.net/v1/txs/<txid>/outputs?limit=25"

Inspect An Address

curl "https://api.pearlstack.net/v1/addresses/<prl1-address>"
curl "https://api.pearlstack.net/v1/addresses/<prl1-address>/utxos?limit=25"
curl "https://api.pearlstack.net/v1/addresses/<prl1-address>/flows?limit=25"

Build Pool Pages

curl "https://api.pearlstack.net/v1/pools/top?limit=10"
curl "https://api.pearlstack.net/v1/pools/PearlHash"
curl "https://api.pearlstack.net/v1/pools/PearlHash/payout-outputs?limit=25"

Pull Market And Supply Data

curl "https://api.pearlstack.net/v1/market"
curl "https://api.pearlstack.net/v1/market/chart?days=7"
curl "https://api.pearlstack.net/v1/analytics/supply"

Endpoint Reference

common public routes

Blocks

Browse indexed blocks, block transactions, block outputs, raw RPC payloads, and Pearl certificates.

  • GET /v1/blocksRecent blocks with miner labels and block fields.
  • GET /v1/blocks/{heightOrHash}Block summary by height or hash.
  • GET /v1/blocks/{heightOrHash}/txsTransactions included in a block.
  • GET /v1/blocks/{heightOrHash}/outputsOutputs created in a block.
  • GET /v1/blocks/{heightOrHash}/coinbase-outputsAll coinbase payout outputs for a block.
  • GET /v1/blocks/{heightOrHash}/certificatePearl-native block certificate metadata.
  • GET /v1/blocks/{heightOrHash}/rawStored raw block JSON.

Transactions

Fetch recent transaction flows, tx summaries, raw payloads, inputs, outputs, and counterparties.

  • GET /v1/txsRecent transaction feed with value, fee, type, and counterparties.
  • GET /v1/txs/{txid}Transaction summary.
  • GET /v1/txs/{txid}/flowInputs, outputs, fee, net flow, and counterparties.
  • GET /v1/txs/{txid}/inputsPaginated transaction inputs.
  • GET /v1/txs/{txid}/outputsPaginated transaction outputs.
  • GET /v1/txs/{txid}/rawStored raw transaction JSON.

Addresses

Inspect balances, UTXOs, transaction history, balance history, and address flows.

  • GET /v1/addresses/{address}Address summary, balance, first/last seen, and known label.
  • GET /v1/addresses/{address}/txsTransactions related to an address.
  • GET /v1/addresses/{address}/utxosUnspent outputs for an address.
  • GET /v1/addresses/{address}/balance-historyBalance history over indexed blocks.
  • GET /v1/addresses/{address}/flow-summaryInflow/outflow summary.
  • GET /v1/addresses/{address}/flowsPaginated address flow rows.

Miners and Pools

Pool-aware miner analytics using payout addresses, known labels, and coinbase tag inference.

  • GET /v1/miners/topTop payout addresses by mined blocks.
  • GET /v1/miners/{address}Miner summary and mined blocks for a payout address.
  • GET /v1/miners/{address}/blocks-over-timeDaily mined block counts for a payout address.
  • GET /v1/pools/topTop pool groups by known label or inferred tag.
  • GET /v1/pools/{poolId}Pool summary, payout addresses, and recent payout outputs.
  • GET /v1/pools/{poolId}/blocks-over-timeDaily mined block counts for a pool.
  • GET /v1/pools/{poolId}/payout-outputsPaginated pool payout outputs.

Analytics and Market

Network health, PoUW, supply, pools, mempool, and cached CoinGecko market data.

  • GET /v1/statusNode, database, and indexer status.
  • GET /v1/analytics/networkDifficulty, hashrate estimates, node height, and indexer lag.
  • GET /v1/analytics/pouwPoUW certificate analytics.
  • GET /v1/analytics/supplyChain-derived emitted/circulating supply.
  • GET /v1/analytics/poolsPool share windows and difficulty/hashrate overlay data.
  • GET /v1/marketCached CoinGecko market data enriched with PearlStack supply.
  • GET /v1/market/chartCached price history. Supports days=1,7,30,90,365.
  • GET /v1/analytics/marketStored market snapshots and cache health.

Discovery

Search, labels, mempool, and API introspection.

  • GET /v1/search?q=...Resolve block heights/hashes, txids, addresses, miners, and pool labels.
  • GET /v1/search/suggest?q=...Autocomplete-style search suggestions.
  • GET /v1/known-addressesKnown address and pool labels.
  • GET /v1/mempoolPearl node mempool summary and sample txids.
  • GET /v1/api/meCurrent auth identity and rate-limit bucket.
  • GET /v1/openapi.jsonOpenAPI 3.1 machine-readable schema.

OpenAPI

Use the OpenAPI document to generate clients, import into Postman, or keep a typed SDK in sync with the public API.

curl "https://api.pearlstack.net/v1/openapi.json"

Client Notes

Cache stable historical resources in your app, retry 429 only after Retry-After, and include your meta.requestId when reporting API problems.