API reference

v0.1 surface. Everything under /v1 requires Authorization: Bearer <key>.

← back

Authentication

Authorization: Bearer bx_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Or, for browser convenience (not recommended in production): ?api_key=...

Rate limits & quotas

StatusMeaning
401missing or invalid API key
429per-minute rate limit exceeded; respect Retry-After
403JSON-RPC method not on allowlist

Chain tip

GET /v1/blocks/tip/height

$ curl -H "Authorization: Bearer $KEY" https://rpc.minebtx.com/v1/blocks/tip/height
123456

GET /v1/blocks/tip/hash

Blocks

GET /v1/block-height/:n

Returns the block hash at height n.

GET /v1/block/:hash

Returns the full block at verbosity 1 (header + txids).

GET /v1/block/:hash/header

Returns the block header (verbose JSON form).

GET /v1/block/:hash/stats

Returns aggregated stats for the block. Accepts hex hash or height.

Transactions

GET /v1/tx/:txid

Returns the verbose tx form. Note: rpc.minebtx.com does not maintain -txindex; historical (non-mempool) lookups by txid alone will return 404. Use /v1/block/:hash if you have the containing block.

GET /v1/tx/:txid/hex

GET /v1/tx/:txid/outspend/:vout

Returns {"spent": bool}.

POST /v1/tx/broadcast

Body: raw hex string, or {"hex":"..."}. Returns {"txid":"..."} on success.

Mempool

GET /v1/mempool

Summary stats (size, bytes, fees).

GET /v1/mempool/txids

GET /v1/mempool/recent

Top 50 recent mempool entries, each with txid, fee_sat, vsize, time.

Fees

GET /v1/fees/recommended

Returns mempool.space-shaped fastestFee / halfHourFee / hourFee / economyFee / minimumFee in sat/vB. BTX traffic is typically light so all bands collapse to mempoolminfee.

BTX-specific

GET /v1/btx/matmul/challenge

Current matmul challenge for solving a block (mining clients).

GET /v1/btx/matmul/service-challenge

Anti-bot service challenge (HTTP captcha integrators).

GET /v1/btx/shielded/pool-size

GET /v1/btx/bridges/status

GET /v1/btx/model-price

Currently a stub. Returns available:false until the deterministic model price wire-up lands (v0.5).

GET /v1/info

Bundles getblockchaininfo, getnetworkinfo, and getmininginfo in one call.

JSON-RPC pass-through

POST /v1/jsonrpc

$ curl -H "Authorization: Bearer $KEY" -H 'content-type: application/json' \
  -d '{"method":"getblockchaininfo","params":[],"id":1}' \
  https://rpc.minebtx.com/v1/jsonrpc

For bitcoind-compatible tooling. Method must be on the public allowlist (read-only chain/mempool/tx by default). Non-allowed methods return 403 with JSON-RPC error code -32601.

WebSocket (v0.3)

GET /v1/ws (Upgrade)

wss://rpc.minebtx.com/v1/ws?api_key=$KEY

After upgrade, send a subscription envelope as the first message:

{"action": "want", "data": ["blocks", "mempool"]}

Server pushes events as JSON: {"type": "new-block", "data": {"hash": "...", "height": 12345}}

Per-key concurrent connection caps: Free=1, Starter=3, Pro=10, Enterprise=50.

Fee estimation (v0.5)

GET /v1/fees/estimate

Mempool-aware estimator. Returns target-block sat/vB for 1/3/6/24 block targets plus p10/p50/p90 percentiles weighted by vsize.

{
  "mempool_vsize": 62361,
  "mempool_txs": 1,
  "target_blocks": {"1": 3, "3": 3, "6": 3, "24": 3},
  "percentiles": {"p10": 3, "p50": 3, "p90": 3},
  "floor_satvb": 1
}

Webhooks (v0.5)

POST /v1/webhooks

{"url": "https://your.app/hook", "subscriptions": ["new-block","mempool-info"]}

Returns an HMAC signing secret once. Every delivery includes X-Webhook-Signature-256: sha256=<hex> computed over the body using your secret. Retries with exponential backoff (1, 2, 4, 8, 16, 32, 64, 128s) before dead-lettering after 8 failed attempts.

GET /v1/webhooks

DELETE /v1/webhooks/:id

POST /v1/webhooks/:id/rotate-secret

Address watchers (v0.5)

Requires Starter tier or higher. Caps: Starter=10, Pro=100, Enterprise=100K.

POST /v1/watchers

{"addresses": ["btx1z..."], "label": "optional"}

GET /v1/watchers

GET /v1/watchers/:id/events?since=N&limit=100

Paginated event log of incoming outputs to the watched address. Combine with webhooks for push delivery, or poll directly.

DELETE /v1/watchers/:id

Matmul marketplace (v0.5)

BTX-anchored alternative to Cloudflare Turnstile. Each verified proof costs a small amount of BTX matmul-nonce work, deters bots without tokens or scripts.

POST /v1/matmul/challenge

Returns an issuance envelope: {issuance_id, challenge, ttl_seconds, verify_url}. Drop the challenge into your HTML form; have the client solve it.

POST /v1/matmul/verify

{"proof": {...}, "issuance_id": "..."}

Returns {"valid": true, "ticket": ...} if the proof verifies on-chain, else {"valid": false, "reason": ...}.

Service-challenge auth (v0.4.5) — anonymous tier-0 keys

No-signup auth. Solve a matmul service-challenge, redeem the proof, get a short-lived API token. Token is good for 1000 requests over 24h on the Free tier rate limit. Same chain-anchored PoW the consensus uses — the first RPC service gated by its own chain's PoW primitive.

POST /v1/auth/challenge

Returns a matmul challenge envelope. No auth needed.

POST /v1/auth/redeem

{"proof": {...}}

Returns {"token": "bx_challenge_...", "expires_at": "...", "requests_budget": 1000}. Use the returned token as Authorization: Bearer ... for any /v1/* endpoint.

Timeseries (v0.4.5)

Hourly rolled-up samples for BTX network state. Free tier: last 24h. Starter: last 30d. Pro+: full history.

GET /v1/btx/timeseries

Lists available metrics.

GET /v1/btx/timeseries/:metric?from=&to=&interval=

Metrics: chain.tip_height, chain.difficulty, network.hashrate_nps, mempool.tx_count, mempool.vsize, mempool.total_fee_sat, shielded.pool_size.

Intervals: raw (5-min), 1h (default).

$ curl -H "Authorization: Bearer $KEY" \
  "https://rpc.minebtx.com/v1/btx/timeseries/shielded.pool_size?interval=1h&from=2026-05-20T00:00:00Z"

Reorg log (v0.4.5)

GET /v1/btx/reorgs/recent?limit=N

Returns recent non-active chain tips observed via getchaintips on a 5-minute poll. Useful for confirmation-tracking clients that want to know when a block they relied on got orphaned.

Bulk endpoints (v0.4.5)

Reduce request count for wallets refreshing many addresses or analytics pulling many txes. Tier-gated: Starter 25, Pro 250, Enterprise 5000.

POST /v1/addresses/balances

{"addresses": ["btx1...", "btx1..."]}

Returns {"results": [{"address":"...","ok":true,"data":{...}}, ...]}. Indexed via the explorer over loopback.

POST /v1/txes/batch

{"txids": ["abc...", "def..."]}

Filtered WebSocket (v0.4.5)

The subscription envelope now accepts a filters object:

{"action": "want", "data": ["blocks", "mempool"], "filters": {
   "min_mempool_tx_count": 10
}}

Only emits mempool-info events when mempool tx count exceeds the threshold. Reduces client-side noise during typical light-mempool windows.

Regtest sandbox (v0.4.5)

If the rpc-server is configured with a regtest btxd, free dev/test endpoints are available under /v1/sandbox/*. Requires any valid API key but doesn't bill. Perfect for testing tx construction against a fast, no-fee chain.

GET /v1/sandbox/info

GET /v1/sandbox/blocks/tip

POST /v1/sandbox/tx/broadcast

POST /v1/sandbox/jsonrpc

Errors

All errors return JSON: {"error": "<message>"} with the appropriate HTTP status.

StatusMeaning
401missing or invalid API key
402feature requires paid tier
403JSON-RPC method not on allowlist
404resource not found
413bulk batch too large for tier
429rate limited — respect Retry-After
503upstream dependency (btxd, explorer, regtest) unreachable