Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 171 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

Xverse API

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Xverse API

Build powerful Bitcoin applications with production-grade APIs used by β€” now available to developers.

Our suite of APIs provides everything you need to interact with the modern Bitcoin ecosystem: from Ordinals and Runes, to Bitcoin-native swaps, inscriptions, and Bitcoin L2 integrations. Whether you're building wallets, DeFi platforms, NFT marketplaces, or cross-chain bridges, our infrastructure gives you access to reliable, real-time blockchain data and ready-to-use transaction workflows.


We built these APIs to solve the real infrastructure problems we faced while building the Xverse wallet. Now we’re opening them up so Bitcoin developers can skip the heavy lifting and focus on building.

Your Bitcoin RPC, indexer, and data layer β€” all in one API.

With the Xverse API, you get:

Get Started

πŸ”Œ Endpoints

Network
Endpoint URL

Mainnet

https://api.secretkeylabs.io

Signet

https://api-signet.secretkeylabs.io

Testnet4

. Happy building!

Don't want to manage an API key? Every Xverse API endpoint also accepts payment over the β€” pay 1 satoshi per request via Lightning, no key required. This is the recommended path for AI agents and autonomous clients.

See MPP Lightning Payments for the full flow.

Have feedback, feature requests, or want to partner? β€” we’d love to hear from you.

https://api-testnet4.secretkeylabs.io

πŸ”‘ Get your API keys

⚑ Alternative: pay-per-request via Lightning

πŸ’¬ Developer Support & Feedback

Start your free trial to get API keys
Machine Payments Protocol (MPP)
Contact us

Bitcoin

Bitcoin RPC, real-time and comprehensive Bitcoin mempool & transaction data, advanced indexing of UTXOs & balances, optimised for apps and dashboards.

Address

Activity

Transactions

Node & Mempool

Blocks

Portfolio

Monitor Bitcoin asset balances and activity across multiple addresses, with automatic daily tracking and historical portfolio insights.

Ordinals

Fetch detailed information on all inscriptions, UTXOs, rare sats β€” everything you need to power an Ordinals experience.

Automate Ordinal inscriptions with advanced features. Estimate costs, create orders, and track inscription statuses seamlessly.

⚑ Ultra-fast Bitcoin RPC and real-time mempool data β€” without running your own node

  • 🧩 Advanced indexing for transaction history, UTXO data, and Bitcoin asset protocols

  • πŸ”² Comprehensive Ordinals, Runes & BRC-20 support β€” balances, parsing, and transaction data with zero custom indexing

  • πŸ’Ή Live & historical market data for Bitcoin assets: Ordinals, Runes, BRC-20, and Bitcoin L2 tokens

  • πŸ’± Swap aggregation across Bitcoin AMMs & L2s (Spark, Stacks, Starknet, BOB, Runes AMMs, BRC-20, etc.)

  • πŸ“Š Portfolio analytics with real-time activity and daily balance history

  • ✍️ Automated minting, etching & inscription at scale β€” simple endpoints that handle high volumes without custom scripts

  • πŸŒ‰ Cross-chain swaps & bridging with aggregated liquidity β€” one interface to move assets seamlessly across Bitcoin and L2s

  • πŸ€– ⚑ Pay-per-request API access via Lightning β€” every endpoint accepts payment over the Machine Payments Protocol (MPP) at 1 sat per call. Built for AI agents that don't want to manage API keys.


  • Our API suite is organized into powerful modules that serve different needs across the Bitcoin ecosystem:

    Module
    Description

    🟠

    Bitcoin RPC, real-time and comprehensive Bitcoin mempool & transaction data, advanced indexing of UTXOs & balances, optimised for apps and dashboards.

    πŸ’Ή & πŸ‘€

    Monitor Bitcoin asset balances and activity across multiple addresses, with automatic daily tracking and historical portfolio insights.

    πŸ–ΌοΈ

    Fetch detailed information on all inscriptions, UTXOs, rare sats β€” everything you need to power an Ordinals experience. Automate Ordinal inscriptions with advanced features. Estimate costs, create orders, and track inscription statuses seamlessly.


    All endpoints are RESTful and return JSON responses. You can use them with your preferred stack β€” whether you're writing in JavaScript, Python, Rust, or anything else.

    Authentication, rate limits, and response formats will be covered in the Getting Started section.

    Need autonomous, machine-payable access without an API key? See MPP Lightning Payments.


    This API suite powers real products β€” including the Xverse wallet and app β€” and is optimized for scale, speed, and uptime.

    βœ… >99% Uptime ⚑ Low-latency responses πŸ”’ Secure & production-tested πŸ“ˆ Scalable for any app size


    If you're ready to dive in, check out our Getting Started guide or get your API key to start exploring endpoints.

    Looking to integrate specific functionality like portfolio monitoring, swaps or Ordinals support? Each section is fully documented with example requests, response formats, and real-world use cases.

    ✨ Welcome to the Xverse API

    πŸš€ Why use the Xverse API?

    Xverse wallet

    🧰 What’s Inside

    βš™οΈ How It Works

    πŸ§‘β€πŸ’» Built for Builders

    πŸ’‘ Start Building

    Balance

    Bitcoin Address Summary

    Returns the balance and a paginated list of transaction IDs for a given Bitcoin address. Fully mempool-aware.

    [v1] Get Bitcoin UTXOs

    [v2] Get Bitcoin UTXOs (Mempool-Aware)

    Historical Activity (Confirmed)

    This endpoint returns the combined historical activity across BTC, inscriptions, and runes for a set of addresses, including all incoming/outgoing transfers.

    Real-Time Mempool Activity (Unconfirmed)

    This endpoint returns the real-time mempool activity across BTC, inscriptions, and runes for a set of addresses, including all incoming/outgoing transfers.

    Unconfirmed Transactions

    Get Bitcoin Transaction

    This endpoint returns confirmation status, block height, and timestamp for a given Bitcoin transaction. Mempool-aware.

    Get Raw Bitcoin Transaction Hex

    This endpoint returns the raw hex for a given Bitcoin transaction. It supports confirmed and unconfirmed transactions.

    Decode Raw Bitcoin Transaction

    This endpoint decodes a raw Bitcoin transaction. Optimized to use the RPC node only for parsing, while transaction hex and I/O data are retrieved from our indexer.

    Ordinal Transaction

    This endpoint returns detailed info on Ordinal assets (BTC, inscriptions, runes) for each input and output of a transaction.

    It is mempool-aware and includes unconfirmed BTC, inscriptions & runes data for mempool transactions

    Ordinal Transaction Outputs

    This endpoint returns detailed info on Ordinal assets (BTC, inscriptions, runes) for each output of a transaction.

    It is mempool-aware and includes unconfirmed BTC, inscriptions & runes data for mempool transactions

    Ordinal Transaction Inputs

    This endpoint returns detailed info on Ordinal assets (BTC, inscriptions, runes) for each input of a transaction.

    It is mempool-aware and includes unconfirmed BTC, inscriptions & runes data for mempool transactions

    Outputs

    Estimate Transaction Fee

    Estimate the approximate fee per kilobyte required for a transaction to confirm in the next blocks, based on the current state of the mempool.

    Mempool Fees

    Retrieve statistics regarding the fee rates of transactions within estimated mempool blocks.

    Send Transaction

    This endpoint can be used to post a signed raw transaction to the Bitcoin network

    Get Current Block

    Returns the latest Bitcoin block with height, hash, timestamp, and more.

    Get Block by Height

    Returns block metadata (hash, timestamp, tx count, etc.) for a specific height.

    Mempool Acceptance Test

    This endpoint lets you run a mempool acceptance test to check if the mempool will accept the serialized hex-encoded raw transaction

    getblockhash

    This RPC Method returns the hash of the tip block in the most-work fully-validated chain.

    Bitcoin JSON-RPC

    This endpoint offers a unified RPC interface for Bitcoin Core node functionality:

    • Blockchain data: getbestblockhash, getblock, getblockchaininfo, getblockcount, getblockfilter, getblockhash, getblockheader

    getblockchaininfo

    This RPC Method returns an object that contains the information regarding blockchain processing in different states.

    getblockcount

    This RPC Method returns the height of the fully-validated chain. The genesis block has a height of 0.

    getblockfilter

    This RPC Method returns the BIP-157 compact block filter and filter header for a given block.

    getblockhash

    This RPC Method returns the hash of the block provided its height.

    getblockheader

    This RPC Method returns the header of the block given it's hash.

    getblockstats

    This RPC Method calculates per block statistics for a given window.

    getchaintips

    This RPC Method returns information about all known chaintips in the block tree, including the main chain as well as orphaned branches.

    getchaintxstats

    This RPC Method calculates data about the total number and rate of transactions in the chain.

    getdifficulty

    This RPC Method returns the proof-of-work difficulty as a multiple of the minimum difficulty.

    getmempoolancestors

    This RPC Method returns all in-mempool ancestors for a transaction in the mempool.

    getmempooldescendants

    This RPC Method returns all in-mempool descendants for a transaction in the mempool.

    getmempoolentry

    This RPC Method returns detailed mempool entry data for a specific transaction.

    getmempoolinfo

    This RPC Method returns mempool statistics such as size, bytes, usage, and limits.

    getrawmempool

    This RPC Method returns all transaction IDs currently in the mempool.

    gettxout

    This RPC Method returns details about an unspent transaction output (UTXO).

    gettxoutproof

    This RPC Method returns a proof that specific transactions are included in a block.

    createrawtransaction

    This RPC Method creates an unsigned raw transaction from inputs and outputs.

    decoderawtransaction

    This RPC Method decodes a serialized raw transaction hex into a JSON object.

    decodescript

    This RPC Method decodes a hex-encoded script into a JSON object.

    getrawtransaction

    This RPC Method returns detailed information about a raw transaction by txid.

    sendrawtransaction

    This RPC Method submits a raw signed transaction to the network.

    testmempoolaccept

    This RPC Method tests whether a raw transaction would be accepted by the mempool.

    createmultisig

    This RPC Method creates a multisig address and redeem script from a set of public keys.

    estimatesmartfee

    This RPC Method estimates the transaction fee per kilobyte needed for confirmation within a target number of blocks.

    validateaddress

    This RPC Method verifies whether a Bitcoin address is valid and provides related info.

    verifymessage

    This RPC Method verifies that a signed message was created with the private key corresponding to a given address.

    Bitcoin Price

    This endpoint can be used to get the latest Bitcoin price

    Register Portfolio Address

    Use this endpoint to register a portfolio address for continuous balance tracking.

    Xverse API will automatically keep its daily balance and activity updated.

    List Registered Portfolio Addresses

    This endpoint returns all the registered portfolio addresses for the current API key.

    getblock

    This RPC Method returns information about the block.

    πŸ”² Runes

    Query Rune balances and detailed information. Integrate Runes into your apps without building infra. Mint and etch Runes, with cost estimates, order management and execution.

    πŸͺ™ BRC-20

    Query BRC-20 balances and detailed information. Integrate BRC-20 into your apps without building infra. Mint and deploy BRC-20, with cost estimates, order management and execution.

    Spark

    Query Spark balances, transactions & activity for Bitcoin & BTKN tokens. Access Flashnet market & trading data.

    Integrate Spark & Flashnet into your apps without building infra.

    πŸ”„ Swap Aggregator

    Seamlessly integrate Bitcoin-asset swaps into your application. Aggregate quotes from multiple AMMs across Bitcoin and L2s, generate and execute swap orders, and facilitate cross-chain swapsβ€”all through a unified interface.

    Bitcoin
    Portfolio API
    Watch Addresses
    Ordinals

    Inscription Service

    Automate Ordinal inscriptions with advanced features. Estimate costs, create orders, and track inscription statuses seamlessly.

    Runes

    Query Rune balances, metadata & trading data.

    Integrate Runes into your apps without building infra.

    Mint and etch Runes, with cost estimates, order management and execution.

    Collections

    Ordinals by Address

    Inscriptions

    Runes by Address

    ,
    getblockstats
    ,
    getchaintips
    ,
    getchaintxstats
    ,
    getdifficulty
  • Mempool data: getmempoolancestors, getmempooldescendants, getmempoolentry, getmempoolinfo, getrawmempool, testmempoolaccept

  • Transactions: getrawtransaction, sendrawtransaction, gettxout, gettxoutproof

  • Raw tx/script utils: createrawtransaction, decoderawtransaction, decodescript

  • Wallet & addresses: createmultisig, validateaddress, verifymessage

  • Fees: estimatesmartfee

  • We recommend switching to [v2] UTXOs for real-time mempool support

    Once a portfolio address is registered, use Get Portfolio Address Historyto query its balances

    You can use Register Portfolio Addressto register a portfolio address.

    Holders by Collection

    This endpoint is commonly used to pass an ordinal collection ID, and get the full list of wallets holding inscriptions in that collection, and the number of items of the collection they hold.

    [v2] Collection Historical Floor Prices

    This endpoint provides the historical floor price for a specific collection and a given time period.

    Collection prices are sourced from multiple ordinals marketplaces.

    Inscriptions

    Inscriptions by Collection

    This endpoint is commonly used to retrieve the list of inscriptions associated with an ordinal collection, together with their info and metadata.

    Inscription by ID

    This endpoint returns the information & metadata of a specific inscription ID.

    Top Collections by Volume

    This endpoint provides the top collections by sales volume for different time periods, along with collections' metadata & market data.

    Inscription Activity

    This endpoint returns the full activity history (transfers, listings, sales) for a specific inscription.

    Inscription Thumbnail

    Returns a generated thumbnail image for the specified inscription ID

    Inscriptions by IDs

    This endpoint returns the information & metadata for multiple inscription IDs in a single request.

    Estimate

    Order

    Execute

    [v1] Rune Balances

    We recommend switching to for real-time mempool support

    [v2] Rune Balances (Mempool-Aware)

    Get Portfolio Address History

    Use this endpoint to retrieve the daily balance history for a registered portfolio address over a specific time period.

    You need to first register a portfolio address with

    Only BTC balances are supported at the moment. More Bitcoin asset balances will follow soon.

    Inscriptions of a Collection

    UTXOs

    Unconfirmed Inscriptions (Mempool)

    Collections

    This endpoint returns the full list of indexed Ordinals collections with their basic information and metadata

    Collection by ID

    This endpoint is used to retrieve the metadata & market data associated with an ordinal collection, based on the ordinal collection ID.

    Rune Activity

    Returns historical activity (transfers, mints, etc.) for a specific Rune held by a given address.

    UTXOs

    Collections

    This endpoint returns all Ordinal collections held by a given wallet address, along with the list of inscriptions owned within each collection.

    Rune by ID

    This endpoint is used to retrieve the metadata & market data associated with a rune, based on the rune ID.

    Search Runes

    Search existing Runes by name, order results by name or by etching block + index.

    Void inscriptions

    Runes by IDs

    This endpoint is used to retrieve the metadata & market data associated with a batch of up to 10 runes, based on the runes' IDs, in a single request.

    [v1] Collection Historical Floor Prices

    This endpoint provides the historical floor price for a specific collection and a given time period.

    Holders by Rune

    This endpoint is commonly used to pass a rune ID, and get the full list of wallets holding the rune, and the amount they hold.

    We recommend switching to to access data from more marketplaces

    [v2] Rune balances
    Register Portfolio Address
    [v2] Collection Historical Floor Prices

    Watch Addresses

    The Xverse API lets you watch blockchain addresses and receive transaction events as they happen.

    This is built for apps that need to react to on-chain activity β€” without polling β€” such as wallets, payment flows, portfolio trackers, and backend reconciliation systems.

    Address watching is currently available for Bitcoin. Support for Spark and Starknet webhooks is coming soon.


    πŸ”” Transaction Webhooks

    Webhooks are how Xverse delivers address activity events to your application.

    Once a webhook subscription is registered for a set of addresses:

    • Xverse monitors the addresses

    • Transaction events are pushed to your backend via HTTP POST

    • No custom indexing or node infrastructure is required

    Network
    Status

    You can subscribe to:

    • Incoming transactions

    • Outgoing transactions


    Start watching a set of addresses.

    • Registers the address for transaction monitoring

    • Enables webhook notifications for relevant transactions involving the addresses


    When a transaction involving any of the watched addresses is confirmed, Xverse sends a POST request to your webhook URL:

    Payloads for Spark and Starknet will follow a similar structure.


    Returns all active address-watching webhook subscriptions for your API key.

    Use this to

    • Inspect active address watchers

    • Debug webhook behavior

    • Manage multiple monitored sets of addresses


    Stop watching a set of addresses by deleting the webhook subscription.

    Use this to

    • Stop receiving notifications for an address

    • Clean up unused subscriptions

    Starknet

    ⏳ Coming soon

    Stacks

    ⏳ Coming soon

    Bitcoin

    βœ… Live

    Runes, Ordinals and BRC-20

    βœ… Live

    Spark

    ⏳ Coming soon

    [
      {
        "status": "confirmed",
        "address": "bc1qjpnsvwgsxtf005x2qd28l3zlmexa3095fa6g4e",
        "totalSatsIn": "0",
        "totalSatsOut": "1421459",
        "txid": "cc46ce35c459cd91585ec3848e0ec58b10a24770da5cdd264da41da7b3f07649",
        "blockHeight": 928800,
        "blockTime": "2025-12-21T07:42:08.000+02:00"
      }
    ]

    Supported networks

    πŸ‘€ Register a Webhook Subscription

    Currently supports Bitcoin addresses only. Spark & Starknet will be added soon and follow the same model.

    πŸ“¬ Webhook Payload (Bitcoin)

    πŸ“„ List Webhook Subscriptions

    ❌ Delete a Subscription

    ⚑ MPP Lightning Payments

    The Xverse API supports the Machine Payments Protocol (MPP) β€” a pay-per-request authentication method over the Lightning Network. Instead of provisioning an API key, your client can pay a small Lightning invoice for each request.

    This is built for AI agents and autonomous clients that need to access the API without human-managed credentials. Agents using the handle MPP payments transparently β€” the agent calls an endpoint, the wallet pays the Lightning invoice in the background, and the response comes back. No checkout, no human approval, no API key.

    MPP is an open standard defined at . Any Lightning-compatible wallet or SDK can use it.

    MPP uses an HTTP 402 challenge-response flow:

    Send a request to any endpoint without an x-api-key or Authorization header. The server responds with

    HTTP 402 Payment Required
    and a Lightning invoice challenge in the
    WWW-Authenticate
    header:

    The WWW-Authenticate header contains everything needed to pay the invoice, including the Lightning payment details and the amount in satoshis.

    Extract the Lightning invoice from the 402 challenge and pay it using any Lightning-compatible wallet or SDK. Upon successful payment, you receive a preimage β€” the cryptographic proof of payment.

    Retry the same request with the payment credential in the Authorization header:

    The credential contains the preimage and is bound to the route it was issued for. On success, the server returns the API response along with a Payment-Receipt header:

    All API endpoints are priced at 1 satoshi per request.

    Every endpoint supports two authentication methods. You can use either one:

    Method
    Header
    Description

    API Key

    x-api-key: <your-key>

    Traditional API key with rate limiting

    MPP Payment

    Authorization: Payment <credential>

    Pay-per-request via Lightning, no rate limiting

    If both headers are present, MPP is checked first. If MPP verification fails but an API key is present, the request falls back to API key authentication.

    MPP-authenticated requests bypass rate limiting β€” you pay per request instead.

    Payment credentials are bound to the specific endpoint they were issued for. A credential obtained for /v1/bitcoin/price cannot be reused on /v1/runes. Attempting to use a credential on a different route returns HTTP 403 Forbidden:

    Status Code
    Meaning

    402 Payment Required

    No payment credential provided. Response includes a Lightning invoice challenge in the WWW-Authenticate header.

    403 Forbidden

    Payment credential is valid but was issued for a different route.

    500 Payment service unavailable

    The payment service encountered an error. Retry the request.

    MPP is designed for autonomous AI agent workflows. Agents can detect 402 challenges, pay Lightning invoices, and retry with credentials β€” enabling fully autonomous access to Bitcoin data and services.

    The Xverse Agent Wallet is purpose-built for AI agents that need to interact with Bitcoin. An AI agent equipped with Xverse Agent Wallet can autonomously call any MPP-enabled endpoint and handle the Lightning payment without human intervention.

    The agent wallet manages:

    • Lightning payments for MPP 402 challenges

    • Key management and credential handling

    • Automatic retry with payment credentials

    This is the simplest way to give your AI agent full access to the Xverse API via MPP. From the agent's CLI:

    See the for the full agent workflow.

    You can also integrate MPP using any Lightning-compatible wallet or SDK. Libraries like mppx provide client SDKs that handle the 402 challenge-response flow automatically, and any Spark-compatible wallet can be used for Lightning payments.

    A complete example using curl:

    1. Request without credentials (get the 402 challenge):

    2. Parse the WWW-Authenticate header, extract the Lightning invoice, and pay it using your wallet.

    3. Retry with the payment credential:

    The response includes a Payment-Receipt header confirming the payment was processed.

    Every endpoint in the Xverse API supports MPP Lightning payments β€” Bitcoin, Blocks, BRC-20, Inscriptions, Ordinals, Runes, Spark, Swaps, Subscriptions, Portfolio, and Bitcoin RPC (v1 and v2).

    Browse the live catalog from the Agent Wallet CLI:

    Or see the full module reference:

    • Bitcoin API

    • Ordinals API

    • Runes API

    • BRC-20 API

    πŸ” How it works

    Step 1 β€” Request without credentials

    Xverse Agent Wallet
    mpp.dev
    GET /v1/bitcoin/price HTTP/1.1
    Host: api.secretkeylabs.io
    HTTP/1.1 402 Payment Required
    WWW-Authenticate: Payment id="<challenge-id>", realm="https://api.secretkeylabs.io", method="lightning", amount="1", ...
    Cache-Control: no-store
    Content-Type: application/problem+json
    
    {
      "type": "https://paymentauth.org/problems/payment-required",
      "title": "Payment Required",
      "status": 402
    }
    GET /v1/bitcoin/price HTTP/1.1
    Host: api.secretkeylabs.io
    Authorization: Payment <base64url-encoded-credential>
    HTTP/1.1 200 OK
    Payment-Receipt: <base64url-encoded-receipt>
    Content-Type: application/json
    
    { ... }
    {
      "type": "https://paymentauth.org/problems/invalid-credential",
      "title": "Forbidden",
      "status": 403,
      "detail": "Credential was issued for /v1/bitcoin/price, not /v1/runes"
    }
    # Preview cost (dry run)
    xverse-wallet pay request https://api.secretkeylabs.io/v1/bitcoin/price --json
    
    # Execute the paid request
    xverse-wallet pay request https://api.secretkeylabs.io/v1/bitcoin/price --yes --json
    
    # Discover MPP-enabled endpoints
    xverse-wallet pay api --json
    curl -i https://api.secretkeylabs.io/v1/bitcoin/price
    curl -H "Authorization: Payment <base64url-credential>" \
      https://api.secretkeylabs.io/v1/bitcoin/price
    xverse-wallet pay api --json

    Step 2 β€” Pay the Lightning invoice

    Step 3 β€” Retry with the payment credential

    πŸ’° Pricing

    πŸ” Authentication methods

    πŸ›£οΈ Route binding

    ⚠️ Error responses

    πŸ€– Built for AI agents

    Xverse Agent Wallet

    Other integrations

    πŸ“š Example: full flow

    🟒 Available endpoints

    Spark API
    Portfolio API
    Swap Aggregator

    MCP Server

    The Xverse MCP server provides a standardized interface that allows any compatible AI model or agent to access Bitcoin blockchain data through the Xverse API β€” including Bitcoin transactions, Ordinals, Runes, BRC-20, Spark, and swap quotes.

    Connect to the MCP server natively in Claude, Cursor, and other clients, or use the mcp-remote module for backwards compatibility with clients that do not support remote MCP.

    The Xverse MCP server is centrally hosted, uses Streamable HTTP transport, and authenticates with your existing Xverse API key. It exposes 54 read-only tools across Bitcoin, Ordinals, Runes, BRC-20, Spark, and Swaps β€” with more functionality on the way.


    Setup Instructions

    General

    The MCP server supports Streamable HTTP transport and authenticates via your Xverse API key passed as a Bearer token:

    https://mcp.secretkeylabs.io/mcp

    Authentication: Authorization: Bearer <your-api-key>

    You can get an API key from the Get Started page.


    Then run /mcp once you've opened a Claude Code session to verify the connection.


    CTRL/CMD + , to open Cursor settings. Navigate to the MCP tools page and add a new server with the following configuration:


    CTRL/CMD + P and search for MCP: Add Server. Select Command (stdio) and enter:

    Enter the name Xverse and hit enter. Activate the server using MCP: List Servers, selecting Xverse, and selecting Start Server.

    Alternatively, add to your VS Code MCP settings file:


    Run the following command in Terminal:

    If this is your first MCP in Codex, enable the rmcp feature first:


    CTRL/CMD + , to open Windsurf settings. Scroll to Cascade β†’ MCP servers, select Add Server β†’ Add custom server, and add:


    CMD + , to open Zed settings. Add the following:


    Many tools now support MCP servers. Configure them with the following settings:

    Setting
    Value

    The MCP server exposes 54 read-only tools organized by domain. All tools correspond to endpoints in the Xverse API.

    Tool
    Description
    Tool
    Description
    Tool
    Description
    Tool
    Description
    Tool
    Description
    Tool
    Description

    The MCP server uses your Xverse API key as a Bearer token. Pass it in the Authorization header on connection. The same API key you use for REST API calls works with the MCP server β€” no separate credentials needed.

    Yes, at the https://mcp.secretkeylabs.io/mcp endpoint.

    No. The MCP server is currently read-only. It provides data access and swap quotes but does not execute transactions, mint tokens, or modify any on-chain state. Write operations may be added in the future.

    The same rate limits from your Xverse API plan apply. If you hit a rate limit, the MCP server will return an error with Retry-After guidance so the AI agent can wait and retry automatically.

    1. Verify your API key is valid and correctly formatted (UUID format: 8-4-4-4-12 hex characters).

    2. If using mcp-remote, make sure you have a recent version of Node.js installed.

    3. Try clearing cached auth info: rm -rf ~/.mcp-auth and reconnect.

    Any client that supports the can connect. This includes Claude (Code, Desktop, and claude.ai), Cursor, VS Code, Codex, Windsurf, Zed, and many others. Clients that support Streamable HTTP can connect directly; older clients can use the mcp-remote bridge.

    bitcoin_get_transaction_hex

    Raw transaction hex

    bitcoin_get_address_balance

    Confirmed and unconfirmed balance for an address

    bitcoin_get_address_utxos

    Mempool-aware UTXOs with inscription filtering

    bitcoin_get_address_summary

    Address summary with recent transaction IDs

    bitcoin_get_address_unconfirmed_txs

    Pending mempool transactions for an address

    bitcoin_get_price

    Current BTC price

    ordinals_get_inscription

    Single inscription details

    ordinals_get_inscription_activity

    Inscription transfer history

    ordinals_batch_get_inscriptions

    Batch inscription lookup (max 25)

    ordinals_get_transaction

    Inscription-enriched transaction details

    ordinals_get_transaction_inputs

    Inscription-enriched transaction inputs

    ordinals_get_transaction_outputs

    Inscription-enriched transaction outputs

    ordinals_batch_get_outputs

    Batch output details (max 20)

    ordinals_list_collections

    Browse ordinal collections

    ordinals_get_collection

    Collection metadata and market info

    ordinals_get_collection_holders

    Collection holder list

    ordinals_get_collection_inscriptions

    Inscriptions in a collection

    ordinals_get_collection_floor_prices

    Historical floor price data

    ordinals_top_collections_by_volume

    Top collections ranked by trading volume

    runes_get_info

    Rune details β€” supply, symbol, divisibility, market data

    runes_get_holders

    Top holders for a rune

    runes_get_activity

    Recent transfer and mint activity

    runes_batch_get_info

    Batch rune info (max 10)

    runes_top_by_volume

    Top runes ranked by trading volume

    runes_top_gainers_losers

    Top gainers and losers by price change

    runes_get_floor_prices

    Historical floor price data

    runes_decode_runestone

    Decode runestone data from raw transaction hex

    brc20_get_ticker_info

    Token details β€” supply, holders, deploy info

    brc20_batch_get_tickers

    Batch BRC-20 token info

    spark_get_token_details

    Token details or search by name/ticker

    spark_get_address_balances

    All BTKN token balances for an address

    spark_get_address_transactions

    Address transaction history

    spark_get_address_summary

    Address summary

    spark_get_transaction

    Transaction details

    spark_get_latest_transactions

    Latest network transactions

    spark_get_token_rankings

    Top tokens by volume and TVL

    spark_batch_get_token_metadata

    Batch token metadata (max 100)

    Command

    npx

    Arguments

    -y mcp-remote https://mcp.secretkeylabs.io/mcp --header "Authorization: Bearer <your-api-key>"

    Environment

    None

    bitcoin_get_fee_estimates

    Current mempool fee estimates for next blocks

    bitcoin_get_mempool_stats

    Projected mempool block statistics

    bitcoin_get_transaction

    Transaction details including inputs, outputs, and confirmations

    ordinals_get_address_utxos

    UTXOs containing inscriptions or rare sats

    ordinals_get_address_inscriptions

    Inscriptions owned by an address

    ordinals_get_address_collections

    Collections held by an address

    runes_get_address_balances

    All Runes balances for an address

    runes_get_address_activity

    Rune activity for a specific address and rune

    runes_get_address_utxos

    Mempool-aware Rune UTXOs

    brc20_get_address_balances

    All BRC-20 balances for an address

    brc20_get_address_ticker_balance

    Balance for a specific BRC-20 token

    brc20_get_address_unspent_transfers

    Unspent BRC-20 transfer inscriptions

    spark_get_token_info

    Token info with pool metadata and pricing

    spark_get_token_holders

    Token holder list

    spark_get_token_transactions

    Token transaction history

    swaps_get_destination_tokens

    Available destination tokens for a swap

    swaps_get_quotes

    Aggregated swap quotes from multiple AMMs (read-only)

    Claude Code

    Cursor

    Visual Studio Code

    Codex

    Windsurf

    Zed

    Others

    Available Tools

    🟠 Bitcoin

    πŸ–ΌοΈ Ordinals & Collections

    πŸ”² Runes

    πŸͺ™ BRC-20

    ⚑ Spark

    πŸ”„ Swaps

    FAQ

    What authentication does the MCP server use?

    Does the MCP support Streamable HTTP?

    Can the MCP server execute transactions?

    What rate limits apply?

    I'm getting connection errors β€” what should I do?

    Which AI clients are supported?

    Model Context Protocol
    claude mcp add --transport http xverse https://mcp.secretkeylabs.io/mcp \
      --header "Authorization: Bearer <your-api-key>"
    {
      "mcpServers": {
        "xverse": {
          "command": "npx",
          "args": [
            "-y", "mcp-remote", "https://mcp.secretkeylabs.io/mcp",
            "--header", "Authorization: Bearer <your-api-key>"
          ]
        }
      }
    }
    npx mcp-remote https://mcp.secretkeylabs.io/mcp --header "Authorization: Bearer <your-api-key>"
    {
      "mcpServers": {
        "xverse": {
          "command": "npx",
          "args": [
            "-y", "mcp-remote", "https://mcp.secretkeylabs.io/mcp",
            "--header", "Authorization: Bearer <your-api-key>"
          ]
        }
      }
    }
    codex mcp add xverse --url https://mcp.secretkeylabs.io/mcp
    # ~/.codex/config.toml
    [features]
    experimental_use_rmcp_client = true
    {
      "mcpServers": {
        "xverse": {
          "command": "npx",
          "args": [
            "-y", "mcp-remote", "https://mcp.secretkeylabs.io/mcp",
            "--header", "Authorization: Bearer <your-api-key>"
          ]
        }
      }
    }
    {
      "context_servers": {
        "xverse": {
          "source": "custom",
          "command": "npx",
          "args": [
            "-y", "mcp-remote", "https://mcp.secretkeylabs.io/mcp",
            "--header", "Authorization: Bearer <your-api-key>"
          ],
          "env": {}
        }
      }
    }
    Machine Payments page in the Agent Wallet docs
    get

    Get both confirmed and unconfirmed BTC balances.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Responses
    200

    Bitcoin balance for an address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/address/{address}/balance
    get

    Get address summary including paginated transaction IDs and balance information. This endpoint is mempool-aware and includes both confirmed and unconfirmed data. Response fields:

    • txids - Paginated list of transaction IDs for this address, ordered by block height descending. When there is mempool activity, unconfirmed transactions appear first.

    • confirmedBalance - Current confirmed balance in satoshis, ignoring mempool activity.

    • unconfirmedBalance - Net unconfirmed balance change (received - sent) in satoshis. It can be negative as it only considers mempool, eg. when spending more than receiving.

    • offset - Current pagination offset.

    • limit - Current pagination limit.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Address summary with txids and balance

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/address/{address}/summary
    get

    Retrieve confirmed UTXOs ignoring mempool completely. This can be useful for applications that need to rely on confirmed UTXOs only, eg constructing RBF txs as well. To query mempool aware endpoint use /v2/bitcoin/address/:address/utxo. Iterate using offset if hasMore is true.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 5000OptionalDefault: 60
    Responses
    200

    Paginated Utxo list

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/address/{address}/utxo
    get

    Mempool-aware: Retrieve UTXOs. This endpoint considers both confirmed and unconfirmed utxos. When a confirmed UTXO is spent in the mempool, it will not be returned here as its no longer a utxo. To query confirmed-only endpoint use /v1/bitcoin/address/:address/utxo. Iterate using offset if hasMore is true. UTXO filtering: excludeNonVoidProtocolInscriptionUtxos - When true, excludes UTXOs that hold valuable inscriptions, but can include void protocol inscriptions (e.g. BRC-20, TAP spent inscriptions). excludeAllInscriptionUtxos - When true, excludes all inscription-bearing UTXOs, including both valuable inscriptions(non-void protocol inscriptions) and void protocol inscriptions. Implies excludeNonVoidProtocolInscriptionUtxos=true.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 5000OptionalDefault: 60
    excludeNonVoidProtocolInscriptionUtxosbooleanOptionalDefault: false
    excludeAllInscriptionUtxosbooleanOptionalDefault: false
    Responses
    200

    Paginated Utxo list

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v2/bitcoin/address/{address}/utxo
    get

    Retrieve efficient aggregated confirmed history (Bitcoin, Runes, Inscriptions) for multiple addresses. Up to 3 addresses(comma separated) can be queried via addresses query param.

    Authorizations
    x-api-keystringRequired
    Query parameters
    addressesstring Β· BitcoinAddressList Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch,bc1px3kttdtg479vqfu0s2lhxvyuz2snhl8jct3f84k5heerl750n28scr9qt6
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/global/ordinals/multi-address/activity
    get

    Retrieve efficient aggregated unconfirmed activity (Bitcoin, Runes, Inscriptions) for multiple addresses. Up to 3 addresses(comma separated) can be queried via addresses query param.

    Authorizations
    x-api-keystringRequired
    Query parameters
    addressesstring Β· BitcoinAddressList Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch,bc1px3kttdtg479vqfu0s2lhxvyuz2snhl8jct3f84k5heerl750n28scr9qt6
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/global/ordinals/multi-address/activity/mempool
    get

    Fetch unconfirmed transactions for a given address.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    limitnumber Β· min: 1 Β· max: 10000OptionalDefault: 25
    Responses
    200

    List of unconfirmed txs

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/address/{address}/txs/unconfirmed
    get

    Retrieve stats for the transaction. Works for confirmed and unconfirmed transactions.

    Authorizations
    x-api-keystringRequired
    Path parameters
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Query parameters
    offsetnumberOptional
    limitnumber Β· min: 25 Β· max: 25Optional
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/tx/{txid}
    get

    Retrieve transaction hex. Supports confirmed and unconfirmed transactions.

    Authorizations
    x-api-keystringRequired
    Path parameters
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/tx/{txid}/hex
    post

    Retrieve raw transaction details by txid.

    Authorizations
    x-api-keystringRequired
    Body
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Responses
    200

    Default Response

    post/v1/rpc/bitcoin/rawtx
    200

    Default Response

    No content

    get

    Retrieve historic ordinal info (inputs and outputs) for a specific tx. It is mempool aware. isOrdinalsIndexed determines if ordinals data is available

    Authorizations
    x-api-keystringRequired
    Path parameters
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/tx/{txid}
    get

    Retrieve historic ordinal output info for a specific tx. It is mempool aware. isOrdinalsIndexed determines if ordinals data is available

    Authorizations
    x-api-keystringRequired
    Path parameters
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Query parameters
    offsetnumberOptional
    limitnumber Β· min: 25 Β· max: 25Optional
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/tx/{txid}/outputs
    get

    Retrieve historic input output info for a specific tx. It is mempool aware. isOrdinalsIndexed determines if ordinals data is available

    Authorizations
    x-api-keystringRequired
    Path parameters
    txidstring Β· regexRequired

    Transaction id

    Example: 6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674ePattern: ^[a-fA-F0-9]{64}$
    Query parameters
    offsetnumberOptional
    limitnumber Β· min: 25 Β· max: 25Optional
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/tx/{txid}/inputs
    post

    Retrieve Ordinal details for a specific list of outputs (txid:vout).

    Authorizations
    x-api-keystringRequired
    Body
    outputsstring Β· regex[] Β· min: 1 Β· max: 20RequiredExample: ["e79134080a83fe3e0e06ed6990c5a9b63b362313341745707a2bff7d788a1375:0"]
    Responses
    200

    List of ordinal detail outputs

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    post/v1/outputs
    get

    Retrieve estimated fee rates to use for transactions to be confirmed within a specific range of blocks.

    Authorizations
    x-api-keystringRequired
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/mempool/fee-estimates
    get

    Retrieve stats for the projected blocks from the transactions in the mempool.

    Authorizations
    x-api-keystringRequired
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/mempool/stats
    post

    Post transaction.

    Authorizations
    x-api-keystringRequired
    Body
    txstringRequired

    Raw transaction hex to be posted to the Bitcoin network.

    Responses
    200

    Default Response

    application/json
    400

    Default Response

    application/json
    messagestringRequired
    codenumberRequired
    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    post/v1/rpc/bitcoin/tx
    get

    Get information about the current block

    Authorizations
    x-api-keystringRequired
    Responses
    200

    Block information

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/block/current
    get

    Get information about a specific block by height

    Authorizations
    x-api-keystringRequired
    Path parameters
    heightnumberRequired
    Responses
    200

    Block information

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/block/height/{height}
    post

    Forward to RPC using testmempoolaccept method.

    Authorizations
    x-api-keystringRequired
    Body
    txListstring[]Required

    Raw transaction hex to be checked with testmempoolaccept method.

    maxFeeRatenumberOptionalDefault: 0.1Example: 0.1
    Responses
    200

    Default Response

    application/json
    400

    Default Response

    application/json
    messagestringRequired
    codenumberRequired
    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    post/v1/rpc/bitcoin/testmempoolaccept
    post

    JSON RPC - getblockhash

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockhash
    200

    Default Response

    post

    JSON RPC - getblockchaininfo

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockchaininfo
    200

    Default Response

    post

    JSON RPC - getblockcount

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockcount
    200

    Default Response

    post

    JSON RPC - getblockfilter

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockfilter
    200

    Default Response

    post

    JSON RPC - getblockhash

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockhash
    200

    Default Response

    post

    JSON RPC - getblockheader

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockheader
    200

    Default Response

    post

    JSON RPC - getblockstats

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblockstats
    200

    Default Response

    post

    JSON RPC - getchaintips

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getchaintips
    200

    Default Response

    post

    JSON RPC - getchaintxstats

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getchaintxstats
    200

    Default Response

    post

    JSON RPC - getdifficulty

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getdifficulty
    200

    Default Response

    post

    JSON RPC - getmempoolancestors

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getmempoolancestors
    200

    Default Response

    post

    JSON RPC - getmempooldescendants

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getmempooldescendants
    200

    Default Response

    post

    JSON RPC - getmempoolentry

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getmempoolentry
    200

    Default Response

    post

    JSON RPC - getmempoolinfo

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getmempoolinfo
    200

    Default Response

    post

    JSON RPC - getrawmempool

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getrawmempool
    200

    Default Response

    post

    JSON RPC - gettxout

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/gettxout
    200

    Default Response

    post

    JSON RPC - gettxoutproof

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/gettxoutproof
    200

    Default Response

    post

    JSON RPC - createrawtransaction

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/createrawtransaction
    200

    Default Response

    post

    JSON RPC - decoderawtransaction

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/decoderawtransaction
    200

    Default Response

    post

    JSON RPC - decodescript

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/decodescript
    200

    Default Response

    post

    JSON RPC - getrawtransaction

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getrawtransaction
    200

    Default Response

    post

    JSON RPC - getrawtransaction

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getrawtransaction
    200

    Default Response

    post

    JSON RPC - getrawtransaction

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getrawtransaction
    200

    Default Response

    post

    JSON RPC - createmultisig

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/createmultisig
    200

    Default Response

    post

    JSON RPC - createmultisig

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/createmultisig
    200

    Default Response

    post

    JSON RPC - createmultisig

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/createmultisig
    200

    Default Response

    post

    JSON RPC - createmultisig

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/createmultisig
    200

    Default Response

    get

    Fetch latest bitcoin price.

    Authorizations
    x-api-keystringRequired
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/bitcoin/price
    post

    Register an address to the portfolio for balance tracking.

    Authorizations
    x-api-keystringRequired
    Body
    assetTypestringRequired
    addressesstring[]Required
    Responses
    200

    Default Response

    post/v1/portfolio/register
    200

    Default Response

    No content

    get

    Get list of addresses from a portfolio.

    Authorizations
    x-api-keystringRequired
    Query parameters
    assetTypestringRequired
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/portfolio
    post

    JSON RPC - getblock

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin/getblock
    200

    Default Response

    post

    JSON RPC

    Authorizations
    x-api-keystringRequired
    Body
    methodstring Β· enumRequiredExample: getrawtransactionPossible values:
    itemsanyOptional
    Responses
    200

    Default Response

    application/json
    post/v2/rpc/bitcoin
    200

    Default Response

    get

    Get unique holders of an Ordinals collection.

    Authorizations
    x-api-keystringRequired
    Path parameters
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· max: 25OptionalDefault: 10
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/collections/{collectionId}/holders
    get

    Get historical floor prices for an Ordinals collection.

    Authorizations
    x-api-keystringRequired
    Path parameters
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Query parameters
    fromTimestampstringRequired

    ISO timestamp - no older than 1 year ago (e.g. 2024-08-29T03:09:35.236Z)

    toTimestampstringOptional

    ISO timestamp - up until now / not in the future

    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v2/ordinals/collections/{collectionId}/historical-floor-prices
    get

    List all confirmed inscriptions an address owns. Note: The Api response includes limit & offset for future pagination extension, but at the moment query parameters are ignored and the response is always the full list. So, limit equals the total items number, be sure to handle pagination as the limit can change once pagination is implemented.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Inscriptions owned by the address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/inscriptions
    get

    Get inscriptions for an Ordinals collection.

    Authorizations
    x-api-keystringRequired
    Path parameters
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· max: 25OptionalDefault: 10
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/collections/{collectionId}/inscriptions
    get

    Get inscription info with collection & pricing. Collection and price fields will be undefined if not available.

    Authorizations
    x-api-keystringRequired
    Path parameters
    inscriptionIdstringRequiredExample: 5f3dafcdd142358b332e0939d37174b76472735df8df29325901d2c7d18a152ci2
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/inscriptions/{inscriptionId}
    get

    Get top collections by volume.

    Authorizations
    x-api-keystringRequired
    Query parameters
    timePeriodstring Β· enumOptional
    • 24h - trailing 24 hours' volume, ending at the start of the prior hour (default)
    • trailing7d - trailing 7 days' volume, ending at the start of the prior hour
    • trailing30d - trailing 30 days' volume, ending at the start of the prior hour
    • 1d - prior day's volume, ending at midnight GMT
    • 7d - prior seven days' volume, ending at midnight GMT
    • 30d - prior 30 days' volume, ending at midnight GMT
    Default: 24hPossible values:
    offsetnumberOptionalDefault: 0
    limitnumber Β· max: 100OptionalDefault: 10
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/stats/collections/top-by-volume
    get

    Get activity information for an inscription.

    Authorizations
    x-api-keystringRequired
    Path parameters
    inscriptionIdstringRequiredExample: 5f3dafcdd142358b332e0939d37174b76472735df8df29325901d2c7d18a152ci2
    Query parameters
    offsetnumberOptional
    limitnumber Β· min: 25 Β· max: 25Optional
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/inscriptions/{inscriptionId}/activity
    get

    Get inscription rendered thumbnail.

    Authorizations
    x-api-keystringRequired
    Path parameters
    inscriptionIdstringRequiredExample: 5f3dafcdd142358b332e0939d37174b76472735df8df29325901d2c7d18a152ci2
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/inscriptions/{inscriptionId}/thumbnail
    get

    Get inscription info with collection & pricing for a batch of Inscriptions by IDs. Collection and price fields will be undefined if not available. The inscriptionIds query parameter should be a comma-separated list of Inscription IDs.

    Authorizations
    x-api-keystringRequired
    Query parameters
    inscriptionIdsstring Β· min: 1RequiredExample: 5f3dafcdd142358b332e0939d37174b76472735df8df29325901d2c7d18a152ci2
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/inscriptions/batch
    post

    Coming soon...

    Estimate total cost for a new inscription order.

    Authorizations
    x-api-keystringRequired
    Body
    objectOptional
    Responses
    200

    Default Response

    application/json
    post/v1/inscriptions/estimate
    200

    Default Response

    post

    Coming soon...

    Create an inscription order (returns a funding address to pay).

    Authorizations
    x-api-keystringRequired
    Body
    objectOptional
    Responses
    200

    Default Response

    application/json
    post/v1/inscriptions/order
    200

    Default Response

    get

    Coming soon...

    Retrieve status for a given inscription order.

    Authorizations
    x-api-keystringRequired
    Path parameters
    orderIdstringRequired
    Responses
    200

    Default Response

    application/json
    get/v1/inscriptions/order/{orderId}
    200

    Default Response

    post

    Coming soon...

    Once funded, finalize (execute) the inscription order.

    Authorizations
    x-api-keystringRequired
    Path parameters
    orderIdstringRequired
    Body
    objectOptional
    Responses
    200

    Default Response

    application/json
    post/v1/inscriptions/order/{orderId}/execute
    get

    Retrieve confirmed Runes balances held by a specific address. Note: The Api response includes limit & offset for future pagination extension, but at the moment query parameters are ignored and the response is always the full list. So, limit equals the total items number, be sure to handle pagination as the limit can change once pagination is implemented.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    runeIdstringOptional
    Responses
    200

    Rune balances for all utxos belonging to the address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/runes
    get

    Get confirmed and unconfirmed runes balance. balance fields explained:

    • confirmedBalance is the rune balance ignoring unconfirmed transactions in mempool.

    • availableBalance is the confirmed balance minus amounts used by any outgoing unconfirmed transaction in mempool.

    • projectedBalance is the final balance if all unconfirmed mempool transactions are confirmed.

    • pendingBalance is a breakdown of the unconfirmed transactions amounts. They represent aggregate amounts for the whole mempool activity, so as more transactions are chained together the amounts will increase.

      • incomingAmount is the sum of all incoming unconfirmed amounts.

      • outgoingAmount

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    runeIdstringOptional
    includePricingbooleanOptional
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v2/runes/address/{address}/balance
    get

    Get the daily balance history for an address from the portfolio.

    Authorizations
    x-api-keystringRequired
    Query parameters
    addressstringRequired
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    startDatestringRequired

    from date, inclusive - (e.g. 2024-08-29)

    endDatestringRequired

    to date, exclusive - (e.g. 2024-09-01)

    assetTypestring Β· enumOptionalPossible values:
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/portfolio/history
    get

    Get inscriptions owned by an address in a specific collection. It includes current inscription location

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Inscriptions for a specific collection owned by an address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/inscriptions/collection/{collectionId}
    get

    Get detailed Ordinals info (inscriptions, rare sats, Runes) for all confirmed UTXOs.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Ordinal information for all utxos belonging to the address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/utxo
    get

    List all unconfirmed inscriptions an address owns.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Inscriptions owned by the address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/mempool/ordinals/address/{address}/inscriptions
    get

    Get list of ordinals collections.

    Authorizations
    x-api-keystringRequired
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/collections
    get

    Get metadata and market info for an Ordinals collection.

    Authorizations
    x-api-keystringRequired
    Path parameters
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/collections/{collectionId}
    get

    Get rune activity for a specific address and rune

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstringRequiredExample: bc1px3kttdtg479vqfu0s2lhxvyuz2snhl8jct3f84k5heerl750n28scr9qt6
    identifierstringRequiredExample: {"value":"UNCOMMONGOODS"}
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    fromBlockHeightnumberOptional
    toBlockHeightnumberOptional
    Responses
    200

    Rune activity for a specific rune or address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/runes/{identifier}/activity
    get

    Get Rune UTXOs for a specific address with pagination support.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    runeIdstringOptional
    includeUnconfirmedbooleanOptionalDefault: false
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/runes/address/{address}/utxo
    get

    Fetch inscriptions by collection for assets in a specific address.

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 60OptionalDefault: 60
    Responses
    200

    Collection info for inscriptions owned by the address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/collections
    get

    Get price info for a specific Rune by ID.

    Authorizations
    x-api-keystringRequired
    Path parameters
    identifierstringRequired
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/runes/{identifier}
    get

    Search for runes by name.

    Authorizations
    x-api-keystringRequired
    Query parameters
    startingWithstring Β· min: 1Required

    Search for runes starting with this string

    Example: UNCOMMON
    sortBystring Β· enumOptional
    • runeName - sort by rune name ascending
    • etch - sort by etching order block_height, rune_etch_index ascending
    Default: runeNamePossible values:
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 1 Β· max: 10OptionalDefault: 5
    Responses
    200

    Search results for runes

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/runes
    get

    Get BRC20 & TAP void inscriptions(already spent/used) owned by an address in a specific collection. A void inscription is a BRC-20 or TAP inscription that is no longer protocol valid (transfer inscriptions become invalid after first transfer, other inscriptions like mint become invalid right after inscribe).

    Authorizations
    x-api-keystringRequired
    Path parameters
    addressstring Β· BitcoinAddress Β· min: 10RequiredDefault: bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch
    collectionIdstringRequiredExample: bitminer
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Inscriptions for a specific collection owned by an address

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/address/{address}/void-protocol-inscriptions/collection/{collectionId}
    get

    Get price info for a list of runes. The runeIds query parameter should be a comma-separated list of Rune IDs.

    Authorizations
    x-api-keystringRequired
    Query parameters
    runeIdsstring Β· min: 1RequiredExample: UNCOMMONGOODS,840000:3
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/runes/batch-info
    get

    Get historical floor prices for an Ordinals collection.

    Authorizations
    x-api-keystringRequired
    Path parameters
    collectionIdstringRequiredExample: {"value":"wzrds"}
    Query parameters
    fromTimestampstringRequired

    ISO timestamp - no older than 1 year ago (e.g. 2024-08-29T03:09:35.236Z)

    toTimestampstringOptional

    ISO timestamp - up until now / not in the future

    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/ordinals/collections/{collectionId}/historical-floor-prices
    get

    Get holders for a specific Rune by identifier.

    Authorizations
    x-api-keystringRequired
    Path parameters
    identifierstringRequired
    Query parameters
    offsetnumberOptional
    limitnumber Β· min: 1 Β· max: 25Optional
    lastModifiedBlockGtenumberOptionalDefault: 0
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/runes/{identifier}/holders
    post

    Register a subscription for events.

    Authorizations
    x-api-keystringRequired
    Body
    urlstringRequired
    addressesstring[]Required
    Responses
    200

    Default Response

    post/v1/subscription
    200

    Default Response

    No content

    get

    Get registered subscriptions.

    Authorizations
    x-api-keystringRequired
    Query parameters
    offsetnumberOptionalDefault: 0
    limitnumber Β· min: 25 Β· max: 25OptionalDefault: 25
    Responses
    200

    Default Response

    application/json
    400

    Invalid input

    application/json
    stringOptional

    Invalid input

    401

    Unauthorized

    application/json
    404

    Not found

    application/json
    429

    Rate limit exceeded

    application/json
    500

    Internal server error

    application/json
    stringOptional

    Internal server error

    get/v1/subscription
    delete

    Delete subscriptions.

    Authorizations
    x-api-keystringRequired
    Path parameters
    subscriptionIdnumberRequired
    Responses
    200

    Default Response

    delete/v1/subscription/{subscriptionId}
    200

    Default Response

    No content

    Default Response

    200

    Default Response

    Inscriptions for a specific collection owned by an address

    Default Response

    is the sum of all outgoing unconfirmed amounts.
  • netAmount is incoming - outgoing. The netAmount can be negative, when sending more than receiving. It should always match what is expected to be added to the confirmed balance when all unconfirmed transactions are confirmed, which is computed as projectedBalance for convenience.

  • GET /v1/bitcoin/address/{address}/balance HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "address": "text",
      "confirmed": {
        "fundedTxoCount": 1,
        "fundedTxoSum": 1,
        "spentTxoCount": 1,
        "spentTxoSum": 1,
        "txCount": 1
      },
      "unconfirmed": {
        "fundedTxoCount": 1,
        "fundedTxoSum": 1,
        "spentTxoCount": 1,
        "spentTxoSum": 1,
        "txCount": 1
      }
    }
    {
      "hasMore": true,
      "items": [
        {
          "txid": "text",
          "vout": 1,
          "value": 1,
          "status": {
            "confirmed": true,
            "blockHeight": 1,
            "blockHash": "text",
            "blockTime": 1
          }
        }
      ]
    }
    GET /v1/bitcoin/address/{address}/utxo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "transactions": [
        {
          "txid": "text",
          "blockHeight": 1,
          "blockTime": 1,
          "ownActivity": [
            {
              "address": "text",
              "sent": 1,
              "received": 1,
              "outgoing": 1,
              "incoming": 1
            }
          ],
          "totalOut": 1,
          "totalIn": 1,
          "addressList": {
            "hasMore": true,
            "items": [
              {
                "address": "text",
                "type": "text",
                "isInput": true,
                "isOutput": true
              }
            ]
          },
          "runes": {
            "ownActivity": {
              "items": [
                {
                  "runeId": "text",
                  "runeName": "text",
                  "divisibility": 1,
                  "symbol": "text",
                  "address": "text",
                  "sent": "text",
                  "received": "text",
                  "outgoing": "text",
                  "incoming": "text"
                }
              ],
              "hasMore": true
            },
            "allActivity": {
              "items": [
                {
                  "runeId": "text",
                  "runeName": "text",
                  "divisibility": 1,
                  "symbol": "text",
                  "outgoing": "text",
                  "incoming": "text",
                  "isMint": true,
                  "isEtch": true,
                  "isBurn": true
                }
              ],
              "hasMore": true
            }
          },
          "inscriptions": {
            "items": [
              {
                "inscriptionId": "text",
                "contentType": "text",
                "address": "text",
                "sent": true,
                "received": true,
                "inscribed": true,
                "burned": true
              }
            ],
            "hasMore": true
          }
        }
      ],
      "offset": 1,
      "limit": 1
    }
    GET /v1/global/ordinals/multi-address/activity?addresses=bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch%2Cbc1px3kttdtg479vqfu0s2lhxvyuz2snhl8jct3f84k5heerl750n28scr9qt6 HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "transactions": [
        {
          "txid": "text",
          "ownActivity": [
            {
              "address": "text",
              "sent": 1,
              "received": 1,
              "outgoing": 1,
              "incoming": 1
            }
          ],
          "totalOut": 1,
          "totalIn": 1,
          "addressList": {
            "hasMore": true,
            "items": [
              {
                "address": "text",
                "type": "text",
                "isInput": true,
                "isOutput": true
              }
            ]
          },
          "runes": {
            "ownActivity": {
              "items": [
                {
                  "runeId": "text",
                  "runeName": "text",
                  "divisibility": 1,
                  "symbol": "text",
                  "address": "text",
                  "sent": "text",
                  "received": "text",
                  "outgoing": "text",
                  "incoming": "text"
                }
              ],
              "hasMore": true
            },
            "allActivity": {
              "items": [
                {
                  "runeId": "text",
                  "runeName": "text",
                  "divisibility": 1,
                  "symbol": "text",
                  "outgoing": "text",
                  "incoming": "text",
                  "isMint": true,
                  "isEtch": true,
                  "isBurn": true
                }
              ],
              "hasMore": true
            }
          },
          "inscriptions": {
            "items": [
              {
                "inscriptionId": "text",
                "contentType": "text",
                "address": "text",
                "sent": true,
                "received": true,
                "inscribed": true,
                "burned": true
              }
            ],
            "hasMore": true
          }
        }
      ],
      "offset": 1,
      "limit": 1
    }
    GET /v1/global/ordinals/multi-address/activity/mempool?addresses=bc1q0egjvlcfq77cxd9kvpgppyuxckzvws46e3sxch%2Cbc1px3kttdtg479vqfu0s2lhxvyuz2snhl8jct3f84k5heerl750n28scr9qt6 HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/bitcoin/address/{address}/txs/unconfirmed HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "items": [
        {
          "txid": "text",
          "version": 1,
          "locktime": 1,
          "vin": [
            {
              "txid": "text",
              "vout": 1,
              "prevout": {
                "scriptpubkey": "text",
                "scriptpubkeyAsm": "text",
                "scriptpubkeyType": "text",
                "scriptpubkeyAddress": "text",
                "value": 1
              },
              "scriptsig": "text",
              "scriptsigAsm": "text",
              "witness": [
                "text"
              ],
              "isCoinbase": true,
              "sequence": 1
            }
          ],
          "vout": [
            {
              "scriptpubkey": "text",
              "scriptpubkeyAsm": "text",
              "scriptpubkeyType": "text",
              "scriptpubkeyAddress": "text",
              "value": 1
            }
          ],
          "size": 1,
          "weight": 1,
          "sigops": 1,
          "fee": 1,
          "status": {
            "confirmed": true
          }
        }
      ]
    }
    GET /v1/bitcoin/tx/{txid} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "height": 1,
      "confirmations": 1,
      "inputs": [
        {
          "vin": 1,
          "prevTxid": "text",
          "prevVout": 1,
          "value": 1,
          "address": "text",
          "script": "text",
          "isCoinbase": true
        }
      ],
      "outputs": [
        {
          "vout": 1,
          "value": 1,
          "address": "text",
          "script": "text"
        }
      ]
    }
    GET /v1/bitcoin/tx/{txid}/hex HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    text
    POST /v1/rpc/bitcoin/rawtx HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 75
    
    {
      "txid": "6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674e"
    }
    GET /v1/ordinals/tx/{txid} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "confirmations": 1,
      "blockHeight": 1,
      "isOrdinalsIndexed": true,
      "inputs": [
        {
          "vin": 1,
          "prevTxid": "text",
          "prevVout": 1,
          "value": 1,
          "address": "text",
          "isCoinbase": true,
          "runes": [
            {
              "runeId": "text",
              "amount": "text",
              "divisibility": 1
            }
          ],
          "inscriptions": [
            {
              "id": "text",
              "contentType": "text",
              "offset": 1
            }
          ]
        }
      ],
      "outputs": [
        {
          "vout": 1,
          "value": 1,
          "address": "text",
          "script": "text",
          "runes": [
            {
              "runeId": "text",
              "runeName": "text",
              "amount": "text",
              "divisibility": 1
            }
          ],
          "inscriptions": [
            {
              "id": "text",
              "contentType": "text",
              "offset": 1
            }
          ]
        }
      ],
      "runeEvents": {
        "etch": {
          "runeId": "text",
          "runeName": "text",
          "divisibility": 1,
          "symbol": "text",
          "premine": "text",
          "turbo": true,
          "terms": {
            "amount": "text",
            "cap": "text",
            "heightLow": "text",
            "heightHigh": "text",
            "offsetLow": "text",
            "offsetHigh": "text"
          },
          "inscriptionId": "text"
        },
        "mint": {
          "runeId": "text",
          "runeName": "text",
          "amount": "text"
        }
      }
    }
    POST /v1/outputs HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 82
    
    {
      "outputs": [
        "e79134080a83fe3e0e06ed6990c5a9b63b362313341745707a2bff7d788a1375:0"
      ]
    }
    {
      "total": 1,
      "limit": 1,
      "offset": 1,
      "xVersion": 1,
      "items": [
        {
          "txid": "text",
          "address": "text",
          "isSpent": true,
          "vout": 1,
          "result": {
            "blockHeight": 1,
            "value": 1,
            "satRanges": [
              {
                "range": {
                  "start": "text",
                  "end": "text"
                },
                "offset": 1,
                "sattributes": [
                  "ALPHA",
                  "BLOCK78",
                  "FIRST_TRANSACTION",
                  "PIZZA",
                  "VINTAGE",
                  "BLACK_UNCOMMON",
                  "BLACK_RARE",
                  "BLACK_EPIC",
                  "BLACK_LEGENDARY",
                  "BLOCK9",
                  "BLOCK9_450",
                  "BLOCK286",
                  "JPEG",
                  "LEGACY",
                  "OMEGA",
                  "FIBONACCI",
                  "HITMAN",
                  "NAKAMOTO",
                  "SILK_ROAD",
                  "PALINDROME",
                  "1D_PALINDROME",
                  "2D_PALINDROME",
                  "3D_PALINDROME",
                  "PALIBLOCK_PALINDROME",
                  "PALINCEPTION",
                  "PURE_PALINCEPTION",
                  "PERFECT_PALINCEPTION",
                  "SEQUENCE_PALINDROME",
                  "NAME_PALINDROME",
                  "COMMON",
                  "UNCOMMON",
                  "RARE",
                  "EPIC",
                  "LEGENDARY",
                  "MYTHIC"
                ],
                "yearMined": 1,
                "block": 1,
                "inscriptions": [
                  {
                    "contentType": "text",
                    "id": "text"
                  }
                ]
              }
            ],
            "runes": [
              {
                "runeId": "text",
                "runeName": "text",
                "amount": "text",
                "divisibility": 1,
                "symbol": "text"
              }
            ]
          }
        }
      ]
    }
    GET /v1/bitcoin/mempool/fee-estimates HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "currentBlockHeight": 1,
      "estimates": {
        "nextBlock": 1,
        "in2Blocks": 1,
        "in3Blocks": 1
      }
    }
    GET /v1/bitcoin/mempool/stats HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "currentBlockHeight": 1,
      "projectedBlocks": [
        {
          "height": 1,
          "weight": 1,
          "vbytes": 1,
          "txnCount": 1,
          "totalFeesSats": 1,
          "feeRates": {
            "min": 1,
            "max": 1,
            "avg": 1,
            "median": 1,
            "p75": 1,
            "p95": 1
          }
        }
      ]
    }
    POST /v1/rpc/bitcoin/tx HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 13
    
    {
      "tx": "text"
    }
    {
      "result": "text"
    }
    GET /v1/block/current HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "block": {
        "height": 1,
        "hash": "text",
        "previousHash": "text",
        "timestamp": "text"
      }
    }
    GET /v1/block/height/{height} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "block": {
        "height": 1,
        "hash": "text",
        "previousHash": "text",
        "timestamp": "text"
      }
    }
    {
      "result": [
        {
          "txid": "text",
          "wtxid": "text",
          "allowed": true,
          "vsize": 1,
          "fees": {
            "base": 1
          },
          "rejectReason": "text",
          "packageError": "text"
        }
      ]
    }
    POST /v1/rpc/bitcoin/testmempoolaccept HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 36
    
    {
      "txList": [
        "text"
      ],
      "maxFeeRate": 0.1
    }
    POST /v2/rpc/bitcoin/getblockhash HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 37
    
    {
      "method": "getblockhash",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockchaininfo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 42
    
    {
      "method": "getblockchaininfo",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockcount HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 38
    
    {
      "method": "getblockcount",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockfilter HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "getblockfilter",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockhash HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 37
    
    {
      "method": "getblockhash",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockheader HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "getblockheader",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getblockstats HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 38
    
    {
      "method": "getblockstats",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getchaintips HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 37
    
    {
      "method": "getchaintips",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getchaintxstats HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 40
    
    {
      "method": "getchaintxstats",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getdifficulty HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 38
    
    {
      "method": "getdifficulty",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getmempoolancestors HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 44
    
    {
      "method": "getmempoolancestors",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getmempooldescendants HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 46
    
    {
      "method": "getmempooldescendants",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getmempoolentry HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 40
    
    {
      "method": "getmempoolentry",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getmempoolinfo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "getmempoolinfo",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getrawmempool HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 38
    
    {
      "method": "getrawmempool",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/gettxout HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 33
    
    {
      "method": "gettxout",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/gettxoutproof HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 38
    
    {
      "method": "gettxoutproof",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/createrawtransaction HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 45
    
    {
      "method": "createrawtransaction",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/decoderawtransaction HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 45
    
    {
      "method": "decoderawtransaction",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/decodescript HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 37
    
    {
      "method": "decodescript",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getrawtransaction HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 42
    
    {
      "method": "getrawtransaction",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getrawtransaction HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 42
    
    {
      "method": "getrawtransaction",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/getrawtransaction HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 42
    
    {
      "method": "getrawtransaction",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/createmultisig HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "createmultisig",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/createmultisig HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "createmultisig",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/createmultisig HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "createmultisig",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin/createmultisig HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 39
    
    {
      "method": "createmultisig",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    GET /v1/bitcoin/price HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "currency": "text",
      "rate": 1
    }
    POST /v1/portfolio/register HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 41
    
    {
      "assetType": "text",
      "addresses": [
        "text"
      ]
    }
    GET /v1/portfolio?assetType=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "items": [
        {
          "assetType": "bitcoin",
          "address": "text"
        }
      ]
    }
    POST /v2/rpc/bitcoin/getblock HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 33
    
    {
      "method": "getblock",
      "params": []
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    POST /v2/rpc/bitcoin HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 113
    
    {
      "method": "getrawtransaction",
      "params": [
        "6c5ffa32f6942bb82bf36239fb8a6d233c4da6f91bde81869accef2ef6be674e",
        true
      ]
    }
    {
      "result": null,
      "error": null,
      "id": null
    }
    GET /v1/ordinals/collections/{collectionId}/holders HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "total": 1,
      "offset": 1,
      "limit": 1,
      "items": [
        {
          "inscriptionCount": 1,
          "address": "text"
        }
      ]
    }
    [
      {
        "timestamp": "text",
        "floorPrices": [
          {
            "marketplace": "text",
            "valueInSats": 1,
            "valueInUsd": "text"
          }
        ]
      }
    ]
    GET /v2/ordinals/collections/{collectionId}/historical-floor-prices?fromTimestamp=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "items": [
        {
          "id": "text",
          "offset": 1,
          "parentIds": [
            "text"
          ],
          "delegateId": "text",
          "blockHeight": 1,
          "contentType": "text",
          "contentLength": 1,
          "effectiveContentType": "text",
          "number": 1,
          "sat": 1,
          "charms": [
            "text"
          ],
          "currentOutput": "text",
          "currentAddress": "text",
          "lastTransferHeight": 1,
          "lastTransferTimestamp": 1,
          "value": 1,
          "contentUrl": "text",
          "renderUrl": "text",
          "collectionId": "text",
          "collectionName": "text",
          "collectionFloorPrice": {
            "valueInSats": "text",
            "valueInUsd": "text"
          },
          "lastInscriptionSalePrice": {
            "valueInSats": "text",
            "valueInUsd": "text"
          },
          "name": "text",
          "indexerHeight": 1
        }
      ]
    }
    GET /v1/ordinals/address/{address}/inscriptions HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/ordinals/collections/{collectionId}/inscriptions HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "collectionId": "text",
      "collectionName": "text",
      "total": 1,
      "offset": 1,
      "limit": 1,
      "inscriptions": [
        {
          "id": "text",
          "number": 1,
          "sat": 1,
          "contentType": "text",
          "blockHeight": 1,
          "charms": [
            "text"
          ]
        }
      ]
    }
    GET /v1/inscriptions/{inscriptionId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "id": "text",
      "offset": 1,
      "parentIds": [
        "text"
      ],
      "delegateId": "text",
      "blockHeight": 1,
      "contentType": "text",
      "contentLength": 1,
      "effectiveContentType": "text",
      "number": 1,
      "sat": 1,
      "charms": [
        "text"
      ],
      "currentOutput": "text",
      "currentAddress": "text",
      "lastTransferHeight": 1,
      "lastTransferTimestamp": 1,
      "value": 1,
      "contentUrl": "text",
      "renderUrl": "text",
      "collectionId": "text",
      "collectionSymbol": "text",
      "collectionName": "text",
      "collectionFloorPrice": {
        "valueInSats": "text",
        "valueInUsd": "text"
      },
      "lastInscriptionSalePrice": {
        "valueInSats": "text",
        "valueInUsd": "text"
      },
      "name": "text",
      "indexerHeight": 1
    }
    {
      "total": 1,
      "offset": 1,
      "limit": 1,
      "timePeriod": "text",
      "collections": [
        {
          "collectionId": "text",
          "tradingVolumeSats": "text",
          "name": "text",
          "logo": "text",
          "floorPrice": {
            "valueInSats": "text",
            "valueInUsd": "text",
            "percentageChange24h": {
              "valueInSats": "text",
              "valueInUsd": "text"
            }
          }
        }
      ]
    }
    GET /v1/ordinals/stats/collections/top-by-volume HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/inscriptions/{inscriptionId}/activity HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "offset": 1,
      "limit": 1,
      "total": 1,
      "items": [
        {
          "blockHeight": 1,
          "blockTime": "text",
          "inscriptionId": "text",
          "toAddress": "text",
          "txid": "text",
          "vout": 1
        }
      ]
    }
    GET /v1/inscriptions/{inscriptionId}/thumbnail HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "url": "text"
    }
    POST /v1/inscriptions/estimate HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 2
    
    {}
    {}
    POST /v1/inscriptions/order HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 2
    
    {}
    {}
    GET /v1/inscriptions/order/{orderId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {}
    {}
    POST /v1/inscriptions/order/{orderId}/execute HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 2
    
    {}
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "items": [
        {
          "runeName": "text",
          "amount": "text",
          "divisibility": 1,
          "symbol": "text",
          "inscriptionId": "text",
          "id": "text"
        }
      ],
      "indexerHeight": 1
    }
    GET /v1/ordinals/address/{address}/runes HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/portfolio/history?address=text&startDate=text&endDate=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "lastBlockHeight": 1,
      "items": [
        {
          "assetType": "text",
          "assetId": "text",
          "address": "text",
          "balance": {
            "valueInSats": "text",
            "valueInUsd": "text"
          },
          "date": "text"
        }
      ]
    }
    {
      "collectionId": "text",
      "collectionName": "text",
      "total": 1,
      "offset": 1,
      "limit": 1,
      "inscriptions": [
        {
          "id": "text",
          "number": 1,
          "sat": 1,
          "contentType": "text",
          "blockHeight": 1,
          "charms": [
            "text"
          ],
          "currentLocation": "text"
        }
      ]
    }
    GET /v1/ordinals/address/{address}/inscriptions/collection/{collectionId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/ordinals/address/{address}/utxo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "rareSatsVersion": 1,
      "items": [
        {
          "txid": "text",
          "vout": 1,
          "value": 1,
          "blockHeight": 1,
          "satRanges": [
            {
              "range": {
                "start": "text",
                "end": "text"
              },
              "offset": 1,
              "sattributes": [
                "ALPHA",
                "BLOCK78",
                "FIRST_TRANSACTION",
                "PIZZA",
                "VINTAGE",
                "BLACK_UNCOMMON",
                "BLACK_RARE",
                "BLACK_EPIC",
                "BLACK_LEGENDARY",
                "BLOCK9",
                "BLOCK9_450",
                "BLOCK286",
                "JPEG",
                "LEGACY",
                "OMEGA",
                "FIBONACCI",
                "HITMAN",
                "NAKAMOTO",
                "SILK_ROAD",
                "PALINDROME",
                "1D_PALINDROME",
                "2D_PALINDROME",
                "3D_PALINDROME",
                "PALIBLOCK_PALINDROME",
                "PALINCEPTION",
                "PURE_PALINCEPTION",
                "PERFECT_PALINCEPTION",
                "SEQUENCE_PALINDROME",
                "NAME_PALINDROME",
                "COMMON",
                "UNCOMMON",
                "RARE",
                "EPIC",
                "LEGENDARY",
                "MYTHIC"
              ],
              "yearMined": 1,
              "block": 1,
              "inscriptions": [
                {
                  "contentType": "text",
                  "id": "text"
                }
              ]
            }
          ],
          "runes": [
            {
              "runeId": "text",
              "runeName": "text",
              "amount": "text",
              "divisibility": 1,
              "symbol": "text"
            }
          ]
        }
      ]
    }
    GET /v1/mempool/ordinals/address/{address}/inscriptions HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "items": [
        {
          "id": "text",
          "offset": 1,
          "parentIds": [
            "text"
          ],
          "delegateId": "text",
          "contentType": "text",
          "contentLength": 1,
          "effectiveContentType": "text",
          "number": 1,
          "sat": 1,
          "charms": [
            "text"
          ],
          "currentOutput": "text",
          "currentAddress": "text",
          "value": 1,
          "contentUrl": "text",
          "renderUrl": "text",
          "collectionId": "text",
          "collectionName": "text",
          "collectionFloorPrice": {
            "valueInSats": "text",
            "valueInUsd": "text"
          },
          "lastInscriptionSalePrice": {
            "valueInSats": "text",
            "valueInUsd": "text"
          }
        }
      ]
    }
    GET /v1/ordinals/collections HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "items": [
        {
          "id": "text",
          "name": "text",
          "description": "text",
          "links": {
            "coinMarketCap": "text",
            "telegram": "text",
            "twitter": "text",
            "discord": "text",
            "website": "text"
          }
        }
      ]
    }
    GET /v1/ordinals/collections/{collectionId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "id": "text",
      "symbol": "text",
      "name": "text",
      "description": "text",
      "supply": "text",
      "holderCount": "text",
      "floorPrice": {
        "valueInSats": "text",
        "valueInUsd": "text",
        "percentageChange24h": {
          "valueInSats": "text",
          "valueInUsd": "text"
        }
      },
      "marketCap": {
        "valueInSats": "text",
        "valueInUsd": "text"
      },
      "volume24h": {
        "valueInSats": "text",
        "valueInUsd": "text",
        "percentageChange": {
          "valueInSats": "text",
          "valueInUsd": "text"
        }
      },
      "links": {
        "coinMarketCap": "text",
        "telegram": "text",
        "twitter": "text",
        "discord": "text",
        "website": "text"
      }
    }
    {
      "offset": 1,
      "limit": 1,
      "items": [
        {
          "blockHeight": 1,
          "blockTime": "text",
          "txid": "text",
          "index": 1,
          "type": "text",
          "amount": "text",
          "address": "text"
        }
      ]
    }
    GET /v1/ordinals/address/{address}/runes/{identifier}/activity HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/runes/address/{address}/utxo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "items": [
        {
          "txid": "text",
          "vout": 1,
          "amount": 1,
          "blockHeight": 1,
          "runes": [
            {
              "runeName": "text",
              "runeId": "text",
              "amount": "text",
              "divisibility": 1,
              "symbol": "text"
            }
          ]
        }
      ]
    }
    GET /v1/ordinals/address/{address}/collections HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "totalCollections": 1,
      "totalInscriptions": 1,
      "items": [
        {
          "id": "text",
          "symbol": "text",
          "name": "text",
          "description": "text",
          "supply": "text",
          "holderCount": "text",
          "floorPrice": {
            "valueInSats": "text",
            "valueInUsd": "text",
            "percentageChange24h": {
              "valueInSats": "text",
              "valueInUsd": "text"
            }
          },
          "marketCap": {
            "valueInSats": "text",
            "valueInUsd": "text"
          },
          "volume24h": {
            "valueInSats": "text",
            "valueInUsd": "text",
            "percentageChange": {
              "valueInSats": "text",
              "valueInUsd": "text"
            }
          },
          "links": {
            "coinMarketCap": "text",
            "telegram": "text",
            "twitter": "text",
            "discord": "text",
            "website": "text"
          },
          "total": 1,
          "inscriptionSubset": [
            {
              "id": "text",
              "number": 1,
              "contentType": "text"
            }
          ]
        }
      ]
    }
    GET /v1/runes/{identifier} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "chain": "text",
      "runeName": "text",
      "symbol": "text",
      "runeId": "text",
      "spacedRuneName": "text",
      "amount": "text",
      "cap": "text",
      "divisibility": "text",
      "premine": "text",
      "turbo": true,
      "genesisBlock": 1,
      "mint": {
        "offset": {
          "low": "text",
          "high": "text"
        },
        "height": {
          "low": "text",
          "high": "text"
        }
      },
      "holders": "text",
      "supply": "text",
      "marketCap": {
        "valueInSats": "text",
        "valueInUsd": "text"
      },
      "prices": {
        "floorPrice": {
          "marketplace": "text",
          "valueInSats": "text",
          "valueInUsd": "text",
          "percentageChange24h": {
            "valueInSats": "text",
            "valueInUsd": "text"
          }
        },
        "lastSalePrice": {
          "marketplace": "text",
          "valueInSats": "text",
          "valueInUsd": "text"
        }
      },
      "volume24h": {
        "valueInSats": "text",
        "valueInUsd": "text",
        "percentageChange": {
          "valueInSats": "text",
          "valueInUsd": "text"
        }
      },
      "inscriptionId": "text",
      "inscriptionRenderUrl": "text"
    }
    GET /v1/runes?startingWith=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "items": [
        {
          "runeId": "text",
          "runeName": "text",
          "symbol": "text",
          "divisibility": 1
        }
      ],
      "offset": 1,
      "limit": 1
    }
    {
      "collectionId": "text",
      "collectionName": "text",
      "total": 1,
      "offset": 1,
      "limit": 1,
      "inscriptions": [
        {
          "id": "text",
          "number": 1,
          "sat": 1,
          "contentType": "text",
          "blockHeight": 1,
          "charms": [
            "text"
          ],
          "currentLocation": "text"
        }
      ]
    }
    GET /v1/ordinals/address/{address}/void-protocol-inscriptions/collection/{collectionId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/runes/batch-info?runeIds=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    [
      {
        "chain": "text",
        "runeName": "text",
        "symbol": "text",
        "runeId": "text",
        "spacedRuneName": "text",
        "amount": "text",
        "cap": "text",
        "divisibility": "text",
        "premine": "text",
        "turbo": true,
        "genesisBlock": 1,
        "mint": {
          "offset": {
            "low": "text",
            "high": "text"
          },
          "height": {
            "low": "text",
            "high": "text"
          }
        },
        "holders": "text",
        "supply": "text",
        "marketCap": {
          "valueInSats": "text",
          "valueInUsd": "text"
        },
        "prices": {
          "floorPrice": {
            "marketplace": "text",
            "valueInSats": "text",
            "valueInUsd": "text",
            "percentageChange24h": {
              "valueInSats": "text",
              "valueInUsd": "text"
            }
          },
          "lastSalePrice": {
            "marketplace": "text",
            "valueInSats": "text",
            "valueInUsd": "text"
          }
        },
        "volume24h": {
          "valueInSats": "text",
          "valueInUsd": "text",
          "percentageChange": {
            "valueInSats": "text",
            "valueInUsd": "text"
          }
        },
        "inscriptionId": "text",
        "inscriptionRenderUrl": "text"
      }
    ]
    [
      {
        "timestamp": "text",
        "floorPrice": {
          "valueInSats": 1,
          "valueInUsd": "text"
        }
      }
    ]
    GET /v1/ordinals/collections/{collectionId}/historical-floor-prices?fromTimestamp=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/runes/{identifier}/holders HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "offset": 1,
      "limit": 1,
      "total": 1,
      "items": [
        {
          "address": "text",
          "amount": "text",
          "lastUpdatedBlockHeight": 1
        }
      ]
    }
    POST /v1/subscription HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 88
    
    {
      "webhookEndpoint": {
        "url": "text"
      },
      "subscriptionAddressPredicate": {
        "addresses": [
          "text"
        ]
      }
    }
    GET /v1/subscription HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "limit": 1,
      "offset": 1,
      "total": 1,
      "items": [
        {
          "id": 1,
          "webhookEndpoint": {
            "url": "text",
            "updatedAt": "text"
          },
          "subscriptionAddressPredicate": {
            "addresses": [
              "text"
            ],
            "updatedAt": "text"
          }
        }
      ]
    }
    DELETE /v1/subscription/{subscriptionId} HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "txids": [
        "text"
      ],
      "confirmedBalance": "text",
      "unconfirmedBalance": "text",
      "offset": 1,
      "limit": 1
    }
    GET /v1/bitcoin/address/{address}/summary HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "hasMore": true,
      "items": [
        {
          "txid": "text",
          "vout": 1,
          "value": 1,
          "status": {
            "confirmed": true,
            "blockHeight": 1,
            "blockHash": "text",
            "blockTime": 1
          }
        }
      ]
    }
    GET /v2/bitcoin/address/{address}/utxo HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    GET /v1/ordinals/tx/{txid}/outputs HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "total": 1,
      "offset": 1,
      "limit": 1,
      "confirmations": 1,
      "blockHeight": 1,
      "items": [
        {
          "vout": 1,
          "value": 1,
          "address": "text",
          "script": "text",
          "runes": [
            {
              "runeId": "text",
              "runeName": "text",
              "amount": "text",
              "divisibility": 1
            }
          ],
          "inscriptions": [
            {
              "id": "text",
              "contentType": "text",
              "offset": 1
            }
          ]
        }
      ],
      "isOrdinalsIndexed": true
    }
    GET /v1/ordinals/tx/{txid}/inputs HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    {
      "total": 1,
      "offset": 1,
      "limit": 1,
      "confirmations": 1,
      "blockHeight": 1,
      "items": [
        {
          "vin": 1,
          "prevTxid": "text",
          "prevVout": 1,
          "value": 1,
          "address": "text",
          "isCoinbase": true,
          "runes": [
            {
              "runeId": "text",
              "amount": "text",
              "divisibility": 1
            }
          ],
          "inscriptions": [
            {
              "id": "text",
              "contentType": "text",
              "offset": 1
            }
          ]
        }
      ],
      "isOrdinalsIndexed": true
    }
    GET /v1/inscriptions/batch?inscriptionIds=text HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*
    
    [
      {
        "id": "text",
        "offset": 1,
        "parentIds": [
          "text"
        ],
        "delegateId": "text",
        "blockHeight": 1,
        "contentType": "text",
        "contentLength": 1,
        "effectiveContentType": "text",
        "number": 1,
        "sat": 1,
        "charms": [
          "text"
        ],
        "currentOutput": "text",
        "currentAddress": "text",
        "lastTransferHeight": 1,
        "lastTransferTimestamp": 1,
        "value": 1,
        "contentUrl": "text",
        "renderUrl": "text",
        "collectionId": "text",
        "collectionSymbol": "text",
        "collectionName": "text",
        "collectionFloorPrice": {
          "valueInSats": "text",
          "valueInUsd": "text"
        },
        "lastInscriptionSalePrice": {
          "valueInSats": "text",
          "valueInUsd": "text"
        },
        "name": "text",
        "indexerHeight": 1
      }
    ]
    {
      "balances": [
        {
          "runeId": "text",
          "divisibility": 1,
          "symbol": "text",
          "runeName": "text",
          "confirmedBalance": "text",
          "availableBalance": "text",
          "projectedBalance": "text",
          "pendingBalance": {
            "incomingAmount": "text",
            "outgoingAmount": "text",
            "netAmount": "text"
          },
          "prices": {
            "floorPrice": {
              "marketplace": "text",
              "percentageChange24h": {
                "valueInSats": "text",
                "valueInUsd": "text"
              },
              "valueInSats": "text",
              "valueInUsd": "text"
            },
            "lastSalePrice": {
              "marketplace": "text",
              "valueInSats": "text",
              "valueInUsd": "text"
            }
          },
          "volume24h": {
            "percentageChange": {
              "valueInSats": "text",
              "valueInUsd": "text"
            },
            "valueInSats": "text",
            "valueInUsd": "text"
          }
        }
      ],
      "indexerHeight": 1
    }
    GET /v2/runes/address/{address}/balance HTTP/1.1
    Host: api.secretkeylabs.io
    x-api-key: YOUR_API_KEY
    Accept: */*