# Contact Us Source: https://docs.developer.gomaestro.org/account/contact-us Get in touch with the Maestro team for assistance through email or Discord support channels. If you need assistance, please reach out to the Maestro team using one of the following methods: * **E-mail:** [info@gomaestro.org](mailto:info@gomaestro.org) * **Discord:** [Join our Discord](https://discord.com/channels/950173135838273556/1266961548967018558) and create a ticket in the #create-a-ticket channel. We're here to help! Let us know how we can assist you. # Manage Billing Source: https://docs.developer.gomaestro.org/account/manage-billing Guide to manage billing information, view invoices, update payment methods, and track subscription usage in your Maestro account. **Manage Payment and Billing** You can manage your billing information, view invoices, and update payment methods directly through the platform. Follow the instructions below to ensure your payment details are up-to-date and view your billing history. *** ## Prerequisites Before managing your subscription, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) if you don’t already have one *** ## 1. View Billing Information: * Navigate to the `Billing` tab from the main dashboard. *** ## 2. View Invoice History * Here, you can see all your **invoices** and billing history, including detailed payment information. *** ## 3. Update Credit Card Information: 1. Go to `Subscriptions` and select `Overview`. 2. Scroll to the **Payment Method** section. 3. Add or update your **credit card information** as needed. *** ## 4. Pay with Stablecoins You can also pay your subscription with stablecoins by connecting a wallet and setting it as your default payment method. * **Currently supported:** USDC on Base and Polygon * **Coming soon:** USDC and USDT on Ethereum Follow the full setup guide here: [Stablecoin Payments](./stablecoin-payments). *** ## 5. Threshold Billing **Billing Frequency:** Maestro may charge you on a regular cycle, e.g., monthly, or may charge when your account has accrued a certain amount of charges. Additionally, Maestro reserves the right to bill more frequently if Maestro reasonably determines the customer is at risk of non-payment or is potentially fraudulent. **Key Points:** * **Billing thresholds are monetary values that trigger a new bill whenever your account activity exceeds the threshold amount.** In addition to monthly subscription billing, you receive a bill whenever API usage fees, recurring charges, and other outstanding charges exceed your account's threshold. * **Monthly subscription fees are included in your running total but not in threshold bills.** This ensures that your regular subscription fees are only charged on your scheduled monthly billing date, while usage-based charges trigger threshold billing. * **You can be charged multiple times in the same month if your account repeatedly reaches the billing threshold.** The amount charged could exceed the payment threshold if your account accrues costs very quickly between billing cycles. * If you have no API usage fees or other charges during a billing cycle, your threshold amount does not display and you are only billed on your regular monthly date. If a payment fails, the platform will attempt to charge your default payment method up to 3 times within two weeks. If all attempts are unsuccessful: * **Your account will be suspended.** * **All associated project keys will be deleted.** For any issues with billing, please reach out to **Support****.** # Stablecoin Payments Source: https://docs.developer.gomaestro.org/account/stablecoin-payments Pay your Maestro subscription with stablecoins by connecting a wallet and setting it as your default payment method. **Supported Networks** * **Available now:** USDC on Base and Polygon * **Coming soon:** USDC and USDT on Ethereum *** ## How to Set It Up ### 1. Open the billing payment section Go to: Billing Payment Settings *** ### 2. Select crypto and connect your wallet Choose the crypto payment option and connect your wallet. *** ### 3. Set the wallet as default payment method Set your connected crypto wallet as the default payment method for subscription charges. **Recommendation** USDC from your connected wallet will be automatically withdrawn at the end of your billing cycle. We recommend using a dedicated wallet with enough USDC to cover recurring Maestro charges. Regularly check this wallet and top up USDC to cover future payments. You can also use tools like [this low-balance alert](https://cryptocurrencyalerting.com/wallet-balance-alert.html?coin=USDC) to get notified when funds are running low. *** For billing support, contact **Support**. # Subscriptions Source: https://docs.developer.gomaestro.org/account/subscription Manage your Maestro subscription plan, view usage metrics, and upgrade your tier. Transparent pricing without hidden fees. **Managing Your Subscription** Learn how to view, manage, and upgrade your subscription plan on our platform. Our adaptive subscription options are designed to grow with your needs, providing transparent pricing without hidden fees. Choose from **capped **or** pay-as-you-go** plans, and take advantage of\*\* volume-based \*\*discounts to get the best value. You can also view the most recent pricing plans by viewing the pricing page. *** ## Overview Our platform provides subscription plans tailored to a range of users, from students and hobbyists to professionals and enterprises. The subscription management feature allows users to: * [Access details about their current plan](./view) * [Upgrade or modify plans as needed](./upgrade) * [Manage Billing](./manage-billing) Enjoy transparent pricing and volume discounts that scale as your project grows. *** ## Subscription Plans and Features We offer various packages designed to cater to different user needs: | **Package** | **Description** | | --------------------- | --------------------------------------------------------------------------------------------- | | **Artist Package** | Ideal for students and hobbyists, offering capped monthly credits. | | **Conductor Package** | Designed for professionals who require consistent, scalable use with pay-as-you-go billing. | | **Virtuoso Package** | Perfect for enterprises, with pay-as-you-go billing and additional enterprise-grade features. | For further details on the features of each package, see the Plans and Pricing section. *** ## Included Package Services Each subscription package offers a set of services tailored to different needs: | **Service** | **Description** | | --------------------------- | ------------------------------------------------------------------------------------- | | **Blockchain Indexer** | High-performance Cardano Web3 API for real-time on-chain data access. | | **Transaction Manager** | Monitor transaction state transitions in real-time through the dashboard or webhooks. | | **Turbo Transactions** | Accelerate transaction confirmation times with our optimized propagation system. | | **Market Price Feeds** | Access to real-time financial metrics and pricing data. | | **Wallet Manager** | Generate key pairs and addresses securely and efficiently. | | **Managed Smart Contracts** | APIs and white-label UI plugins for seamless smart contract integration. | *** ## How Volume-Based Pricing Tiers Works As your usage grows, you can benefit from **volume-based pricing tiers**. These discounts start at **4%** and can go up to **40%** for customers who commit to higher usage volumes. The more you use, the greater the discount. For additional details, visit the **Pricing Page**. **Note:** * **Upgrading Plans**: You can upgrade your plan at any time; changes are applied immediately. * **Monthly Capped Plans**: Ideal for smaller projects, prototyping, or educational use. * **Pay-As-You-Go Plans**: Best for scalable, continuous use, with no credit limits and volume discounts. * **Monitor Your Usage**: Regularly check your usage to ensure you have enough credits or are billed accurately based on consumption. For more information, contact **Support**. # Teams Source: https://docs.developer.gomaestro.org/account/teams Guide to set up and manage multi-user teams in Maestro for collaborative project management and shared subscription access. **Setting Up Teams** Learn how to invite, manage, and interact with team members on Maestro for collaborative project management. Maestro supports multi-user teams, allowing organizations to manage projects and subscriptions collectively. This feature is especially beneficial for teams relying on the dashboard to streamline workflows. *** # Team Roles and Permissions | **Role / Permissions** | ✔ **Owner** | ✔ **Admin** | ✔ **Developer** | ✔ **Member** | | ---------------------- | ----------- | ----------- | --------------- | ------------ | | Projects (Full Access) | ✔ | ✔ | ✔ | Read-Only | | Webhooks | ✔ | ✔ | ✔ | ✘ | | Subscriptions | ✔ | ✔ | ✘ | ✘ | | Manage Team Members | ✔ | ✔ | ✘ | ✘ | | View Team Members | ✔ | ✔ | ✔ | ✔ | | Manage Account | ✔ | ✔ | ✘ | ✘ | | Delete Account | ✔ | ✘ | ✘ | ✘ | | Enable/Require MFA | ✔ | ✔ | ✘ | ✘ | *** ## Prerequisites Before creating teams, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) if you don’t already have one. *** ## Steps to Create a Team ### 1. **Log in to Your Maestro Account:** * Use your credentials to access the Maestro Dashboard. *** ### 2. **Access Account Settings:** * Click your **profile icon** at the top-right corner. * Select `Settings` from the dropdown menu. * Select `Team` on the left panel. * In the Teams section, enter a `Team Name`\*\* \*\*and click `Save `to create your team. You can rename your team later if needed. *** ## Steps to **Invite Team Members** * On the **Teams** page, enter the email address of the person you wish to invite. * Choose a **Role** (Admin, Developer, or Member) from the dropdown. * Click `Invite`. * Click `Add` ***The user will receive an email invitation, which they must accept to join the team.*** *** ## **Steps to Manage Team Members:** * The **Team** page lists all current team members, along with their roles and Multi-Factor Authentication (MFA) status. * You can **Edit, Resend an Invitation, or** **Delete** users using the buttons in the \*\*Manage \*\*column. *** **Notes** * Only the **Owner** can delete the team or transfer ownership. * **Admins** can manage users but cannot change the team name or delete the team. * **Invites expire after 7 days if not accepted. Users will need a new invitation after expiration.** * Team members cannot change their own roles; this must be configured by the **Owner** or **Admin**. # Upgrade Source: https://docs.developer.gomaestro.org/account/upgrade Guide to upgrade your Maestro subscription plan with more credits, flexible pay-as-you-go options, and immediate plan switching. **Upgrade Your Subscription** Easily upgrade your subscription plan to better suit your usage needs directly from the Maestro Dashboard. Whether you need more credits or prefer a flexible, pay-as-you-go option, you can switch plans at any time with immediate effect. This guide will walk you through the process of upgrading your subscription and explain the available options. *** ## Prerequisites Before managing your subscription, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) if you don’t already have one *** ### 1. How to Upgrade On the **Subscription Details** page, click `Upgrade `to explore different subscription options. You can choose from: 1. **Monthly Capped Plans**: Suitable for limited use, with a fixed amount of credits each month. 2. **Pay-As-You-Go Plans**: Best for continuous use, charging based on actual usage without credit limits. Changes to your \*\*plan take effect immediately, \*\*and billing will be adjusted accordingly. ***You can switch between plans at any time.*** For any issues with billing, please reach out to **Support****.** # View Source: https://docs.developer.gomaestro.org/account/view Guide to view and review your Maestro subscription details, usage metrics, billing information, and plan type from the dashboard. **View Your Subscription** Easily access and review the details of your subscription plan directly from the Maestro Dashboard. Whether you're on a capped monthly plan or a pay-as-you-go plan, you can quickly check your plan type, current usage, and billing information. This guide will walk you through how to navigate to your subscription details and understand key elements of your plan, helping you stay informed and manage your account effectively. ## Prerequisites Before managing your subscription, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) if you don’t already have one *** ### 1. Log in to Your Maestro Account: * Use your credentials to access the Maestro Dashboard. *** ### 2. Access Account Settings: * Click your **profile icon** at the top-right corner. * Select `Settings` from the dropdown menu. * Select `Subscription` You will be redirected to the **Subscription Overview** page, where you can view the following: * **Plan Type**: The subscription you currently use (e.g., **Artist**, **Conductor**, **Virtuoso**). * **Price Per Month**: The cost of your current plan. * **Credits Information**: Number of credits included, credits used, and time remaining until reset. * **Rate**: Applicable rates based on your current usage. For any issues with billing, please reach out to **Support****.** # ClawHub Source: https://docs.developer.gomaestro.org/agentic-integrations/clawhub Discover and integrate Maestro's Bitcoin blockchain capabilities through the ClawHub AI skill marketplace. # ClawHub [ClawHub](https://clawhub.ai/Vardominator/maestro-skill) is a platform for hosting, discovering, and managing AI agent skills. It provides a registry where developers publish skills that AI agents can discover and use — similar to a package registry for agent capabilities. *** ## Maestro Skill The **Maestro skill** on ClawHub provides comprehensive Bitcoin blockchain interaction through Maestro's APIs: * **7 API services** with **119 endpoints** * Bitcoin blockchain indexing and querying * Esplora API compatibility * Direct RPC access to Bitcoin nodes * Event management and webhook support * Real-time market price data * Mempool monitoring * Wallet operations and UTXO management * Metaprotocol support: **BRC-20**, **Runes**, and **Ordinals** *** ## Learn More View the full Maestro skill listing, capabilities, and integration details. # ERC-8004 Source: https://docs.developer.gomaestro.org/agentic-integrations/erc-8004 Maestro's Bitcoin agent registered on-chain via ERC-8004 for trustless discovery, reputation tracking, and verification by any AI agent. # ERC-8004 [ERC-8004](https://www.8004scan.io/agents/ethereum/22763) ("Trustless Agents") is an Ethereum standard that defines a blockchain-based protocol for **agent discovery and trust establishment** across organizational boundaries. It enables AI agents to discover, evaluate, and interact with other agents without pre-existing trust relationships — creating the foundation for open agent economies. While existing standards like MCP and A2A handle agent communication, ERC-8004 adds the missing layer: **discovery and trust**. *** ## How It Works ERC-8004 defines three on-chain registries: | Registry | Purpose | | :------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Identity** | ERC-721-based registry assigning each agent a globally unique identifier and an `agentURI` pointing to its registration file. Agents are browsable and transferable as NFTs. | | **Reputation** | Collects feedback signals from clients. Core data stored on-chain, detailed feedback off-chain. Supports filtering, revocation, and response appending. | | **Validation** | Enables independent verification of agent work. Validators respond with outcomes on a 0–100 scale. | *** ## Maestro on ERC-8004 Maestro's Bitcoin agent is registered on the Ethereum mainnet as **token #22763**, providing: * **7 API services** with **119 endpoints** covering blockchain indexing, Esplora compatibility, Node RPC, event management, market pricing, mempool monitoring, and transaction processing * **MCP endpoint** at `https://xbt-mainnet.gomaestro-api.org/v0/mcp` * **x402 payment support** for autonomous, wallet-based access Any AI agent on the network can discover Maestro's capabilities, verify its identity, and check its reputation — all through the decentralized registry. *** ## Learn More View Maestro's full agent registration, service endpoints, and reputation on the ERC-8004 explorer. # MCP Source: https://docs.developer.gomaestro.org/agentic-integrations/mcp Connect LLMs and AI agents to Bitcoin blockchain data through Maestro's MCP server — query blocks, transactions, mempool, and more via natural language. # Model Context Protocol (MCP) The [Maestro MCP Server](https://github.com/maestro-org/maestro-mcp-server) is a **Model Context Protocol** implementation that enables AI agents and LLMs to interact with Bitcoin blockchain data through the Maestro API. It acts as a bridge, translating natural language queries into blockchain API calls via a standardized streamable HTTP protocol. *** ## Available Services The MCP server exposes five Maestro API service categories: | Service | Description | | :--------------------- | :---------------------------------------------------- | | **Blockchain Indexer** | Query blocks, transactions, and historical chain data | | **Mempool Monitoring** | Track pending and unconfirmed transactions | | **Market Price** | Access real-time Bitcoin pricing information | | **Wallet** | Address lookups, balance queries, and UTXO management | | **Node RPC** | Direct Bitcoin node interaction capabilities | *** ## Setup ### Prerequisites * [Bun](https://bun.sh/) v1.0 or higher * A [Maestro API key](https://dashboard.gomaestro.org/signup) ### Installation ```bash theme={null} git clone https://github.com/maestro-org/maestro-mcp-server.git cd maestro-mcp-server bun install bun run build ``` ### Configuration ```bash theme={null} cp .env.example .env ``` Edit `.env` to add your Maestro API key and select a network: | Network | Base URL | | :----------- | :----------------------------------------- | | **Mainnet** | `https://xbt-mainnet.gomaestro-api.org/v0` | | **Testnet4** | `https://xbt-testnet.gomaestro-api.org/v0` | ### Launch ```bash theme={null} bun run start:http ``` The MCP endpoint is accessible at `http://localhost:3000/mcp`. *** ## Client Examples The [maestro-mcp-client-examples](https://github.com/maestro-org/maestro-mcp-client-examples) repository provides working integration examples: | Example | Description | | :------------------------------ | :----------------------------------------------------------------- | | **basic-streamablehttp-client** | Raw streamable HTTP transport connection to the MCP server | | **Claude** | Integration with Claude AI for natural language blockchain queries | | **Cursor** | Configuration for using Maestro MCP in the Cursor editor | *** ## Resources Source code, full documentation, and setup instructions. Working examples for Claude, Cursor, and raw HTTP clients. # Overview Source: https://docs.developer.gomaestro.org/agentic-integrations/overview Maestro's suite of AI agent integrations for autonomous blockchain interaction — x402 payments, MCP servers, on-chain agent registries, and skill marketplaces. # Agentic Integrations In the agentic world, most data consumption will come from **AI agents** operating on behalf of humans and other AI agents. As autonomous systems increasingly interact with blockchain networks, they need reliable, standards-based infrastructure to query on-chain data, submit transactions, and pay for services — all without human intervention. **Maestro provides a complete set of tools for agents to seamlessly interact with the blockchain.** Maestro's agentic integrations span the full lifecycle of autonomous blockchain access: * **Payment** — Agents pay for API access using crypto wallets via the x402 protocol * **Communication** — LLMs and agents query blockchain data through Model Context Protocol (MCP) servers * **Discovery** — Agents find and verify Maestro's services through on-chain registries (ERC-8004) and skill platforms (ClawHub) *** # Integrations Autonomous API access via crypto payments. Agents pay with stablecoins over HTTP — no API keys or accounts required. Connect LLMs and AI agents to Bitcoin blockchain data through a standardized MCP server. Maestro's Bitcoin agent registered on-chain for trustless discovery and verification via the ERC-8004 standard. Discover and integrate Maestro's blockchain capabilities through the ClawHub AI skill marketplace. # x402 Payments Source: https://docs.developer.gomaestro.org/agentic-integrations/x402 Access all Maestro APIs via x402 crypto payments — autonomous, wallet-based API access for AI agents with no API keys or user account required. ✨ **AI Agent Integration** Use the Maestro skill file below to teach your agent how to query Maestro APIs and pay with x402. ## Provide the Maestro skill directly ```text theme={null} https://raw.githubusercontent.com/maestro-org/maestro-skill/refs/heads/main/SKILL.md ``` ## Install the Maestro skill with npx ```bash theme={null} npx skills add maestro-org/maestro-skill ``` *** ## What is x402? [x402](https://www.x402.org/) is an open protocol that uses HTTP `402 Payment Required` for API-native crypto payments, so agents can request Maestro APIs, complete a wallet challenge, and pay only when credits are needed. *** ## How to Use and Pay with x402 Send a Maestro API request. If authentication or credits are missing, the gateway returns HTTP `402`. Use the `extensions.sign-in-with-x` challenge data from the `402` response, sign it, and retry with `Sign-In-With-X`. The gateway returns `Authorization: Bearer ` (valid for about 1 hour) and, when needed, purchase details. When prompted, choose an amount, sign the payment authorization, and retry with: * `Authorization: Bearer ` * `X-PAYMENT: ` Responses include remaining credits and payment metadata, and the JWT can be reused until it expires. ## Payment Requirements and Limits **Supported chains:** Ethereum, Base\ **Supported currency:** USDC\ **Single credit cost:** \$0.000025 per credit **Purchase limits** * **Min purchase:** \$0.10 = 4,000 credits * **Max purchase:** \$50.00 = 2,000,000 credits *** ## Key Benefits for Agents * **No API keys or accounts** — A crypto wallet is all an agent needs to authenticate and pay * **Stablecoin payments** — Pay with USDC on Base or Ethereum * **Reusable paid access** — Buy credits once, then spend them across requests * **Idempotent** — Safe to retry requests without risk of duplicate charges *** ## Learn More Read the full x402 specification, explore SDKs (TypeScript, Python, Go), and view integration guides. # API Usage Source: https://docs.developer.gomaestro.org/bitcoin/api-usage Bitcoin API usage guide with authentication, pagination, rate limits, and best practices for Maestro's Bitcoin blockchain APIs. # Authentication You will need an `api-key` to access the Maestro API. You can obtain this key from the Maestro dApp Platform Dashboard. ## Examples ### GET Request Example GET request for retrieving the chain tip: ```sh Curl theme={null} curl -X GET \ -H "api-key: " \ https://xbt-mainnet.gomaestro-api.org/v0/rpc/general/info ``` ### POST Request Example request for submitting a transaction: ```sh Curl theme={null} curl -X POST \ -H "Content-Type: application/cbor" \ -H "api-key: " \ --data @tx.signed \ https://xbt-mainnet.gomaestro-api.org/v0/rpc/transaction/submit ``` *** # Security To ensure the security of your API usage, follow these best practices: * **Keep your API key private**: Never share it publicly (e.g., on GitHub, client-side code). * **Prevent unauthorized usage**: Loss or misuse of your API key can result in the overuse of your account's available credits. * **Secure your API key**: Implement proper methods for storing and accessing your `api-key`, especially in production environments. *** # Cursor-based Pagination Some Maestro endpoints use **Cursor-based Pagination to break large datasets into smaller, more manageable responses.** This method is particularly relevant when returning all the data in a single response would be inefficient or slow. * **Improved data integrity and accuracy** when fetching multiple pages. * **Prevents duplicates**, even when new blocks are processed between queries. * **Optimized for infinite scroll**, enabling a smooth user experience by loading content as the user scrolls. When using this method, responses will include a `next_cursor` string. This value should be passed as the `cursor` parameter in your next request to retrieve the next page of results. ## Example * **Initial Response**: When you make an initial API call, the response might include a `"next_cursor": "AAAAAALfeKF8btdzaVvkGaetSS7e1AAF"`. This indicates that there are more results to retrieve. * **Using** `next_cursor`: To get the next page of data, you need to include the `next_cursor` value in your next API request by adding it as a query parameter (`cursor`). * **Modifying the Query**: Append the cursor value to your API request URL, like this: ```none Text theme={null} ?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF ``` * **Result**: The API will return the next set of results when this value is provided. * **End of Data:** If the response includes `"next_cursor": null`, the requested dataset's end has been reached. **Other relevant query parameters are:** | Parameter | Default | Description | | --------- | ------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `count` | `100` | Defines the maximum number of results per pagination page | | `order` | `asc` | Specifies the sort order of the results. Acceptable values are `asc` (ascending) or `desc` (descending). This option is available only for specific endpoints. | **Example** ```sh Curl theme={null} curl -L -X GET 'https://xbt-mainnet.gomaestro-api.org/v0/addresses/bc1q9p8ls7wzwsr8397x6gj92zwm27qlzrhjhahd79/utxos?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF' \ --header 'Accept: application/json' \ --header 'api-key: your-api-key' ``` *** # Computer Credits Maestro uses **Compute Credits** to measure the computational resources consumed by your applications on its platform, similar to traditional cloud providers like Google Cloud or AWS. The number of credits assigned to each operation or method is based on the global average duration of that process, **taking into account factors like complexity and computational intensity.** Learn more about how Compute Credits are allocated by exploring the **Subscription breakdown.** Compute Credits provide a **fair, usage-based pricing model**, meaning you only pay for the computational resources your application actually uses, making it both **cost-efficient** and **flexible**. *** # Request Limits Maestro enforces two types of API rate limits: * **Per day**: a set amount of credits consumed per day based on your [subscription](https://www.gomaestro.org/pricing) plan. * **Per second**: a set amount of requests per second based on your [subscription](https://www.gomaestro.org/pricing) plan. *For example, the ****Artist plan**** supports up to 10 requests per second.* For more details on available packages or to upgrade your plan, refer to the [Pricing page](https://www.gomaestro.org/pricing). If your organization needs higher limits, [contact us](mailto:info@gomaestro.org) to discuss **Enterprise solutions**. *** # Response Headers Maestro includes the following headers in API responses to help manage usage: | Header | Description | | -------------------------------- | ------------------------------------------------------ | | X-RateLimit-Limit-Second | Maximum allowed requests per second. | | **X-RateLimit-Remaining-Second** | **Remaining allowed requests for the current second.** | | X-Maestro-Credits-Limit | Total allowed credits for the day. | | **X-Maestro-Credits-Remaining** | **Remaining credits for the day.** | Be sure to monitor these values (in **bold**) and adjust your request rate accordingly to avoid hitting rate limits. *** # Errors Maestro follows standard HTTP response codes to indicate the success or failure of API requests: | 2xx | Success | | --- | ------------------------------------------------------------ | | 4xx | Client-side errors, such as missing or incorrect parameters. | | 5xx | Server-side errors with Maestro. | Refer to the [API Reference](/general/platform-overview) for detailed response codes for each endpoint. *** # Address Statistics Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/address-statistics bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/statistics Get comprehensive statistics for a Bitcoin address including balance, transaction count, and activity metrics. # BRC20 by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/brc20-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/brc20 Get all BRC-20 token balances and holdings for a specific Bitcoin address with current amounts. # BRC20 Transfer Inscriptions by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/brc20-transfer-inscriptions-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/brc20/transfer_inscriptions Get BRC-20 transfer inscriptions for a Bitcoin address with transfer amounts and token details. # (deprecated) Rune UTxOs by Address and Rune Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/deprecated-rune-utxos-by-address-and-rune bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/runes/{rune} Return all UTxOs controlled by the specified address or script pubkey which contain runes, with the option to filter by a specific rune kind. # Historical Satoshi Balance by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/historical-satoshi-balance-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/balance/historical Get historical Bitcoin balance for an address at specific timestamps or block heights. # Inscription Activity by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/inscription-activity-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/inscriptions/activity Get inscription activity history for a Bitcoin address including creations, transfers, and updates. # Inscriptions by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/inscriptions-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/inscriptions Get all Bitcoin Ordinals inscriptions associated with a specific address, including inscription details and metadata. # Rune Activity by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/rune-activity-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/runes/activity Get Bitcoin Runes activity history for an address including mints, transfers, and burns. # Rune UTxOs by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/rune-utxos-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/runes/utxos Get unspent transaction outputs containing Bitcoin Runes tokens for a specific address. # Runes by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/runes-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/runes Get all Bitcoin Runes tokens held by a specific address, including balances and token metadata. # Satoshi Activity by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/satoshi-activity-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/activity Get comprehensive activity history for a Bitcoin address including transactions, inscriptions, and Runes. # Satoshi Balance by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/satoshi-balance-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/balance Get the current satoshi balance for a specific Bitcoin address, including confirmed and unconfirmed amounts. # Transactions by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/transactions-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/txs Get paginated transaction history for a Bitcoin address with detailed input and output information. # UTxOs by Address Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/addresses/utxos-by-address bitcoin/blockchain-indexer-api/openapi.json get /addresses/{address}/utxos Retrieves all UTXOs associated with a Bitcoin address or script pubkey. Ideal for wallet views, dust filtering, or balance calculations. Can be tailored to exclude certain categories of UTXOs such as those used in metaprotocols. # Block Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/blocks/block-info bitcoin/blockchain-indexer-api/openapi.json get /blocks/{height_or_hash} Get detailed Bitcoin block information by block height or hash including transactions, size, and mining details. # Inscription Activity by Block Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/blocks/inscription-activity-by-block bitcoin/blockchain-indexer-api/openapi.json get /blocks/{height_or_hash}/inscriptions/activity Get inscription activity that occurred within a specific Bitcoin block including new inscriptions and transfers. # Transactions by Block Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/blocks/transactions-by-block bitcoin/blockchain-indexer-api/openapi.json get /blocks/{height_or_hash}/transactions Get all transactions included in a specific Bitcoin block by height or hash with detailed transaction data. # BRC20 Holders Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/brc20/brc20-holders bitcoin/blockchain-indexer-api/openapi.json get /assets/brc20/{ticker}/holders Get list of addresses holding a specific BRC-20 token with their balance amounts and distribution statistics. # BRC20 Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/brc20/brc20-info bitcoin/blockchain-indexer-api/openapi.json get /assets/brc20/{ticker} Get detailed information about a specific BRC-20 token including supply, decimals, and deployment data. # List BRC20 Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/brc20/list-brc20 bitcoin/blockchain-indexer-api/openapi.json get /assets/brc20 Get comprehensive list of all BRC-20 tokens with their metadata, supply, and market information. # Activity by Inscription Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/activity-by-inscription bitcoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id}/activity Get activity history for a specific Bitcoin inscription including transfers, sales, and ownership changes. # Collection Metadata by Collection Symbol Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/collection-metadata-by-collection-symbol bitcoin/blockchain-indexer-api/openapi.json get /assets/collections/{collection_symbol}/metadata Get comprehensive metadata for a Bitcoin inscription collection including description, creator, and attributes. # Collection Metadata by Inscription Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/collection-metadata-by-inscription bitcoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id}/collection Get collection metadata for a Bitcoin inscription including collection name, symbol, and associated traits. # Collection Stats by Collection Symbol Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/collection-stats-by-collection-symbol bitcoin/blockchain-indexer-api/openapi.json get /assets/collections/{collection_symbol}/stats Get statistical data for a Bitcoin inscription collection including floor price, volume, and holder count. # Content by Inscription ID Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/content-by-inscription-id bitcoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id}/content_body Get the raw content data of a Bitcoin inscription including images, text, or other embedded media. # Inscription IDs by Collection Symbol Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/inscription-ids-by-collection-symbol bitcoin/blockchain-indexer-api/openapi.json get /assets/collections/{collection_symbol}/inscriptions Get list of all inscription IDs belonging to a specific Bitcoin inscription collection with pagination support. # Inscription Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/inscription-info bitcoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id} Get detailed information about a specific Bitcoin inscription including content, metadata, and ownership details. # Token Metadata by Inscription Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/inscriptions/token-metadata-by-inscription bitcoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id}/metadata Get comprehensive metadata for a Bitcoin inscription including content type, creator, and associated token information. # Bitcoin - Blockchain Indexer API Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/overview Bitcoin Blockchain Indexer API with real-time UTXO data, rollback protection, and metaprotocol support including BRC20, Runes, and Inscriptions. This API provides core indexer endpoints with support for Bitcoin metaprotocols by delivering real-time, rollback-protected access to Bitcoin's UTXO data, enabling developers to build responsive and reliable blockchain applications without managing complex infrastructure. ## Key Features * **Real-Time Data with Rollback Protection:** Ensures data accuracy by handling chain reorganizations gracefully, providing live data without sacrificing integrity. * **Comprehensive UTXO Indexing:** Specialized pipelines extract, match, and process on-chain information, including handling rollbacks, to provide accurate and up-to-date data. ## Key Benefits for Developers By abstracting the complexities of blockchain data retrieval and processing, Maestro's Bitcoin Indexer API empowers developers to focus on building innovative applications with confidence in fast and reliable access to historical chain data. # Activity by Rune Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/runes/activity-by-rune bitcoin/blockchain-indexer-api/openapi.json get /assets/runes/{rune}/activity Get activity history for a specific Bitcoin Rune including mints, burns, and transfer transactions. # Holders by Rune Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/runes/holders-by-rune bitcoin/blockchain-indexer-api/openapi.json get /assets/runes/{rune}/holders Get list of addresses holding a specific Bitcoin Rune token with their balance amounts and distribution data. # List Runes Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/runes/list-runes bitcoin/blockchain-indexer-api/openapi.json get /assets/runes Get comprehensive list of Bitcoin Runes tokens with metadata, supply information, and trading statistics. # Runes Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/runes/runes-info bitcoin/blockchain-indexer-api/openapi.json get /assets/runes/{rune} Get detailed information about a specific Bitcoin Rune including supply, divisibility, and metadata. # UTxOs by Runes Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/runes/utxos-by-runes bitcoin/blockchain-indexer-api/openapi.json get /assets/runes/{rune}/utxos Get unspent transaction outputs containing a specific Bitcoin Rune token with amounts and holder information. # Inscription Activity by Transaction Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/transactions/inscription-activity-by-transaction bitcoin/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/inscriptions/activity Get inscription activity and metadata for Bitcoin inscriptions within a specific transaction. # Transaction Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/transactions/transaction-info bitcoin/blockchain-indexer-api/openapi.json get /transactions/{tx_hash} Get detailed Bitcoin transaction information including inputs, outputs, fees, and confirmation status by transaction hash. # Transaction Info with Metaprotocols Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/transactions/transaction-info-with-metaprotocols bitcoin/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/metaprotocols Get Bitcoin transaction information with metaprotocol data including Runes, Inscriptions, and BRC-20 token activities. # Transaction Output Info Source: https://docs.developer.gomaestro.org/bitcoin/blockchain-indexer-api/transactions/transaction-output-info bitcoin/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/outputs/{output_index} Get detailed information about a specific output of a Bitcoin transaction including value and scripts. # Changelog Source: https://docs.developer.gomaestro.org/bitcoin/changelog Bitcoin API changelog with version updates, new features, improvements, and breaking changes for Maestro's Bitcoin services. ## Added **New Indexer Endpoints** `/assets/collections/{collection_symbol}/stats` * Collection Stats by Collection Symbol `/transactions/{tx_hash}/metaprotocols` * Transaction Info with Metaprotocols **New Market Price API Endpoints** `/markets/btc/prices/batch` * Fetch BTC prices by timestamp `/btc/prices/{timestamp}` * Fetch BTC price by timestamp **New Mempool API Endpoints** `/mempool/transactions/{tx_hash}/metaprotocols` * Transaction Info with Metaprotocols (Mempool-aware) **New Wallet API Endpoints** `/wallet/addresses/{address}/activity` * Wallet Satoshi Activity by Address (Mempool-aware) `/wallet/addresses/{address}/activity/metaprotocols` * Metaprotocol Activity by Address `/wallet/addresses/{address}/balance/historical` * Historical Satoshi Balance by Address `/wallet/addresses/{address}/inscriptions/activity` * Inscription Activity by Address (Mempool-aware) `/wallet/addresses/{address}/runes/activity` * Rune Activity by Address (Mempool-aware) `/wallet/addresses/{address}/statistics` * Address Statistics (Mempool-aware) ## Added **New Indexer Endpoints** `/addresses/{address}/brc20/transfer_inscriptions` * List of all BRC-20 transfer inscriptions at a specific address **New Market Price API Endpoints** `/markets/dexs` * List of all available DEXes `/markets/dexs/ohlc/{dex}/{symbol}` * Historical market activity (in candlestick OHLC format) for a specific DEX and Rune `/markets/dexs/trades/{dex}/{symbol}` * Historical trades with price (in satoshis) for a specific DEX and Rune `/markets/runes` * List of available Rune registries ## Added **New Indexer Endpoints** `/addresses/{address}/balance` * Total Bitcoin balance (in Satoshi) at specified address `/transactions/{tx_hash}/outputs/{output_index}` * UTXO information including metaprotocol data `/addresses/{address}/txs` * new confirmation filter in Transasction by address **New Mempool-Aware Endpoints** \`/mempool/addresses/\{address}/balance * Total Bitcoin balance (in Satoshi) at specified address `/mempool/assets/runes/{rune}/holders` * Total Runes balance at specified address ## Added **New Collection Endpoints** `/assets/collections/{collection_symbol}/inscriptions` * Inscription IDs by Collection Symbol `/assets/collections/{collection_symbol}/metadata` * Collection Metadata by Collection Symbol `/assets/inscriptions/{inscription_id}/collection` * Collection Metadata by Inscription **New Inscription Endpoints** `/assets/inscriptions/{inscription_id}/activity` * List of all transactions that the inscription was involved in, starting with the reveal tx. `/assets/inscriptions/{inscription_id}/metadata` * Metadata specific to an inscription. **New Block Endpoints** `/blocks/{height_or_hash}` * Information about a block, including a flag to indicate if it involved metaprotocols. `/blocks/{height_or_hash}/transactions` * List of transactions in the block, providing overall information for each. **New Transaction Endpoints** `/transactions/{tx_hash}` * Information about a transaction, including a flag to indicate if the transaction involved metaprotocols. `/transactions/{tx_hash}/metaprotocols` * Information about a transaction, including info about metaprotocols in inputs and outputs. **New Mempool Block Fee Rates Endpoint** `/mempool/fee_rates` * Statistics regarding fee rates of transactions within estimated mempool blocks **New RPC Endpoints** `/block/recent` * Recent block info" `/transaction/batch` * Transaction info batch by hash array `/transaction/hex` * Transaction info by hex `/transaction/recent` * Recent transactions ## Improved **Updated Runes and Inscription Info endpoints** `/assets/inscriptions/{inscription_id}` * Updates response schema. Backward compatible `/assets/runes/{rune}` * removed field: `data.total_utxos` **Updated Inscription Activity Endpoints** `/blocks/{height_or_hash}/inscriptions/activity` * Updates response schema. Backward compatible `/transactions/{tx_hash}/inscriptions/activity` * Updates response schema. Backward compatible **Updated Mempool Block Limit** `/mempool/addresses/{address}/runes` * Changed mempool\_blocks\_limit in query `/mempool/addresses/{address}/utxos` * Changed mempool\_blocks\_limit in query ## Added **New Inscription Activity Endpoints** `/blocks/{height_or_hash}/inscriptions/activity` * List of all inscription activity in the block `/transactions/{tx_hash}/inscriptions/activity` * List of all inscription activity in a transaction **New Block Volume and Miner Info** `/block/{height_or_hash}/miner` * Block Miner information `/block/{height_or_hash}/volume` * Block volume in Satoshis **New Transaction Decode Endpoint** `rpc/transaction/decode` * Decode Raw transaction **New Recent Transactions Endpoint** `rpc/transaction/recent/{count}` * List of ordered recent transactions ## Improved **Updated path url for PSBT Decode Endpoint** `/transaction/psbt/decode` * Decode PSBT transaction ## Added **New Inscription Endpoints** `/addresses/{address}/inscriptions` * List of all inscriptions which reside at a specific address of script pubkey `/assets/inscriptions/{inscription_id}` * Information about an inscription `/assets/inscriptions/{inscription_id}/content_body` * Paginated response of inscription content body byte array ## Improved **Node RPC moved to dedicated folder** `/rpc/block/*` * endpoints moved to Node RPC folder `/rpc/mempool/*` * endpoints moved to Node RPC folder `/rpc/transaction/*` * endpoints moved to Node RPC folder *** ## Added **Filter UTxO without Runes and Inscriptions** `/addresses/{address}/utxos` * `exclude_metaprotocols` flag to allow excluding metaprotocol UTxOs in Runes and inscriptions. To use, append the full query parameter `?exclude_metaprotocols=true` ## Improved **Divisibility field added to represent Runes fractional balances.** * `/assets/runes/{rune}/holders` * `/assets/runes/{rune}` * `/addresses/{address}/runes/{rune}` * `/addresses/{address}/runes` * `/assets/runes/{rune}/utxos` ## Added **Adding Runes Circulating supply** `/assets/runes/{rune}`; * Added `circulating_supply` to provide the current amount of a specific Rune in circulation. *** ## Added **Ignore dust UTxO filter** `/addresses/{address}/utxos` * Added the `filter_dust_threshold` option to ignore UTxOs below a specified number of satoshis. # Address Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/addresses/address bitcoin/esplora-api/openapi.json get /address/{address} Get detailed information about a Bitcoin address including balance, transaction count, and UTXO statistics. # Address Transactions Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/addresses/address-transactions bitcoin/esplora-api/openapi.json get /address/{address}/txs Get complete transaction history for a Bitcoin address including both confirmed and mempool transactions. # Address Transactions Chain Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/addresses/address-transactions-chain bitcoin/esplora-api/openapi.json get /address/{address}/txs/chain Get paginated confirmed transaction history for a Bitcoin address excluding mempool transactions. # Address Transactions Mempool Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/addresses/address-transactions-mempool bitcoin/esplora-api/openapi.json get /address/{address}/txs/mempool Get unconfirmed transactions for a Bitcoin address currently in the mempool awaiting confirmation. # Address UTXOs Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/addresses/address-utxos bitcoin/esplora-api/openapi.json get /address/{address}/utxo Get all unspent transaction outputs (UTXOs) for a specific Bitcoin address with values and confirmations. # Block Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block bitcoin/esplora-api/openapi.json get /block/{hash} Get detailed information about a specific Bitcoin block including header data, transactions, and statistics. # Block Header Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-header bitcoin/esplora-api/openapi.json get /block/{hash}/header Get the raw block header data for a Bitcoin block in hexadecimal format for protocol-level analysis. # Block Height Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-height bitcoin/esplora-api/openapi.json get /block-height/{height} Get the block hash for a Bitcoin block at a specific height in the blockchain. # Block Raw Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-raw bitcoin/esplora-api/openapi.json get /block/{hash}/raw Get the raw binary data of a Bitcoin block in hexadecimal format for parsing and analysis. # Block Status Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-status bitcoin/esplora-api/openapi.json get /block/{hash}/status Get confirmation status and chain position information for a specific Bitcoin block. # Block Tip Hash Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-tip-hash bitcoin/esplora-api/openapi.json get /blocks/tip/hash Get the hash of the current Bitcoin block at the tip of the longest chain. # Block Tip Height Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-tip-height bitcoin/esplora-api/openapi.json get /blocks/tip/height Get the current height of the latest Bitcoin block at the tip of the blockchain. # Block Transaction ID Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-transaction-id bitcoin/esplora-api/openapi.json get /block/{hash}/txid/{index} Get transaction ID at a specific index position within a Bitcoin block for direct transaction access. # Block Transaction IDs Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/block-transaction-ids bitcoin/esplora-api/openapi.json get /block/{hash}/txids Get list of all transaction IDs included in a specific Bitcoin block for efficient block analysis. # Blocks Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/blocks bitcoin/esplora-api/openapi.json get /blocks/{start_height} Get list of Bitcoin blocks starting from a specific height with pagination support for blockchain exploration. # Get block transactions Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/blocks/get-block-transactions bitcoin/esplora-api/openapi.json get /block/{hash}/txs/{start_index} Get paginated list of transactions in a Bitcoin block starting from a specific index position. # Mempool Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/mempool/mempool bitcoin/esplora-api/openapi.json get /mempool Get current Bitcoin mempool statistics including transaction count, fees, and memory usage. # Mempool Recent Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/mempool/mempool-recent bitcoin/esplora-api/openapi.json get /mempool/recent Get list of recently submitted Bitcoin transactions in the mempool ordered by arrival time. # Mempool Transaction IDs Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/mempool/mempool-transaction-ids bitcoin/esplora-api/openapi.json get /mempool/txids Get list of all Bitcoin transaction IDs currently in the mempool awaiting confirmation. # Bitcoin - Esplora API Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/overview The Bitcoin Esplora API offers fast, read-optimized access to Bitcoin blockchain data—covering blocks, transactions, addresses, mempool state, UTXOs, fees, and more. Based on the widely adopted Esplora interface from [Blockstream](https://blockstream.com), it is designed for developers building explorers, wallets, payment processors, or analytics platforms who need structured blockchain data without managing their own indexing infrastructure. With this API, you can retrieve address information, trace transaction statuses, monitor mempool activity, and fetch granular data like outspend status, block headers, and raw binary or hex representations of transactions and blocks. ## Key Features * **Address-Level Insights**: Retrieve balances, chain statistics, mempool stats, UTXOs, and complete transaction history (confirmed and unconfirmed) for any Bitcoin address. * **Block Data Access**: Get full block metadata, transaction IDs, raw blocks, block headers, status, and block ranges by height or hash. * **Transaction Lookups**: Query full transaction details, hex serialization, raw binary data, merkle proofs, outspend data, and RBF timelines. * **Mempool Monitoring**: Access mempool statistics, transaction IDs, recent transactions, and fee distribution histograms. * **Broadcast Transactions**: Push signed transactions to the Bitcoin network in raw hex format for propagation. * **Multi-Network Support**: Available on both Bitcoin Mainnet and Testnet environments. ## Key Benefits for Developers The Esplora API allows developers to access production-grade Bitcoin blockchain data with low latency and without the operational overhead of running a full archival node or Esplora indexer. Its familiar, REST-friendly endpoints return well-structured JSON, making it straightforward to plug into existing applications, trading systems, or analytics pipelines. Whether you need real-time mempool monitoring, forensic transaction analysis, or historical block data, this API delivers a complete toolkit for Bitcoin-powered development across both test and production environments. Refer to Maestro's [Mempool.space Migration Guide](../tutorials-and-guides/mempool-space-migration-guide) for a comprehensive resource to assist in replacing your existing Esplora provider with Maestro for the same functionality and supported interface at a fraction of the cost. # Transaction Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction bitcoin/esplora-api/openapi.json get /tx/{txid} Get detailed information about a specific Bitcoin transaction including inputs, outputs, and fees. # Transaction Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-1 bitcoin/esplora-api/openapi.json post /tx Broadcast a signed Bitcoin transaction to the network for confirmation and inclusion in the blockchain. # Transaction Hex Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-hex bitcoin/esplora-api/openapi.json get /tx/{txid}/hex Get the raw hexadecimal representation of a Bitcoin transaction for parsing and analysis. # Transaction Merkle Proof Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-merkle-proof bitcoin/esplora-api/openapi.json get /tx/{txid}/merkle-proof Get Merkle proof for a Bitcoin transaction to verify its inclusion in a specific block. # Transaction Merkleblock Proof Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-merkleblock-proof bitcoin/esplora-api/openapi.json get /tx/{txid}/merkleblock-proof Get Merkle block proof for a Bitcoin transaction in serialized format for SPV verification. # Transaction Outspend Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-outspend bitcoin/esplora-api/openapi.json get /tx/{txid}/outspend/{vout} Get information about how a specific Bitcoin transaction output was spent in subsequent transactions. # Transaction Outspends Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-outspends bitcoin/esplora-api/openapi.json get /tx/{txid}/outspends Get information about how all outputs of a Bitcoin transaction were spent in subsequent transactions. # Transaction Raw Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-raw bitcoin/esplora-api/openapi.json get /tx/{txid}/raw Get the raw hex-encoded Bitcoin transaction data for a specific transaction ID. # Transaction RBF Timeline Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-rbf-timeline bitcoin/esplora-api/openapi.json get /tx/{txid}/rbf Get Replace-by-Fee (RBF) timeline and history for a Bitcoin transaction including fee bumps and replacements. # Transaction Status Source: https://docs.developer.gomaestro.org/bitcoin/esplora-api/transactions/transaction-status bitcoin/esplora-api/openapi.json get /tx/{txid}/status Get the confirmation status of a Bitcoin transaction including block height and confirmation count. # Get Event Log Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/logs/get-event-log bitcoin/event-manager-api/openapi.json get /logs/{id} Get detailed information about a specific Bitcoin event log by its ID including trigger data and execution details. # List Event Logs Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/logs/list-event-logs bitcoin/event-manager-api/openapi.json get /logs Get list of all event logs from Bitcoin event triggers with filtering and pagination options. # Bitcoin - Event Manager API Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/overview Bitcoin Event Manager API for real-time blockchain monitoring with programmable webhooks, granular triggers, and customizable event notifications. Maestro's Bitcoin Event Manager API provides a programmable webhook infrastructure for tracking Bitcoin events like transactions, address activity, and related on-chain changes. It allows developers to configure event managers and attach triggers that define what blockchain events to listen for, delivering relevant data to a specified webhook in real time. This API is ideal for alerting systems, real-time monitoring dashboards, and backend processes that need to react to blockchain state changes. ## Key Features * **Granular Triggers**: Set up address-based triggers for sender, receiver, or transaction events with optional filters for additional precision. * **Real-Time Webhook Delivery**: Events are pushed to your provided webhook URL the moment matching transactions are detected. * **Structured Logging**: Access detailed logs for each event fired, including payload, status, and webhook response. * **Flexible Lifecycle Control**: Fully manage, update, or delete event managers and their triggers via API endpoints. ## Key Benefits for Developers Developers can automate transaction monitoring and event handling without running full nodes or maintaining custom indexers. The Event Manager API streamlines webhook setup for Bitcoin applications, enabling responsive, event-driven architectures. The Event Manager API is especially valuable for wallet notifications, transaction confirmations, backend synchronization, and building reactive user experiences without polling the chain. # Create Trigger Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/create-trigger bitcoin/event-manager-api/openapi.json post /triggers Create a new event trigger to monitor Bitcoin blockchain events with customizable filters and webhook notifications. # Delete Trigger Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/delete-trigger bitcoin/event-manager-api/openapi.json delete /triggers/{id} Delete a Bitcoin event trigger by its ID to stop receiving notifications for the configured conditions. # Get Trigger Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/get-trigger bitcoin/event-manager-api/openapi.json get /triggers/{id} Get detailed information about a specific Bitcoin event trigger by its ID including conditions and actions. # List Trigger Condition Options Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/list-trigger-condition-options bitcoin/event-manager-api/openapi.json get /triggers/trigger-condition-options Get list of available trigger condition options for creating Bitcoin event triggers with supported parameters. # List Triggers Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/list-triggers bitcoin/event-manager-api/openapi.json get /triggers List all active event triggers configured for your account, with details about filters, webhooks, and trigger status. # Update Trigger Source: https://docs.developer.gomaestro.org/bitcoin/event-manager-api/triggers/update-trigger bitcoin/event-manager-api/openapi.json put /triggers/{id} Update an existing Bitcoin event trigger with new conditions, actions, or configuration parameters. # Overview Source: https://docs.developer.gomaestro.org/bitcoin/index Bitcoin blockchain APIs and services from Maestro. Access Blockchain Indexer, Event Manager, Market Price feeds, and more for Bitcoin development. The **Bitcoin blockchain** is the original decentralized ledger that powers peer-to-peer transactions without needing a trusted third party. Bitcoin uses a [**Proof-of-Work (PoW)**](https://en.wikipedia.org/wiki/Proof_of_work) consensus mechanism to validate and record transactions, offering robust security and transparency. As the most widely recognized and utilized cryptocurrency, Bitcoin has become a cornerstone of the digital financial landscape. *** ## Available Services Maestro provides the following services, accessible across multiple Bitcoin networks:               ## Available Networks The service is available on the following Bitcoin networks: | ***Network*** | ***Base URL*** | | ------------- | ------------------------------------------ | | **Mainnet** | `https://xbt-mainnet.gomaestro-api.org/v0` | | **Testnet4** | `https://xbt-testnet.gomaestro-api.org/v0` | The Maestro API is currently versioned at `v0`. When making a query, `v0 `must be included in your base URL. # Rune OHLC data Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/dex/rune-ohlc-data bitcoin/market-price-api/openapi.json get /dexs/ohlc/{dex}/{symbol} Get OHLC (Open, High, Low, Close) price data for Bitcoin Runes trading pairs on DEXs with historical candles. # Rune Registry Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/dex/rune-registry bitcoin/market-price-api/openapi.json get /runes Get comprehensive registry of all Bitcoin Runes available for trading with metadata and market information. # Rune Trades for DEX Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/dex/rune-trades-for-dex bitcoin/market-price-api/openapi.json get /dexs/trades/{dex}/{symbol} Get recent trade data for Bitcoin Runes on a specific DEX with price, volume, and transaction details. # Supported DEX options Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/dex/supported-dexs bitcoin/market-price-api/openapi.json get /dexs Get list of all supported Bitcoin DEXs for Runes trading with their metadata and trading pairs. # Bitcoin - Market Price API Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/overview Maestro’s Market Price API delivers real-time, rollback-protected DEX trading activity alongside historical price mapping for both Bitcoin and Rune assets in USD. It combines deep network-level indexing with robust trade tracking, abstracting away the complexity of UTXO handling. ## Key Features * **Mempool Awareness:** Provides insight into the latest trades from the mempool for the most dynamic price discovery. * **Multi-DEX Support:** Query data from supported decentralized exchanges—including Magic Eden and Dotswap—individually or in aggregate. * **Rollback Protection:** Ensures price accuracy by tracking chain reorganizations and updating data accordingly—no stale or orphaned block data. * **Dual-Pipeline Indexing:** Separately indexes UTXOs and trades for accuracy and real-time responsiveness. * **Real-Time DEX Price Feeds:** Continuously updated trade and price data, optimized for wallets, traders, and analytics platforms. * **Historical Price Mapping:** Access time-series price data (USD) for both Bitcoin and Rune assets, enabling historical analysis and charting. ## Key Benefits for Developers * Track accurate, chain-verified prices without maintaining your own indexers. * Build DEX-integrated wallets and apps with reliable, real-time market signals. * Identify and act on price trends immediately, with confidence the data won’t be invalidated by reorgs. # BTC price by timestamp Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/prices/btc-price-by-timestamp bitcoin/market-price-api/openapi.json get /prices/{timestamp} Get historical Bitcoin price data at a specific timestamp for market analysis and portfolio tracking. # BTC prices by timestamp Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/prices/btc-prices-by-timestamp bitcoin/market-price-api/openapi.json post /prices/batch Get Bitcoin prices for multiple timestamps in a single batch request for historical price analysis. # Rune price by timestamp Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/prices/rune-price-by-timestamp bitcoin/market-price-api/openapi.json get /prices/runes/{rune_id}/{timestamp} Get historical price data for a specific Bitcoin Rune at a particular timestamp for market analysis. # Rune prices by timestamp Source: https://docs.developer.gomaestro.org/bitcoin/market-price-api/prices/rune-prices-by-timestamp bitcoin/market-price-api/openapi.json post /prices/runes/batch Get historical price data for multiple Bitcoin Runes at specific timestamps in a single batch request. # Rune UTxOs by Address (mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/addresses/rune-utxos-by-address-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/addresses/{address}/runes/utxos Get Bitcoin Runes UTXOs for an address with mempool awareness including pending Runes transactions. # Runes by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/addresses/runes-by-address-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/addresses/{address}/runes Get Bitcoin Runes holdings for an address with mempool awareness including pending Runes transactions. # Satoshi Balance by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/addresses/satoshi-balance-by-address-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/addresses/{address}/balance Get Bitcoin address balance with mempool awareness including pending transactions and real-time updates. # UTxOs by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/addresses/utxos-by-address-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/addresses/{address}/utxos Get UTXOs for a Bitcoin address with real-time mempool awareness including pending transactions. # Mempool Block Fee Rates Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/general/mempool-block-fee-rates bitcoin/mempool-monitoring-api/openapi.json get /mempool/fee_rates Get current Bitcoin mempool fee rates across different confirmation targets for optimal transaction pricing. # Bitcoin - Mempool Monitoring API Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/overview Maestro's Bitcoin Mempool Monitoring API offers core indexer endpoints with mempool awareness, providing real-time visibility into unconfirmed transactions, enabling developers to build responsive, fee-optimized, and mempool-aware applications without managing their own node infrastructure. ## Key Features * **Real-Time Transaction Monitoring:** Track unconfirmed transactions instantly as they enter the mempool, providing immediate insights for enhanced user experience. * **Optimal Fee Estimation:** Analyze current mempool conditions to help users set appropriate transaction fees, ensuring timely confirmations and cost efficiency. * **Network Health Analysis:** Monitor mempool size and state to detect network congestion and anomalies, aiding in informed decision-making regarding transaction timing. * **Custom Transaction Selection for Miners:** Utilize mempool data to prioritize transactions with higher fees, maximizing profits during block construction. * **Global Mempool Synchronization:** Access a unified view of Bitcoin's mempool by aggregating data from multiple nodes worldwide, providing comprehensive network coverage and reducing regional blind spots. ## Global Mempool Infrastructure Maestro's Global Mempool Sync infrastructure connects to multiple Bitcoin nodes across different geographic regions to provide a unified, comprehensive view of the Bitcoin mempool. This advanced synchronization system offers: * **Multi-Node Aggregation:** Collects mempool data from geographically distributed Bitcoin nodes. * **Enhanced Network Coverage:** Provides a more complete picture of unconfirmed transactions across the network. * **Reduced Blind Spots:** Eliminates regional mempool inconsistencies for accurate global transaction visibility. * **Real-Time Synchronization:** Continuously updates the unified mempool state for optimal accuracy. **Performance Benchmark:** Maestro's Global Mempool infrastructure delivers on average a **5x+ increase** in the number of Bitcoin mempool transactions that can be indexed compared to traditional single-node approaches, ensuring comprehensive network coverage and superior data accuracy. ### Global Transaction Propagation The [Transaction Propagator](/bitcoin/mempool-monitoring-api/transactions/transaction-propagator) endpoint leverages this infrastructure to broadcast transactions to a globally distributed network of peers. This ensures: * **Faster Network Propagation:** Transactions reach miners worldwide more quickly. * **Enhanced Reliability:** Multi-node broadcasting reduces the risk of transaction delays or failures. * **Global Visibility:** Immediate visibility across different geographic regions for optimal confirmation times. ## Key Benefits for Developers Developers can enhance their applications and improve user experience through real-time blockchain insights and optimized transaction processing. This infrastructure ensures developers have access to the most comprehensive and accurate mempool data available, enabling better decision-making for fee estimation, transaction timing, and network analysis. # Holders by Rune (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/runes/holders-by-rune-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/assets/runes/{rune}/holders Get Bitcoin Runes holders with mempool awareness including pending transfers and real-time balance updates. # Transaction Info with Metaprotocols (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/transactions/transaction-info-with-metaprotocols-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/transactions/{tx_hash}/metaprotocols Get Bitcoin transaction information with metaprotocol data including Runes and inscriptions, mempool-aware. # Transaction Output Info (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/transactions/transaction-output-info-mempool-aware bitcoin/mempool-monitoring-api/openapi.json get /mempool/transactions/{tx_hash}/outputs/{output_index} Get Bitcoin transaction output information with mempool awareness including pending and confirmed states. # Transaction Propagator Source: https://docs.developer.gomaestro.org/bitcoin/mempool-monitoring-api/transactions/transaction-propagator bitcoin/mempool-monitoring-api/openapi.json post /mempool/transactions/send Propagates a hex-encoded transaction to a globally distributed network of peers using Maestro's Global Mempool (MGM) system. # Block Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/block-info bitcoin/node-rpc-api/openapi.json get /block/{height_or_hash} Get comprehensive information about a specific Bitcoin block by height or hash including all transaction details. # Block Miner Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/block-miner-info bitcoin/node-rpc-api/openapi.json get /block/{height_or_hash}/miner Get miner information for a specific Bitcoin block including mining pool and coinbase transaction details. # Block Range Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/block-range-info bitcoin/node-rpc-api/openapi.json get /block/range/{start_height}/{end_height} Get information about a range of Bitcoin blocks between specified start and end heights for historical analysis. # Block Volume Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/block-volume bitcoin/node-rpc-api/openapi.json get /block/{height_or_hash}/volume Get Bitcoin block transaction volume data including total value transferred and fee information for the specified block. # Latest Block Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/latest-block bitcoin/node-rpc-api/openapi.json get /block/latest Get detailed information about the latest confirmed Bitcoin block including transactions and metadata. # Latest Block Height Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/latest-block-height bitcoin/node-rpc-api/openapi.json get /block/latest/height Get the current Bitcoin blockchain height (block number) at the chain tip for quick synchronization checks. # Recent Block Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/recent-block-info bitcoin/node-rpc-api/openapi.json get /block/recent Get information about the most recent Bitcoin blocks with default configuration for blockchain monitoring. # Recent Block Info Count Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/blocks/recent-block-info-count bitcoin/node-rpc-api/openapi.json get /block/recent/{count} Get information about the most recent Bitcoin blocks with configurable count limit for blockchain analysis. # Blockchain Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/general/blockchain-info bitcoin/node-rpc-api/openapi.json get /general/info Get Bitcoin blockchain general information including network stats, block height, difficulty, and node status. # Mempool Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/mempool/mempool-info bitcoin/node-rpc-api/openapi.json get /mempool/info Get Bitcoin mempool information including size, bytes, usage, and fee statistics for transaction queue management. # Mempool Transaction Ancestors Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/mempool/mempool-transaction-ancestors bitcoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash}/ancestors Get ancestor transactions of a specific Bitcoin transaction in the mempool for dependency analysis. # Mempool Transaction Descendants Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/mempool/mempool-transaction-descendants bitcoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash}/descendants Get descendant transactions of a specific Bitcoin transaction in the mempool for dependency tracking. # Mempool Transaction Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/mempool/mempool-transaction-info bitcoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash} Get detailed information about a specific Bitcoin transaction in the mempool including fees and dependencies. # Mempool Transactions Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/mempool/mempool-transactions bitcoin/node-rpc-api/openapi.json get /mempool/transactions Get comprehensive list of all transactions currently in the Bitcoin mempool with detailed transaction information. # Bitcoin - Node RPC API Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/overview Bitcoin Node RPC API for direct blockchain access with low-latency mempool queries, transaction broadcasting, and full JSON-RPC protocol support. This API offers direct, low-latency access to Bitcoin full nodes via API (JSON-RPC protocol), giving developers reliable mempool visibility, transaction relay capabilities, and chain data without the hassle of running their own infrastructure. ## Key Features * **Full JSON-RPC Support:** Access core Bitcoin functionality through RPC calls like getblock, getrawtransaction, sendrawtransaction, etc. * **Blockchain Data Retrieval:** Developers can fetch detailed information about blocks, transactions, and addresses. * **Mempool Insight:** Query unconfirmed transactions for faster, more responsive, real-time data access. * **High-Availability:** Enterprise-grade infrastructure ensures uptime, sync accuracy and fast transaction relay. ## Key Benefits for Developers * Skip the operational complexity and computational overhead of maintaining self-hosted Bitcoin nodes. * Query mempool and chain data to power wallets, explorers, and backends with minimal latency. * Broadcast and verify transactions with trusted relay endpoints. * Build production-ready Bitcoin apps without worrying about node health, bandwidth, or reorg handling. # Decode PSBT Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/decode-psbt bitcoin/node-rpc-api/openapi.json post /transaction/psbt/decode Decode a Partially Signed Bitcoin Transaction (PSBT) to analyze inputs, outputs, and signing requirements. # Decode Transaction Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/decode-transaction bitcoin/node-rpc-api/openapi.json post /transaction/decode Decode a raw Bitcoin transaction hex string to analyze inputs, outputs, and transaction structure. # Estimate Fee Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/estimate-fee bitcoin/node-rpc-api/openapi.json get /transaction/estimatefee/{blocks} Estimate Bitcoin transaction fee for confirmation within a specified number of blocks for optimal pricing. # Recent Transactions Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/recent-transactions bitcoin/node-rpc-api/openapi.json get /transaction/recent Get list of recent Bitcoin transactions from the blockchain with transaction details and metadata. # Recent Transactions Count Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/recent-transactions-count bitcoin/node-rpc-api/openapi.json get /transaction/recent/{count} Get a specified number of recent Bitcoin transactions from the blockchain with configurable limit. # Send Transaction Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/send-transaction bitcoin/node-rpc-api/openapi.json post /transaction/submit Submit a signed Bitcoin transaction to the network for processing and inclusion in the blockchain. # Transaction Hex Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/transaction-hex bitcoin/node-rpc-api/openapi.json get /transaction/{tx_hash}/hex Get the raw hex-encoded Bitcoin transaction data by transaction hash for low-level transaction analysis. # Transaction Info Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/transaction-info bitcoin/node-rpc-api/openapi.json get /transaction/{tx_hash} Get detailed Bitcoin transaction information including inputs, outputs, fees, and confirmation status by transaction hash. # Transaction Info Batch Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/transaction-info-batch bitcoin/node-rpc-api/openapi.json post /transaction/batch Get detailed information for multiple Bitcoin transactions in a single batch request for efficient processing. # Transaction Info Hex Source: https://docs.developer.gomaestro.org/bitcoin/node-rpc-api/transactions/transaction-info-hex bitcoin/node-rpc-api/openapi.json post /transaction/hex Get Bitcoin transaction information from raw hexadecimal transaction data for detailed analysis. # Open Source Tools Source: https://docs.developer.gomaestro.org/bitcoin/open-source-tools Explore Maestro's open-source Bitcoin infrastructure tools including our MCP server, Symphony indexer, Esplora proxy, and metaprotocols canister. At Maestro, we believe in the power of open source to accelerate Bitcoin development and foster innovation across the ecosystem. Our commitment to open source extends beyond just providing APIs—we actively contribute tools, libraries, and infrastructure that help developers build faster and more efficiently on Bitcoin. ### **Maestro MCP Server** A [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that enables AI language models to interact directly with Bitcoin blockchain data through natural language. Perfect for building Bitcoin agents and AI-powered applications. * **Repository**: [maestro-mcp-server](https://github.com/maestro-org/maestro-mcp-server) * **Key Features**: Streamable HTTP MCP server, API key authentication, multi-API support * **Use Cases**: AI agents, LLM-powered Bitcoin applications, conversational blockchain interfaces * **Networks**: Bitcoin mainnet and testnet4 * **Tutorial**: [MCP: Interact with Bitcoin via an LLM](/bitcoin/tutorials-and-guides/mcp-interact-with-bitcoin-via-an-llm) ### **Maestro MCP Client Examples** Ready-to-use client implementations and examples for integrating the Maestro MCP server with popular AI platforms and development tools. * **Repository**: [maestro-mcp-client-examples](https://github.com/maestro-org/maestro-mcp-client-examples) * **Supported Clients**: Claude Desktop, Cursor IDE, basic HTTP clients * **Key Features**: Drop-in configurations, authentication handling, debugging tools * **Documentation**: Complete setup guides for each supported platform ### **Maestro Symphony** A fast, mempool-aware, and extensible Bitcoin indexer and API server. Symphony provides a framework for indexing UTXOs, metaprotocols, and any other onchain activity with custom indexing capabilities and continuously updated state snapshots for reducing node sync times. * **Repository**: [maestro-symphony](https://github.com/maestro-org/maestro-symphony) * **Key Features**: Custom indexers, mempool awareness, rollback handling, extensible framework * **Built-in Indexers**: Runes, UTXOs by address, transaction counts * **Networks**: Bitcoin mainnet, testnet4, and regtest * **Tutorial**: * [How to Add a Custom Index in Maestro Symphony](/bitcoin/tutorials-and-guides/how-to-add-a-custom-index-in-maestro-symphony) * [How to Use Pre-Synced Snapshots in Maestro Symphony](/bitcoin/tutorials-and-guides/how-to-use-pre-synced-snapshots-in-maestro-symphony) ### **Maestro Esplora Proxy** An authenticated proxy server that enables BDK (Bitcoin Development Kit) applications and other Esplora clients to seamlessly connect to Maestro's [Esplora API](/bitcoin/esplora-api/overview) with automatic API key injection. * **Repository**: [maestro-esplora-proxy](https://github.com/maestro-org/maestro-esplora-proxy) * **Key Features**: Transparent API key injection, BDK compatibility, local proxy server * **Use Cases**: BDK wallet integration, [Mempool.space](https://mempool.space) migration * **Tutorial**: [Mempool.space Migration Guide](/bitcoin/tutorials-and-guides/mempool-space-migration-guide) ### **Bitcoin Metaprotocols Canister** An [Internet Computer](https://internetcomputer.org/) (ICP) canister that provides indexing services for Bitcoin metaprotocols, specifically focused on Bitcoin inscriptions and ordinals data. * **Repository**: [maestro-bitcoin-metaprotocols-canister](https://github.com/maestro-org/maestro-bitcoin-metaprotocols-canister) * **Key Features**: Address inscriptions lookup, UTXO inscriptions and collection metadata * **Integration**: Leverages Maestro's APIs for Bitcoin metaprotocol data * **Platform**: Internet Computer Protocol (ICP) * **Tutorial**: [Metaprotocols Canister Usage Guide](/bitcoin/tutorials-and-guides/metaprotocols-canister-usage-guide) ## Community & Collaboration ### **Developer Resources** All our open-source projects include: * 📚 Comprehensive documentation and setup guides * 🛠️ Working examples and tutorials * 🐛 Issue tracking and community support * 📄 Open source licenses (Apache 2.0) ### **Getting Involved** We welcome contributions from the global developer community: * **Star our repositories** to stay updated on new releases * **Submit issues** for bugs, feature requests, or questions * **Contribute code** through pull requests * **Join our Discord** for real-time community support * **Share your projects** built with Maestro's open-source tools. *** Open source is fundamental to Bitcoin's ethos of decentralization, transparency, and community-driven innovation. By contributing our tools and infrastructure to the open-source ecosystem, we help: * **Lower barriers to entry** for Bitcoin developers * **Accelerate innovation** through shared tools and libraries * **Build trust** through transparent, auditable code * **Foster collaboration** across the Bitcoin development community * **Enable customization** for specific use cases and requirements Join us in building the future of Bitcoin infrastructure. Explore our repositories, contribute to our projects, and help us create better tools for the entire Bitcoin ecosystem. # SDKs Source: https://docs.developer.gomaestro.org/bitcoin/sdks Bitcoin SDKs and client libraries for multiple programming languages to integrate Maestro's Bitcoin APIs into your applications. Maestro is dedicated to empowering developer communities by offering SDKs in multiple programming languages. We continually expand and refine these SDKs, and we welcome contributions from developers to help shape Maestro's capabilities. Your insights and feedback are invaluable in ensuring our tools meet language-specific needs and unlock new possibilities. *** ## Available SDKs Currently, Maestro offers SDKs in the following languages: | **SDK** | | | -------------- | ------------------------------------------------------------- | | **Haskell** | Coming Soon | | **TypeScript** | Coming Soon | | **Go** | [View](https://github.com/maestro-org/maestro-bitcoin-go-sdk) | | **Rust** | Coming Soon | | **Python** | Coming Soon | *** ## Community Call for Contributors Our SDKs are constantly evolving to keep pace with the rapid expansion of Maestro's services, and we rely on community support to maintain and enhance them. We welcome contributions to add new API integrations, improve existing features, and ensure our tools stay up-to-date. These SDKs are open-source, reflecting our commitment to building a vibrant ecosystem of tools and APIs that enhance the Maestro developer experience. Your contributions play a crucial role in making this possible. **Contribute Now:** [github.com/maestro-org](https://github.com/maestro-org) # Best in Slot Migration Guide Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/best-in-slot-migration-guide Complete migration guide from Best in Slot (BiS) to Maestro with endpoint mapping, request structure changes, and code examples. This guide will walk you through migrating from [Best in Slot (BiS)](https://bestinslot.xyz) to Maestro. Transitioning from BiS involves mapping endpoints to their Maestro counterparts and adjusting request structures accordingly. Table of Contents: * [Prerequisites](#prerequisites) * [Base URL](#base-url) * [Headers](#headers) * [Endpoints](#endpoints) * [Key Differences](#key-differences) ## Prerequisites 1. Obtain a Maestro [API key](https://dashboard.gomaestro.org). 2. Review [Bitcoin API documentation](/bitcoin). ### Base URL | **Network** | **BiS** | **Maestro** | | ----------- | ------------------------------------------------------------------------ | ------------------------------------------------------------------------------------ | | Mainnet | [https://api.bestinslot.xyz/v3](https://api.bestinslot.xyz/v3) | [https://xbt-mainnet.gomaestro-api.org/v0](https://xbt-mainnet.gomaestro-api.org/v0) | | Testnet4 | [https://testnet.api.bestinslot.xyz](https://testnet.api.bestinslot.xyz) | [https://xbt-testnet.gomaestro-api.org/v0](https://xbt-testnet.gomaestro-api.org/v0) | | Signet | [https://signet.api.bestinslot.xyz](https://signet.api.bestinslot.xyz) | Not currently supported | ### Headers | **BiS** | **Maestro** | | ----------- | ----------- | | `x-api-key` | `api-key` | ### Examples ```sh Bash theme={null} # Maestro curl -s 'https://xbt-mainnet.gomaestro-api.org/v0/assets/inscriptions/6d1cefe69ad686d6153bd1a6d34c6d55c6e3162cb2fac9b58a8d9d9e9fda13c6i0' \ --header 'Accept: application/json' \ --header 'api-key: ' # BiS curl -s 'https://api.bestinslot.xyz/v3/inscription/single_info_id?inscription_id=6d1cefe69ad686d6153bd1a6d34c6d55c6e3162cb2fac9b58a8d9d9e9fda13c6i0' \ --header 'Accept: application/json' \ --header 'x-api-key: ' ``` ### Endpoints This section details endpoint mapping by the following *categories*: * [BIP-322]() * [Bitmap]() * [BRC-20]() * [Collections]() * [Inscriptions]() * [Mempool]() * [Runes]() * [Sats Routes]() * [Wallets]() ### BIP-322 [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/bip-322) | | BiS | Maestro | | ----- | ------------------------- | ------- | | Title | Verify BIP-322 Signatures | - | | Route | `/v3/bip322/verify` | - | ### Bitmap [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap) | | BiS | Maestro | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- | | Title | [Get Bitmap Holders](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-holders) | - | | Route | `/v3/bitmap/holders` | - | | Title | [Get Bitmap Inscriptions](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-inscriptions) | - | | Route | `/v3/bitmap/inscription` | - | | Title | [Get Bitmap Sales Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-sales-information) | - | | Route | `/v3/bitmap/sales_info?marketplace_type=...` | - | | Title | [Get Bitmap Market Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-market-information) | - | | Route | `/v3/bitmap/market_info` | - | | Title | [Get Bitmap Listings](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-listings) | - | | Route | `/v3/bitmap/listings` | - | | Title | [Get Bitmap Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/bitmap#get-bitmap-activity) | - | | Route | `/v3/bitmap/activity` | - | ### BRC-20 [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/brc-20) | | BiS | Maestro | | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | Title | [BRC-20 Balances of Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#brc-20-balances-of-wallet) | [BRC20 by Address](/bitcoin/blockchain-indexer-api/addresses/brc20-by-address) | | Route | `/v3/brc20/wallet_balances?address=...` | `/addresses/:address/brc20` | | Title | [Get BRC-20 Tickers](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-tickers) | [List BRC20](/bitcoin/blockchain-indexer-api/brc20/list-brc20) | | Route | `/v3/brc20/tickers` | `/assets/brc20` | | Title | [Get BRC-20 Minting Ticker Count](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-minting-ticker-count) | - | | Route | `/v3/brc20/ticker_cnt` | - | | Title | [Get BRC-20 Ticker Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-ticker-information) | [BRC20 Info](/bitcoin/blockchain-indexer-api/brc20/brc20-info) | | Route | `/v3/brc20/ticker_info?ticker=...` | `/assets/brc20/:ticker` | | Title | [Get BRC-20 Valid Transfer Notes](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-valid-transfer-notes) | - | | Route | `/v3/brc20/validtxnotes?ticker=...` | - | | Title | [Get BRC-20 Valid Transfer Notes of a Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-valid-transfer-notes-of-a-wallet) | [BRC20 Transfer Inscriptions by Address](/bitcoin/blockchain-indexer-api/addresses/brc20-transfer-inscriptions-by-address) | | Route | `/v3/brc20/validtxnotes_wallet?address=...` | `/addresses/:address/brc20/transfer_inscriptions` | | Title | [BRC-20 Validity Check](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#brc-20-validity-check) | - | | Route | `/v3/brc20/single_info?inscription_id=...` | - | | Title | [BRC-20 Batch Validity Check](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#brc-20-batch-validity-check) | - | | Route | `/v3/brc20/batch_info` | - | | Title | [Get BRC-20 Ticker Holders](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-ticker-holders) | [BRC20 Holders](/bitcoin/blockchain-indexer-api/brc20/brc20-holders) | | Route | `/v3/brc20/holders?ticker=...` | `/assets/brc20/:ticker/holders` | | Title | [Get BRC-20 Event from TxId](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-event-from-txid) | - | | Route | `/v3/brc20/event_from_txid?txid=...` | - | | Title | [Get BRC-20 Sales Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-sales-information) | - | | Route | `/v3/brc20/sales_info?ticker=...` | - | | Title | [Get BRC-20 Market Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-market-information) | - | | Route | `/v3/brc20/market_info?ticker=...` | - | | Title | [Get BRC-20 Listings](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-listings) | - | | Route | `/v3/brc20/listings?ticker=...` | - | | Title | [Get BRC-20 Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-activity) | [Activity by Inscription](/bitcoin/blockchain-indexer-api/inscriptions/activity-by-inscription) | | Route | `/v3/brc20/activity?ticker=...` | `/assets/inscriptions/:inscription_id/activity` | | Title | [Get BRC-20 Wallet Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-wallet-activity) | [Inscriptions by Address](/bitcoin/blockchain-indexer-api/addresses/inscriptions-by-address) | | Route | `/v3/brc20/wallet_activity?wallet_addr=...` | `/addresses/:address/inscriptions` | | Title | [Get BRC-20 Activity on Block](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-activity-on-block) | [Inscription Activity by Block](/bitcoin/blockchain-indexer-api/blocks/inscription-activity-by-block) | | Route | `/v3/brc20/activity_on_block?block_height=...` | `/blocks/:height_or_hash/inscriptions/activity` | | Title | [Get BRC-20 Balance on Block](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-balance-on-block) | - | | Route | `/v3/brc20/balance_on_block?block_height=...` | - | | Title | [Get BRC-20 Balance on Block Batch](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-balance-on-block-batch) | - | | Route | `/v3/brc20/batch_balance_on_block` | - | | Title | [Get BRC-20 All Valid Tx Notes](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-all-valid-tx-notes) | - | | Route | `/v3/brc20/all_validtxnotes` | - | | Title | [Get BRC-20 All Balances](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/brc-20#get-brc-20-all-balances) | - | | Route | `/v3/brc20/all_balances` | - | ### Collections [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections) | | BiS | Maestro | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | | Title | [Get collections](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collections) | - | | Route | `/v3/collection/collections` | - | | Title | [Get Collection Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-information) | [Collection Metadata by Collection Symbol](/bitcoin/blockchain-indexer-api/inscriptions/collection-metadata-by-collection-symbol) | | Route | `/v3/collection/info?slug=...` | `/assets/collections/:collection_symbol/metadata` | | Title | [Get Collection Holders](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-holders) | - | | Route | `/v3/collection/holders?slug=...` | - | | Title | [Get Collection Inscriptions](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-inscriptions) | [Inscription IDs by Collection Symbol](/bitcoin/blockchain-indexer-api/inscriptions/inscription-ids-by-collection-symbol) | | Route | `/v3/collection/inscriptions?slug=...` | `/assets/collections/:collection_symbol/inscriptions` | | Title | [Get Collection Sales Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-sales-information) | - | | Route | `/v3/collection/sales_info?slug=...` | - | | Title | [Get Collection Market Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-market-information) | - | | Route | `/v3/collection/market_info?slug=...` | - | | Title | [Get Collection Listings](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-listings) | - | | Route | `/v3/collection/listings?slug=...` | - | | Title | [Get Collection Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/collections#get-collection-activity) | - | | Route | `/v3/collection/activity?slug=...` | - | ### Inscriptions [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/inscriptions) | | BiS | Maestro | | ----- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | Title | [Get Inscription Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-inscription-information) | [Inscription Info](/bitcoin/blockchain-indexer-api/inscriptions/inscription-info) | | Route | `/v3/inscription/single_info_id?inscription_id=...` | `/assets/inscriptions/:inscription_id` | | Title | [Get Batch Inscription Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-batch-inscription-information) | - | | Route | `/v3/inscription/batch_info` | - | | Title | [Get Global Inscription Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-global-inscription-information) | - | | Route | `/v3/inscription/global_info` | - | | Title | [Request Render Refresh](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#request-render-refresh) | - | | Route | `/v3/inscription/render_refresh?inscription_id=...` | - | | Title | [Get Inscription Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-inscription-activity) | [Activity by Inscription](/bitcoin/blockchain-indexer-api/inscriptions/activity-by-inscription) | | Route | `/v3/inscription/activity?inscription_id=...` | `/assets/inscriptions/:inscription_id/activity` | | Title | [Get Inscriptions in Transaction](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-inscriptions-in-transaction) | [Inscription Activity by Transaction](/bitcoin/blockchain-indexer-api/transactions/inscription-activity-by-transaction) | | Route | `/v3/inscription/in_transaction?tx_id=...` | `/transactions/:tx_hash/inscriptions/activity` | | Title | [Get Inscription Activity in Block](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-inscription-activity-in-block) | [Inscription Activity by Block](/bitcoin/blockchain-indexer-api/blocks/inscription-activity-by-block) | | Route | `/v3/inscription/activity_on_block?block_height=...` | `/blocks/:height_or_hash/inscriptions/activity` | | Title | [Get New Inscriptions in Block](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/inscriptions#get-new-inscriptions-in-block) | - | | Route | `/v3/inscription/new_inscriptions_in_block?block_height=...` | - | ### Mempool [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/mempool) | | BiS | Maestro | | ----- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | Title | [Get All UTXOs of Bitcoin Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-all-utxos-of-bitcoin-wallet) | [UTxOs by Address (Mempool-aware)](/bitcoin/mempool-monitoring-api/addresses/utxos-by-address-mempool-aware) | | Route | `/v3/mempool/all_utxos_of_wallet?wallet_addr=...` | `/mempool/addresses/:address/utxos` | | Title | [Get Cardinal UTXOs of Bitcoin Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-cardinal-utxos-of-bitcoin-wallet) | - | | Route | `/v3/mempool/cardinal_utxos_of_wallet?wallet_addr=...` | - | | Title | [Get Ordinal UTXOs of Bitcoin Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-ordinal-utxos-of-bitcoin-wallet) | - | | Route | `/v3/mempool/ordinal_utxos_of_wallet?wallet_addrs=...` | - | | Title | [Get Runic UTXOs of Bitcoin Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-runic-utxos-of-bitcoin-wallet) | [Rune UTxOs by Address and Rune (Mempool-aware)](/bitcoin/mempool-monitoring-api/addresses/rune-utxos-by-address-mempool-aware) | | Route | `/v3/mempool/runic_utxos_of_wallet?wallet_addr=...` | `/mempool/addresses/:address/runes/utxos` | | Title | [Get Cardinal Balance of Bitcoin Wallet](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-cardinal-balance-of-bitcoin-wallet) | - | | Route | `/v3/mempool/cardinal_balance_of_wallet?wallet_addr=...` | - | | Title | [Get All Cardinal UTXOs in Mempool](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-all-cardinal-utxos-in-mempool) | - | | Route | `/v3/mempool/all_cardinal_utxos` | - | | Title | [Get All Ordinal UTXOs in Mempool](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-all-ordinal-utxos-in-mempool) | Access Mempool Transactions | | Route | `/v3/mempool/all_ordinal_utxos` | - | | Title | [Get All Runic UTXOs in Mempool](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-all-runic-utxos-in-mempool) | Access Mempool Transactions | | Route | `/v3/mempool/all_runic_utxos` | - | | Title | [Get All Runes Events in Mempool](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/mempool#get-all-runes-events-in-mempool) | - | | Route | `/v3/mempool/transactions` | - | ### Runes [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/runes) | | BiS | Maestro | | ----- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- | | Title | [Runes Testnet4 Faucet (only on testnet)](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-testnet4-faucet-only-on-testnet) | - | | Route | `/v3/runes/testnet_faucet?address=...` | - | | Title | [Runes Tickers](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-tickers) | [List Runes](/bitcoin/blockchain-indexer-api/runes/list-runes) | | Route | `/v3/runes/tickers` | `/assets/runes` | | Title | [Runes Ticker Count](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-ticker-count) | - | | Route | `/v3/runes/ticker_cnt` | - | | Title | [Runes Single Ticker Info](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-single-ticker-info) | [Runes Info](/bitcoin/blockchain-indexer-api/runes/runes-info) | | Route | `/v3/runes/ticker_info?rune_Route=...` | `/assets/runes/:rune` | | Title | [Get Runes Sales Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#get-runes-sales-information) | [Rune Trades for DEX](/bitcoin/market-price-api/dex/rune-trades-for-dex) | | Route | `/v3/runes/sales_info?rune_Route=...` | `/markets/dexs/trades/:dex/:symbol` | | Title | [Get Runes Market Information](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#get-runes-market-information) | - | | Route | `/v3/runes/market_info?rune_Route=...` | - | | Title | [Runes Listings](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-listings) | - | | Route | `/v3/runes/listings?rune_id=...` | - | | Title | [Runes Holders](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-holders) | [Holders by Rune](/bitcoin/blockchain-indexer-api/runes/holders-by-rune) | | Route | `/v3/runes/holders?rune_Route=...` | `/assets/runes/:rune/holders` | | Title | [Runes Single Output Info](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-single-output-info) | - | | Route | `/v3/runes/output_info?output=...` | - | | Title | [Runes Batch Output Info](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-batch-output-info) | - | | Route | `/v3/runes/batch_output_info` | - | | Title | [Runes Wallet Balances](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-wallet-balances) | [Runes by Address](/bitcoin/blockchain-indexer-api/addresses/runes-by-address) | | Route | `/v3/runes/wallet_balances?address=...` | `/addresses/:address/runes` | | Title | [Runes Wallet Valid Outputs](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-wallet-valid-outputs) | [Rune UTXOs by Address](/bitcoin/blockchain-indexer-api/addresses/rune-utxos-by-address) | | Route | `/v3/runes/wallet_valid_outputs?address=...` | `/addresses/:address/runes/utxos` | | Title | [Runes Wallet Valid Outputs Single Rune](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-wallet-valid-outputs-single-rune) | [Rune UTXOs by Address](/bitcoin/blockchain-indexer-api/addresses/rune-utxos-by-address) | | Route | `/v3/runes/wallet_valid_outputs_single_rune?address=...&rune_id=...` | `/addresses/:address/runes/utxos?rune=...` | | Title | [Runes Valid Outputs](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-valid-outputs) | - | | Route | `/v3/runes/valid_outputs?rune_Route=...` | - | | Title | [Runes Wallet Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-wallet-activity) | - | | Route | `/v3/runes/wallet_activity?address=...` | - | | Title | [Runes Activity of a Ticker](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-activity-of-a-ticker) | [Activity by Inscription](/bitcoin/blockchain-indexer-api/inscriptions/activity-by-inscription) | | Route | `/v3/runes/activity?rune_Route=...` | `/assets/inscriptions/:inscription_id/activity` | | Title | [Runes Activity in a Single Tx](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-activity-in-a-single-tx) | [Inscription Activity by Transaction](/bitcoin/blockchain-indexer-api/transactions/inscription-activity-by-transaction) | | Route | `/v3/runes/events_on_tx?txid=...` | `/transactions/:tx_hash/inscriptions/activity` | | Title | [Runes Historical Total Supply](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-historical-total-supply) | [Runes Info](/bitcoin/blockchain-indexer-api/runes/runes-info) | | Route | `/v3/runes/historical_total_supply?rune_Route=...` | `/assets/runes/:rune` | | Title | [Runes All Activity on Block Height](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-all-activity-on-block-height) | [Inscription Activity by Block](/bitcoin/blockchain-indexer-api/blocks/inscription-activity-by-block) | | Route | `/v3/runes/activity_on_block?block_height=...` | `/blocks/:height_or_hash/inscriptions/activity` | | Title | [Runes All ID Route Pairs](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-all-id-Route-pairs) | [List Runes](/bitcoin/blockchain-indexer-api/runes/list-runes) | | Route | `/v3/runes/all_id_Route_pairs` | `/assets/runes` | | Title | [Runes Historical Prices](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/runes#runes-historical-prices) | [Rune OHLC Data](/bitcoin/market-price-api/dex/rune-ohlc-data) | | Route | `/v3/runes/historical_prices` | `/markets/dexs/ohlc/:dex/:symbol` | ### Sats Routes [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/sats-Routes) | | BiS | Maestro | | ----- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- | | Title | [Sats Validity Check](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/sats-Routes#sats-validity-check) | - | | Route | `/v3/sats/validity_check?inscription_id=...` | - | | Title | [Sats Forward Lookup](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/sats-Routes#sats-forward-lookup) | - | | Route | `/v3/sats/forward_lookup?sats_Route=...` | - | | Title | [Sats Reverse Lookup](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/sats-Routes#sats-reverse-lookup) | - | | Route | `/v3/sats/reverse_lookup?address=...` | - | | Title | [Get Sats Activity](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/sats-Routes#get-sats-activity) | - | | Route | `/v3/sats/activity` | - | ### Wallets [BiS Reference](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet%2Btestnet%2Bsignet/wallets) [Maestro Reference](/bitcoin/wallet-api/overview) | | BiS | Maestro | | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | | Title | [BTC Testnet4 Faucet (only on testnet)](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#btc-testnet4-faucet-only-on-testnet) | - | | Route | `/v3/wallet/testnet_faucet` | - | | Title | [Get Wallet Inscriptions](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-inscriptions) | [Inscriptions by Address](/bitcoin/blockchain-indexer-api/addresses/inscriptions-by-address) | | Route | `/v3/wallet/inscriptions?address=...` | `/addresses/:address/inscriptions` | | Title | [Get Batch Wallet Inscriptions](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-batch-wallet-inscriptions) | - | | Route | `/v3/wallet/inscriptions_batch` | - | | Title | [Get Wallet Collections](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-collections) | - | | Route | `/v3/wallet/collections` | - | | Title | [Get Wallet Verified Sats](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-verified-sats) | - | | Route | `/v3/wallet/sats_Routes` | - | | Title | [Get Wallet Listings](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-listings) | - | | Route | `/v3/wallet/listings?address=...` | - | | Title | [Get Wallet Activity (Inscriptions Only)](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-activity-inscriptions-only) | - | | Route | `/v3/wallet/activity?address=...` | - | | Title | [Get Wallet Global Activity (Inscriptions, BRC20 and Runes)](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-global-activity-inscriptions-brc20-and-runes) | - | | Route | `/v3/wallet/global_activity?address=...` | - | | Title | [Get Wallet Metadata](https://docs.bestinslot.xyz/reference/api-reference/ordinals-and-brc-20-and-runes-and-bitmap-v3-api-mainnet+testnet+signet/wallets#get-wallet-metadata) | - | | Route | `/v3/wallet/metadata?address=...` | - | ### Key Differences * **API Structure**: BiS uses RESTful endpoints with specific paths, while Maestro offers both RESTful as well as *JSON-RPC* interfaces. * **Data Representation**: Maestro's responses may differ in structure; ensure to adapt your data parsing logic accordingly. *** ## 🎉 You’re Done! You now have walked through a guide on how to migrate from Best-in-Slot to Maestro as your de-facto on-chain data provider. ### **Additional Resources** * **Maestro Documentation**: [https://docs.developer.gomaestro.org](https://docs.developer.gomaestro.org) * **BiS Documentation**: [https://docs.bestinslot.xyz](https://docs.bestinslot.xyz) Be sure to review Maestro's rate limits and [pricing tiers](https://www.gomaestro.org/pricing) to select the plan that best fits your application's needs. *** **Support** If you are experiencing any trouble with the above, reach out on Discord. # How to Add a Custom Index in Maestro Symphony Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/how-to-add-a-custom-index-in-maestro-symphony Step-by-step guide to create custom Bitcoin indexing logic in Maestro Symphony for UTXOs, metaprotocols, and onchain activity. The [Maestro Symphony](https://github.com/maestro-org/maestro-symphony) is a fast, mempool-aware, and extensible Bitcoin indexer and API server. It provides a framework for indexing UTXOs, metaprotocols, and any other onchain activity. This guide explains how to construct and integrate custom logic to be extracted and persisted during transaction processing by the Maestro Symphony indexer. ## Steps ### 1. Create a New Indexer Project and Initialize it After [forking](https://github.com/maestro-org/maestro-symphony/fork) the repo, create a file or module in the `/custom` subdirectory. *Setup a new project directory* ```sh Bash theme={null} mkdir -p src/sync/stages/index/indexers/custom/my_proj ``` *Create the files (plus any extra that you need)* ```sh Bash theme={null} touch mod.rs indexer.rs tables.rs ``` *Generate the* `mod.rs` (and add your related files) ```sh Bash theme={null} pub mod indexer; pub mod tables; ``` It is recommended to split logic across multiple files (see the `runes` indexer for reference). *** ### 2. Register a New Enum Variant Create a new `TransactionIndexerType` enum variant: ```txt Text theme={null} src/sync/stages/index/indexers/custom/my_proj/mod.rs ``` Add your variant **only at the end**. Example: ```rust Rust theme={null} /// Unique u8 for each transaction indexer, used in the key encodings. Do not modify, only add new /// variants. #[derive(Clone, Copy, Encode, Decode, PartialEq, Eq, std::hash::Hash, Debug)] #[repr(u8)] pub enum TransactionIndexerType { TxCountByAddress = 0, Runes = 1, UtxosByAddress = 2, MyProjIndexer = 3, // my_proj indexer } ``` ⚠️ **Do not reorder or delete existing variants**. They are encoded as u8 and reused in key encodings. Any change will corrupt existing indexed data unless starting from a clean state. *** ### 3. Define the Indexer Object Implement a struct that represents your indexer and implements the `ProcessTransaction` trait. ```rust Rust theme={null} pub struct MyProjIndexer { start_height: u64, track_inputs: bool, } impl ProcessTransaction for MyProjIndexer { fn process_tx( &mut self, task: &mut IndexerTask, tx: &Transaction, ctx: &IndexerContext, ) -> Result<(), Error> { ... } } ``` Where: * `task`: read/write interface to storage * `tx`: the transaction being processed * `ctx`: context with input resolver, block height, hash, network, arbitrary data to outputs, etc. A *resolver* lets you provide a transcation input UTXO reference and receive the corresponding transaction output UTXO. Reference:
[`runes/indexer.rs#L41-L61`](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/runes/indexer.rs#L41-L61) *** ### 4. Implement and Handle Config Your indexer should expose a `new()` function that takes a configuration struct and returns an instance of the indexer. This enables configuration-driven behavior such as start\_height, track\_inputs, or custom logic. ```rust Rust theme={null} impl MyProjIndexer { pub fn new(config: MyProjIndexerConfig) -> Result { let start_height = config.start_height; let track_inputs = config.track_inputs; Ok(Self { start_height, track_inputs, }) } } #[derive(Clone, Debug, Deserialize)] pub struct MyProjIndexerConfig { #[serde(default)] pub start_height: u64, #[serde(default)] pub track_inputs: bool, } ``` The `MyProjIndexerConfig` struct should define fields relevant to your indexer. [Reference](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/runes/indexer.rs#L41-L72) ### 5. Define Storage Tables Define custom key-value tables for storing the new data using the `define_indexer_table!` macro. ```txt Text theme={null} src/sync/stages/index/indexers/custom/my_proj/tables.rs ``` Example: ```rust Rust theme={null} define_indexer_table! { name: MyProjIndexerKV, key_type: ScriptPubKey, value_type: u64, indexer: TransactionIndexer::MyProjIndexer, table: 0 } ``` ```rust Rust theme={null} // key-value: address => tx_count ``` Each table must: * Have a unique `table` ID * Use your new enum variant * Use key/value types that implement `Encode` and `Decode` Reference:
[`tx_count_by_address.rs#L20-L26`](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/tx_count_by_address.rs#L20-L26) *** ### 6. Implement `ProcessTransaction` Process each transaction by: * Iterating over inputs, ouputs, resolving UTXOs, etc. * Reading/writing to storage with ```rust Rust theme={null} impl ProcessTransaction for MyProjIndexer { fn process_tx( &mut self, task: &mut IndexerTask, tx: &Transaction, ctx: &IndexerContext, ) -> Result<(), Error> { let TransactionWithId { tx, .. } = tx; ... // retrieve value from KV store task.get::(&key)?; ... // set value in KV store task.put::(&key, &value)?; ... } } ``` Example:
[`tx_count_by_address.rs#L38-L76`](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/tx_count_by_address.rs#L38-L76) *** ### 7. Register Module and Add to Factory Add your `my_proj` module in `custom/mod.rs`: ```rust Rust theme={null} pub mod id; pub mod runes; pub mod tx_count_by_address; pub mod utxos_by_address; pub mod my_proj; // my_proj indexer ``` [**Reference**](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/mod.rs#L11C1-L14C26) Next, add your variant to: * The `TransactionIndexerFactory` enum * The `create_indexer` function ```rust Rust theme={null} #[derive(Clone, Debug, Deserialize)] #[serde(tag = "type")] pub enum TransactionIndexerFactory { TxCountByAddress, Runes(RunesIndexerConfig), UtxosByAddress, MyProjIndexer(MyProjIndexerConfig), } impl TransactionIndexerFactory { pub fn create_indexer(self) -> Result, Error> { match self { Self::TxCountByAddress => Ok(Box::new(TxCountByAddressIndexer::new())), Self::Runes(c) => Ok(Box::new(RunesIndexer::new(c)?)), Self::UtxosByAddress => Ok(Box::new(UtxosByAddressIndexer::new())), Self::MyProjIndexer(c) => Ok(Box::new(MyProjIndexer::new(c)?)), } } } ``` *** ### 8. (Optional) Attach Metadata to UTXOs To persist data across transactions using UTXOs (e.g., inscriptions, runes), you can attach metadata during output processing: ```rust Rust theme={null} task.attach_metadata_to_output(vout, &data)?; ``` Later, during input resolution: ```rust Rust theme={null} let meta = ctx.resolver.resolve_input(input)?.metadata::()?; ``` Examples: * [**Attach metadata**](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/runes/indexer.rs#L256-L260) * [**Retrieve metadata**](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/runes/indexer.rs#L318-L321) *This saves storage and avoids manually tracking UTXOs elsewhere.* *** For working examples, refer to: * [`runes`](https://github.com/maestro-org/maestro-symphony/tree/main/src/sync/stages/index/indexers/custom/runes) * [`tx_count_by_address`](https://github.com/maestro-org/maestro-symphony/blob/main/src/sync/stages/index/indexers/custom/tx_count_by_address.rs) ## 🎉 You’re Done! You have now walked through a guide on how to index a custom piece of data and add an API endpoint using the [Maestro Symphony](https://github.com/maestro-org/maestro-symphony). Be sure to check out [Maestro's additional services](https://www.gomaestro.org/chains/bitcoin) for further assisting your development of building on Bitcoin. *** **Support** If you are experiencing any trouble with the above, reach out on [Discord](https://discord.gg/ES2rDhBJt3). # How to Use Pre-Synced Snapshots in Maestro Symphony Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/how-to-use-pre-synced-snapshots-in-maestro-symphony Learn how to bootstrap Maestro Symphony with pre-synced snapshots of Bitcoin Core and Symphony indexer data, reducing setup time by skipping the full blockchain sync. This guide explains how to use pre-synced snapshots to quickly set up Maestro Symphony and Bitcoin Core, avoiding the time-consuming initial chain synchronization. ## Overview Snapshots allow you to bootstrap your Symphony indexer with pre-synchronized data: * **Bitcoin node snapshots**: Pre-synced Bitcoin Core blockchain data * **Symphony snapshots**: Pre-indexed blockchain data and database state ## Prerequisites * [Bitcoin Core (22+)](https://hub.docker.com/r/bitcoin/bitcoin) with RPC and P2P access * [lz4](https://github.com/lz4/lz4) * Sufficient disk space (see [deployment requirements](https://github.com/maestro-org/maestro-symphony?tab=readme-ov-file#deployment-requirements)) ## Available Snapshots **Networks supported:** * mainnet * testnet4 * regtest **Snapshots** #### Bitcoin Mainnet: [https://snapshots.gomaestro.org/bitcoin-node/mainnet/snapshots/20250826.tar.lz4](https://snapshots.gomaestro.org/bitcoin-node/mainnet/snapshots/20250826.tar.lz4) Testnet: [https://snapshots.gomaestro.org/bitcoin-node/testnet/snapshots/20250827.tar.lz4](https://snapshots.gomaestro.org/bitcoin-node/testnet/snapshots/20250827.tar.lz4) #### Symphony Mainnet: [https://snapshots.gomaestro.org/symphony/mainnet/snapshots/20250927.tar.lz4](https://snapshots.gomaestro.org/symphony/mainnet/snapshots/20250927.tar.lz4) Testnet: [https://snapshots.gomaestro.org/symphony/testnet/snapshots/20250927.tar.lz4](https://snapshots.gomaestro.org/symphony/testnet/snapshots/20250927.tar.lz4) ## Testnet setup example ### 1. Clone Repository and Prepare Directories *The following are to be excuted within maestro-symphony repo directory*. First, let's clone the Symphony repo: ```bash theme={null} git clone https://github.com/maestro-org/maestro-symphony.git && cd maestro-symphony ``` Next, let's create two new directories to house the snapshot data. ```bash theme={null} mkdir -p ./tmp/{symphony-data,bitcoin-data} ``` ### 2. Download Snapshots Bitcoin node snapshot: ```bash theme={null} curl -L https://snapshots.gomaestro.org/bitcoin-node/testnet/snapshots/20250827.tar.lz4 | \ lz4 -d | tar -xf - -C ./tmp/bitcoin-data ``` Symphony snapshot: ```bash theme={null} curl -L https://snapshots.gomaestro.org/symphony/testnet/snapshots/20250927.tar.lz4 | \ lz4 -d | tar -xf - -C ./tmp/symphony-data ``` ### 3. Start Services ```bash theme={null} make COMPOSE_FILE=docker-compose.yml compose-up ``` ## Verification Once the services are started, verify the setup: ### Check Symphony Status ```bash theme={null} curl http://localhost:8080/addresses/tb1qw508d6qejxtdg4y5r3zarvary0c5xw7kxpjzsx/utxos | jq '.indexer_info' ``` ### Stop Services When you are finished interacting with Symphony, be sure to stop the services as well. ```bash theme={null} make compose-down ``` ## Troubleshooting ### Disk Space Ensure sufficient disk space: * Testnet: \~1GB for Symphony + \~50GB for Bitcoin node * Mainnet: \~24GB for Symphony + \~600GB for Bitcoin node ### Snapshot Age If snapshots are older than expected: * Symphony will automatically sync missing blocks * Bitcoin Core will resume from snapshot point * Initial startup may take longer for older snapshots ## Updating Snapshots Snapshots are updated regularly. To use a newer snapshot: 1. Stop Docker services 2. Backup any important data 3. Remove old data directories 4. Download and extract new snapshots 5. Restart Docker services **Note:** Ensure that no other bitcoin node containers are running as this may cause conflicts. *** ## 🎉 You’re Done! You have now walked through a guide on how to load both a [Symphony](https://github.com/maestro-org/maestro-symphony) and Bitcoin snapshot. Be sure to check out [Maestro's additional services](/bitcoin) for further assisting your development of building on Bitcoin. *** ## Support For issues with snapshots: * Open an [issue](https://github.com/maestro-org/maestro-symphony/issues) * Join the [Discord community](https://discord.gg/SJgkEje7) # Integrating Maestro Event Manager into Your Application Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/integrating-event-manager-into-your-application This guide for understanding the [Event Manager](/general/event-manager) can be viewed in conjunction with our [Bitcoin Wallet Insight Demo](https://github.com/maestro-org/maestro-replit-templates/tree/main/maestro-wallet-demo) - an example Bitcoin application showcasing the Wallet API and Event Manager capabilities for wallet insights and state monitoring. You can deploy [this demo](https://replit.com/@roethke/Maestro-Replit-Templates?v=1) to see the Event Manager in action, as well as how it is integrated, before implementing it in your own application to: 1. Set up automated monitoring for Bitcoin wallet activities, transactions, and blockchain events 2. Create triggers that fire when specific conditions are met (e.g., large transactions, new inscriptions) 3. Receive real-time notifications via webhooks to keep your application responsive ## Overview The [Event Manager](/general/event-manager) is a powerful service that allows you to monitor Bitcoin blockchain events and receive notifications when specific conditions are met. Unlike user-facing features, the Event Manager is designed as an **admin-only service** that operates behind the scenes to keep your application informed of important blockchain activities. Key benefits: * **Real-time monitoring** of wallet addresses, transactions, and blockchain state * **Automated notifications** via webhooks when triggers activate * **Flexible trigger conditions** for various blockchain events *** ## Architecture Overview ```mermaid theme={null} graph TB A[Your Application] --> B[Maestro Dashboard] B --> C[Event Manager API] C --> D[Bitcoin Blockchain] C --> E[Webhook Endpoint] E --> F[Application Backend] F --> G[User Notifications] F --> H[Database Updates] F --> I[Business Logic] style B fill:#ff9999 style C fill:#99ccff style E fill:#99ff99 ``` **Flow Explanation:** 1. **Admin creates triggers** via the [Maestro Dashboard](/general/event-manager#using-the-event-manager) 2. **Event Manager monitors** the blockchain for specified conditions 3. **Webhooks fire** when conditions are met, sending data to your application 4. **Your application processes** the webhook and takes appropriate actions *** ## Prerequisites * **Node.js** ≥16 and **npm** (or Yarn) installed * A Maestro [API key](https://dashboard.gomaestro.org/login) with Event Manager access * An existing application (we'll use our [maestro-replit-templates](https://github.com/maestro-org/maestro-replit-templates) wallet demo as an example) *** ## Complete Event Manager Operations ### Configure and Manage Event Triggers in the Maestro Dashboard The [Maestro Dashboard](/general/event-manager#using-the-event-manager) provides a user-friendly interface for managing Event Manager operations. Follow these steps to set up monitoring for your Bitcoin applications: #### Step 1: Access the Event Manager Dashboard 1. **Log in** to your [Maestro Dashboard](https://dashboard.gomaestro.org/login) 2. **Navigate** to the *Events* tab in the top navbar 3. **Create** a new Webhook Create Webhook #### Step 2: Create Your First Webhook 1. **Click "Create Webhook"** to open the event webhook creation wizard 2. **Configure basic settings:** * **Chain**: Select "Bitcoin" * **Network**: Choose "Mainnet" or "Testnet" * **Webhook URL**: Enter your application's webhook endpoint * **Set confirmation requirements**: Choose 1-6 confirmations based on your security needs * **Trigger Type**: Select "Transaction" for monitoring Bitcoin transactions * **Trigger Name**: Give it a descriptive name (e.g., "Wallet Balance Monitor") Create Trigger **Testing tip**: Use [webhook.site](https://webhook.site) to generate a test URL for initial setup 4. **Configure trigger conditions** using the filter builder: * **For wallet monitoring**: Set filter key to "Sender or Receiver" with your Bitcoin address * **For large transactions**: Set "TotalInputVolume" with operator ">" and value in satoshis * **For specific addresses**: Use "Sender" or "Receiver" filters as needed Configure Trigger Conditions 6. **Click "Create"** to activate monitoring #### Step 3: Test Your Webhook 1. **Send a test transaction** that matches your trigger conditions 2. **Monitor the Event Logs** to see triggered events in real-time 3. **Check your webhook endpoint** to verify you're receiving notifications 4. **Review the payload structure** to understand the data format for your application #### Step 4: Manage Active Webhooks 1. **View all webhooks** in the dashboard with status indicators (Active/Paused) 2. **Monitor webhook statistics** including event count and last triggered time 3. **Pause/Resume webhooks** as needed for maintenance or testing 4. **Edit webhook settings** to modify filters, webhook URLs, or confirmation requirements 5. **Delete unused webhooks** to stay within your account limits and keep things organized #### Step 5: Monitor Event Logs 1. **Filter logs** by trigger, date range, or status for easier debugging 2. **Inspect event details** including the full transaction payload and webhook response 3. **Troubleshoot webhook issues** by checking response status codes and error messages 4. **Export logs** for analysis or compliance reporting if needed *If you'd prefer to manage webhooks/logs programmatically, the [Event Manager API](/bitcoin/event-manager-api/overview) provides comprehensive functionality for this. Available operations shown below.* **Pro Tips for Dashboard Usage:** * Start with testnet webhooks to familiarize yourself with the interface * Use descriptive trigger names that indicate their purpose * Set up multiple webhooks with different confirmation levels for different use cases * Regularly review and clean up unused webhooks to optimize performance ### Trigger Management The following snippets are borrowed from the [Bitcoin Wallet Insight Demo](https://github.com/maestro-org/maestro-replit-templates/tree/main/maestro-wallet-demo). #### 1. Creating Triggers Create triggers to monitor Bitcoin transactions based on specific conditions: ```typescript theme={null} const eventManager = new EventManagerApi('mainnet', 'your-api-key'); const triggerConfig: CreateTriggerRequest = { name: "High Value Transaction Monitor", chain: "bitcoin", network: "mainnet", type: "transaction", webhook_url: "https://your-app.com/webhook", filters: [ { key: "total_input_volume", operator: ">", value: "1000000000" // 10 BTC in satoshis } ], confirmations: 6 }; const newTrigger = await eventManager.createTrigger(triggerConfig); console.log('Created trigger:', newTrigger.id); ``` #### 2. Listing All Triggers Retrieve all your active triggers: ```typescript theme={null} const triggers = await eventManager.listTriggers(); triggers.forEach(trigger => { console.log(`${trigger.name} (${trigger.id}): ${trigger.status}`); console.log(`Events triggered: ${trigger.event_count}`); }); ``` #### 3. Getting Trigger Details Fetch detailed information about a specific trigger: ```typescript theme={null} const triggerId = "your-trigger-id"; const trigger = await eventManager.getTrigger(triggerId); console.log('Trigger details:', trigger); ``` #### 4. Updating Triggers Modify existing triggers (name, filters, status, etc.): ```typescript theme={null} const updates: UpdateTriggerRequest = { name: "Updated High Value Monitor", chain: "bitcoin", network: "mainnet", type: "transaction", webhook_url: "https://your-app.com/webhook", status: "paused", // or "active" filters: [ { key: "total_input_volume", operator: ">", value: "2000000000" // 20 BTC in satoshis } ], confirmations: 6 }; const updatedTrigger = await eventManager.updateTrigger(triggerId, updates); console.log('Updated trigger:', updatedTrigger); ``` #### 5. Deleting Triggers Remove triggers that are no longer needed: ```typescript theme={null} await eventManager.deleteTrigger(triggerId); console.log('Trigger deleted successfully'); ``` ### Filter Options Available filter keys include: * **sender**: Monitor transactions from specific addresses (operator: `=`) * **receiver**: Monitor transactions to specific addresses (operator: `=`) * **sender\_or\_receiver**: Monitor transactions involving specific addresses (operator: `=`) * **transaction\_id**: Monitor specific transaction IDs (operator: `=`) * **total\_input\_volume**: Monitor by transaction value (operators: `=`, `>`, `>=`, `<`, `<=`) * **fee**: Monitor by transaction fee (operators: `=`, `>`, `>=`, `<`, `<=`) * **size**: Monitor by transaction size in bytes (operators: `=`, `>`, `>=`, `<`, `<=`) * **weight**: Monitor by transaction weight (operators: `=`, `>`, `>=`, `<`, `<=`) ### Event Log Management #### 6. Listing Event Logs View logs of triggered events with optional filtering: ```typescript theme={null} // List all logs with pagination const logs = await eventManager.listEventLogs({ page: 1, limit: 50 }); // Filter logs by trigger const triggerLogs = await eventManager.listEventLogs({ trigger_id: "your-trigger-id", page: 1, limit: 20 }); // Filter by chain and network const mainnetLogs = await eventManager.listEventLogs({ chain: "bitcoin", network: "mainnet", page: 1, limit: 25 }); logs.forEach(log => { console.log(`Log ${log.id}: Status ${log.status}`); console.log(`Response: ${log.response_status} - ${log.response}`); }); ``` #### 7. Getting Specific Event Logs Retrieve detailed information about a specific event log: ```typescript theme={null} const logId = "your-log-id"; const eventLog = await eventManager.getEventLog(logId); console.log('Event log details:', { id: eventLog.id, trigger_id: eventLog.trigger_id, status: eventLog.status, response_status: eventLog.response_status, payload: eventLog.payload }); ``` ### Advanced Filter Examples Here are practical examples of different filter configurations: ```typescript theme={null} // Monitor large transactions (>= 1 BTC) const largeTransactionTrigger: CreateTriggerRequest = { name: "Large Transaction Monitor", chain: "bitcoin", network: "mainnet", type: "transaction", webhook_url: "https://your-app.com/webhook/large-tx", filters: [{ key: "total_input_volume", operator: ">=", value: "100000000" // 1 BTC in satoshis }], confirmations: 3 }; // Monitor specific wallet address const walletMonitor: CreateTriggerRequest = { name: "Wallet Activity Monitor", chain: "bitcoin", network: "mainnet", type: "transaction", webhook_url: "https://your-app.com/webhook/wallet", filters: [{ key: "sender_or_receiver", operator: "=", value: "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh" }], confirmations: 1 }; // Monitor high fee transactions const highFeeTrigger: CreateTriggerRequest = { name: "High Fee Monitor", chain: "bitcoin", network: "mainnet", type: "transaction", webhook_url: "https://your-app.com/webhook/high-fee", filters: [{ key: "fee", operator: ">", value: "100000" // 0.001 BTC in satoshis }], confirmations: 2 }; // Using the helper function for wallet monitoring const walletAddress = "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh"; const balanceMonitor = createWalletBalanceMonitoringTrigger( walletAddress, "mainnet", "https://your-app.com/webhook/balance", 1 // confirmations ); const createdTrigger = await eventManager.createTrigger(balanceMonitor); ``` ## Security Considerations **Important Security Notes:** 1. **Use Maestro Dashboard**: Manage all triggers through the secure [Maestro Dashboard](/general/event-manager#using-the-event-manager) instead of building custom admin interfaces 2. **Webhook Validation**: Verify webhook authenticity using signatures 3. **Rate Limiting**: Consider implementing rate limiting on webhook endpoints ## Common Use Cases ### 1. Wallet Monitoring * Track activity on specific wallet addresses * Get notified when funds are received or sent * Monitor for suspicious activity patterns ### 2. Large Transaction Alerts * Alert when transactions exceed certain thresholds * Monitor for whale movements * Compliance and AML monitoring ### 3. Rune/Inscription Activity * Track new rune mints or transfers * Monitor inscription marketplace activity * Get notified of rare asset movements ### 4. Portfolio Automation * Automatically update portfolio values * Trigger rebalancing based on events * Generate activity reports See our example [Wallet Insights Demo](https://replit.com/@roethke/Maestro-Replit-Templates?v=1) for a working implementation of wallet monitoring and event management operating together in a single application. ## Best Practices 1. **Test Webhooks**: Use tools like [webhook.site](https://webhook.site/) or [ngrok](https://ngrok.com/) for local webhook testing 2. **Document Triggers**: Keep clear documentation of what each trigger does 3. **Regular Cleanup**: Remove unused triggers to avoid unnecessary API calls and remain below your account's trigger limits ## 🎉 You’re Done! The Maestro Event Manager transforms your application from reactive to proactive by providing real-time blockchain monitoring capabilities. By implementing the admin-only architecture shown in this guide, you can: * **Monitor critical wallet activities** without constant manual checking * **Respond instantly** to important blockchain events * **Automate business logic** based on on-chain activities * **Maintain security** by keeping event management admin-only The integration with your existing wallet demo creates a powerful combination of portfolio visualization and automated monitoring, making your application more responsive and valuable to users. For more advanced features, explore the full [Event Manager API documentation](/bitcoin/event-manager-api/overview) and consider implementing custom trigger conditions for your specific use case. Be sure to review Maestro's rate limits, **trigger limits** and [pricing tiers](https://gomaestro.org/pricing) to select the plan that best fits your application's needs. **Support** If you are experiencing any trouble with the above, [open an issue](https://github.com/maestro-org/maestro-replit-templates/issues/new) or reach out on Discord. # Maestro Market Price API & TradingView Lightweight-Charts Tutorial Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/maestro-market-price-api-and-tradingview-lightweight-charts-tutorial Step-by-step tutorial to build a TypeScript web app using Maestro's Market Price API with TradingView Lightweight Charts for Bitcoin data visualization. This tutorial walks you through building a small web app in TypeScript that will: 1. Fetch DOGGOTOTHEMOON ("BTC-840000:3") candlestick data from Maestro’s [Market Price API](/bitcoin/market-price-api/overview). 2. Render it as an interactive candlestick chart using the [TradingView](https://www.tradingview.com/) [lightweight-charts](https://github.com/tradingview/lightweight-charts) library. ## Overview ### TradingView - Lightweight Charts™ [TradingView](https://www.tradingview.com/) is a popular web-based platform renowned for its comprehensive and user-friendly charting tools. Users can access a variety of charts for different financial instruments, like stocks, cryptocurrencies, forex, and futures. These charts can be customized with numerous technical indicators and drawing tools to analyze market trends and patterns. TradingView's [Lightweight Charts](https://tradingview.github.io/lightweight-charts/) is a compact, interactive library designed to create financial charts that are both fast and easy to integrate. Here's a basic guide on how to use it with the Maestro [Market Price API](/bitcoin/market-price-api/overview). *** ## Prerequisites * **Node.js** ≥14 and **npm** (or Yarn) installed * A Maestro [API key](https://dashboard.gomaestro.org/login) * Basic familiarity with TypeScript, `fetch`, and bundling (e.g. with esbuild, webpack, or Vite) *** ## Step-by-Step Instructions ### 1. Bootstrap a New Project ```sh Bash theme={null} # create & enter project folder mkdir maestro-chart-tutorial && cd maestro-chart-tutorial # initialize npm npm init -y # install runtime and dev dependencies npm install --save lightweight-charts npm install --save-dev typescript esbuild live-server ``` Here's what your initial `package.json` should look like: ```json JSON theme={null} { "dependencies": { "lightweight-charts": "^5.0.6" }, "name": "maestro-chart-tutorial", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1", }, "keywords": [], "author": "", "license": "ISC", "type": "commonjs", "devDependencies": { "esbuild": "^0.25.3", "live-server": "^1.2.2", "typescript": "^5.8.3", } } ``` Next, create a minimal `tsconfig.json`: ```json JSON theme={null} { "compilerOptions": { "target": "es2017", "module": "esnext", "moduleResolution": "node", "strict": true, "outDir": "dist" }, "include": ["src/**/*"] } ``` *** ### 2. Project Structure ```text Text theme={null} maestro-chart-tutorial/ ├── package.json ├── src/ │ ├── main.ts ← chart logic │ └── index.html ← HTML container for the chart └── tsconfig.json ``` *** ### 3. Write the HTML Shell Create `src/index.html`: ```html HTML theme={null} DOGGOTOTHEMOON Candlestick Chart
``` *** ### 4. Fetch & Transform Candle Data Create `src/main.ts`: ```ts Text theme={null} import { createChart, CandlestickSeries, } from 'lightweight-charts'; // ─── Configuration ───────────────────────────────────────────────────────────── const API_BASE = 'https://xbt-mainnet.gomaestro-api.org/v0/markets'; const DEX = 'magiceden'; const SYMBOL = 'BTC-840000:3'; // DOGGOTOTHEMOON const RESOLUTION = '1d'; // 1‑day candles const API_KEY = 'YOUR_API_KEY_HERE'; // ← Replace with your API key interface Candle { bucket: string; open: number; high: number; low: number; close: number; volume: number; symbol: string; } async function fetchCandles(mempool?: boolean) { const url = new URL(`${API_BASE}/dexs/ohlc/${DEX}/${SYMBOL}`); url.searchParams.set('resolution', RESOLUTION); // for Mempool Market Price data if (mempool) { url.searchParams.set('mempool', 'included'); } const resp = await fetch(url.toString(), { headers: { 'api-key': API_KEY, }, }); if (!resp.ok) { throw new Error(`API error: ${resp.status} ${resp.statusText}`); } const json = await resp.json(); const candles = json.data as Candle[]; return candles.map(c => ({ time: Math.floor(new Date(c.bucket).getTime() / 1000) as UTCTimestamp, open: c.open, high: c.high, low: c.low, close: c.close, })); } ``` *** ### 5. Initialize & Draw the Chart Append to `src/main.ts`: ```ts Text theme={null} async function drawChart() { // Create chart const chartOptions = { layout: { textColor: 'black', background: { type: 'solid', color: '#ffffff' }, }, grid: { vertLines: { color: '#eee' }, horzLines: { color: '#eee' }, }, rightPriceScale: { borderVisible: false }, timeScale: { borderVisible: false, timeVisible: true }, } const chart = createChart(document.getElementById('chart'), chartOptions); const series = chart.addSeries(CandlestickSeries, { upColor: '#26a69a', downColor: '#ef5350', borderVisible: false, wickUpColor: '#26a69a', wickDownColor: '#ef5350', }); // Load data & render try { // Fetch candlestick data const candles = await fetchCandles(); // Set candlestick data series.setData(candles); // Format for better readability chart.timeScale().fitContent(); } catch (err) { console.error(err); alert('Failed to load candle data; see console.'); } } // Run drawChart(); ``` *** ### 6. Bundle & Serve Add these scripts to `package.json`: ```json JSON theme={null} { "scripts": { "build": "esbuild src/main.ts --bundle --outfile=src/main.js --platform=browser", "start": "npm run build && live-server src" } } ``` Then: ```sh Bash theme={null} npm run start ``` * **esbuild** bundles your code into `main.js`. * **live-server** serves `src/index.html` at [http://127.0.0.1:8080](http://127.0.0.1:8080). *** ### Interactive TradingView Chart If you're able to see a chart like this displayed in your browser, then you have successfully fetched data through the API and rendered the chart. *** ### 7. Next Steps & Customization The following considerations can help you to extend this tutorial to fit more of your application's needs. * You can make the chart data **mempool-aware**- meaning it returns data about trades that have *not yet been confirmed*- by passing in an optional `boolean` value to `fetchCandles()`, such as `const candles = await fetchCandles(true);` * **Time Range**: add `from`/`to` (Unix seconds) to `fetchCandles()` * **Carry**: `url.searchParams.set('carry','true')` fills gaps with synthetic candles * **Styling**: tweak [`createChart` options](https://github.com/tradingview/lightweight-charts#configuration) * **Interactivity**: add crosshair, tooltips, mouse events *** ## 🎉 **You’re Done!** You now have a live candlestick chart of DOGGOTOTHEMOON using Maestro’s [Market Price API](/bitcoin/market-price-api/overview) with the [TradingView](https://www.tradingview.com/) [lightweight-charts](https://github.com/tradingview/lightweight-charts) library. Customize it further with indicators, multi‑symbol support, or integrate it into your DeFi dashboard. Be sure to review Maestro's rate limits and [pricing tiers](https://www.gomaestro.org/pricing) to select the plan that best fits your application's needs. *** **Support** If you are experiencing any trouble with the above, reach out on [Discord](https://discord.gg/ES2rDhBJt3). # MCP: Interact with Bitcoin via an LLM Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/mcp-interact-with-bitcoin-via-an-llm Tutorial guide to use Model Context Protocol (MCP) for Bitcoin blockchain interactions through AI language models and Maestro APIs. The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/introduction) is an open standard that enables developers to build secure, two-way connections between their data sources and AI-powered tools. For additional information about MCP, its origins, and [Claude](https://claude.ai), read more from the creators, [Anthropic](https://www.anthropic.com/news/model-context-protocol). *** The Maestro MCP server allows for interacting with Bitcoin through the interface of an LLM client. Maestro MCP transforms how LLMs engage with the Bitcoin network, turning them into powerful, on-chain agents. Bridging Claude (or any LLM client) with our MCP server enables the LLM to query blocks, inspect transactions, analyze addresses, and even take action on behalf of the user. This server functionality provides the LLM with a set of tools for exploring blocks, transactions, addresses, and other aspects of the Bitcoin blockchain, allowing the LLM to not only retrieve and make infereances on on-chain data, but also to take action on behalf of the user; ie, serve as an [*agent*](https://github.com/resources/articles/ai/what-are-ai-agents). In this tutorial, we will use Claude Desktop client alongside the **hosted** Maestro MCP server to communicate with the Bitcoin network and start making intelligent, on-chain requests. *For more client examples, see our *Maestro MCP client examples repo* and refer to our *local setup* if you'd like to understand how to connect Claude Desktop to a locally-running MCP server.* Some of the MCP server functionality will not work if you are using the **Artist tier**; a **Composer-level subscription or higher** will be needed to access the more advanced MCP features, such as those related to Mempool API activities. Consult the [pricing page](https://www.gomaestro.org/pricing) for more information. *** ## Requirements * Obtain a Maestro API key ## Configuration 1. Download Claude Desktop [here](https://claude.ai/download). 2. Open Claude Desktop settings. 3. Select `Edit Config`. 4. Open the Claude Desktop App configuration file located at: * **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json` * **Windows:** `%APPDATA%\Claude\claude_desktop_config.json` Copy the below contents into this config file. Be sure to replace the ` ```json claude_desktop_config.json theme={null} { "mcpServers": { "maestro-mcp-server": { "command": "npx", "args": [ "-y", "mcp-remote", "https://xbt-mainnet.gomaestro-api.org/v0/mcp", "--header", "Authorization:${AUTH_HEADER}", "--transport", "http-only" ], "env": { "AUTH_HEADER": "Bearer " } } } } ``` ## Usage * Restart Claude after any change to either the `claude_desktop_config.json` or the source code. 1. Launch Claude Desktop. 2. Locate the tools icon. 3. Select `maestro-mcp-server`. 4. View available MCP tools. 5. Prompt Claude. *Examples*: * "Fetch the latest Bitcoin block" * "Get the blockchain info for Bitcoin" * "Fetch all UTXOs for this address: `bc1prqpwzqqcfzlrtjz3at5kuz4zevqsmvxc5xjuzvg58y48leu67x0q0kvy85`" * "Fetch metaprotocol activity for this address: `bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94`" You may need to approve the request within Claude. *** ## 🎉 You’re Done! You now have communicated with the Bitcoin Network via the Maestro MCP. This is just the beginning of a new development frontier- one where creativity reigns and the only limitation to building new applications leveraging Bitcoin data is your imagination. Be sure to review Maestro's rate limits and [pricing tiers](https://www.gomaestro.org/pricing) to select the plan that best fits your application's needs. *** ## Debugging The following tools are useful for debugging a locally-running MCP server. * inspector * mcp-cli **Support** If you are experiencing any trouble with the above, [open an issue](https://github.com/maestro-org/maestro-mcp/issues/new) or reach out on Discord. # Mempool.space Migration Guide Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/mempool-space-migration-guide Complete migration guide from Mempool.space to Maestro's Esplora-compatible Bitcoin API with endpoint mapping and cost savings. This guide will walk you through migrating from [Mempool.space](https://mempool.space) to [Maestro's Esplora API](/bitcoin/esplora-api/overview) service. Maestro provides an **Esplora-compatible REST API** for querying Bitcoin data: addresses, transactions, blocks, and the mempool. This enables users currently relying on Mempool.space for their Bitcoin data to utilize Maestro as their provider and enjoy significant savings with minimal switching cost. Transitioning from Mempool.space involves mapping endpoints to their Maestro counterparts and adjusting the URL and request structures accordingly. ### About Esplora [Esplora](https://github.com/Blockstream/esplora) is a block explorer and RESTful API framework developed and maintained by [Blockstream](https://blockstream.com/). The service offers a lightweight, high-performance interface for querying Bitcoin blockchain data including blocks, transactions, addresses, and the mempool. *** ### Prerequisites 1. Obtain a Maestro [API key](https://dashboard.gomaestro.org). 2. Review [Bitcoin API documentation](/bitcoin/esplora-api/overview). ### Base URL | **Network** | **Mempool.space** | **Maestro** | | ----------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | | Mainnet | [https://mempool.space/api](https://mempool.space/api) | [https://xbt-mainnet.gomaestro-api.org/v0/esplora](https://xbt-mainnet.gomaestro-api.org/v0/esplora) | | Testnet4 | [https://mempool.space/testnet4/api](https://mempool.space/testnet4/api) | [https://xbt-testnet.gomaestro-api.org/v0/esplora](https://xbt-testnet.gomaestro-api.org/v0/esplora) | ### Headers | **Mempool.space** | **Maestro** | | ----------------- | ----------- | | - | `api-key` | ### Examples ```bash theme={null} # Maestro curl -sSL "https://xbt-mainnet.gomaestro-api.org/v0/esplora/address/bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94" \ --header 'Accept: application/json' \ --header 'api-key: ' # Mempool.space curl -sSL "https://mempool.space/api/address/bc1qcx7ys0ahvtfqcc63sfn6axls0qrhkadnslpd94" ``` ### Supported Areas Maestro’s Esplora-compatible API supports: | **Service** | **Supported** | | --------------------------- | ------------- | | Addresses | ✓ | | Blocks | ✓ | | General | - | | Mining | - | | Fees | - | | Mempool | ✓ | | Transactions | ✓ | | Lightning | - | | Accelerator (Public) | - | | Accelerator (Authenticated) | - | ### Address | **Mempool.space** | **Maestro** | | ----------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | | [`/api/address/:address`](https://mempool.space/docs/api/rest#get-address) | [`/address/:address`](/bitcoin/esplora-api/addresses/address) | | [`/api/address/:address/txs`](https://mempool.space/docs/api/rest#get-address-transactions) | [`/address/:address/txs`](/bitcoin/esplora-api/addresses/address-transactions) | | [`/api/address/:address/txs/chain`](https://mempool.space/docs/api/rest#get-address-transactions-chain) | [`/address/:address/txs/chain`](/bitcoin/esplora-api/addresses/address-transactions-chain) | | [`/api/address/:address/txs/mempool`](https://mempool.space/docs/api/rest#get-address-transactions-mempool) | [`/address/:address/txs/mempool`](/bitcoin/esplora-api/addresses/address-transactions-mempool) | | [`/api/address/:address/utxo`](https://mempool.space/docs/api/rest#get-address-utxo) | [`/address/:address/utxo`](/bitcoin/esplora-api/addresses/address-utxos) | ### Block | **Mempool.space** | **Maestro** | | --------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- | | [`/api/block/:hash`](https://mempool.space/docs/api/rest#get-block) | [`/block/:hash`](/bitcoin/esplora-api/blocks/block) | | [`/api/block/:hash/header`](https://mempool.space/docs/api/rest#get-block-header) | [`/block/:hash/:header`](/bitcoin/esplora-api/blocks/block-header) | | [`/api/block/:hash/status`](https://mempool.space/docs/api/rest#get-block-status) | [`/block/:hash/status`](/bitcoin/esplora-api/blocks/block-status) | | [`/api/block/:hash/txs[/:start_index]`](https://mempool.space/docs/api/rest#get-block-transactions) | [`/block/:hash/txs/:start_index`](/bitcoin/esplora-api/blocks/get-block-transactions) | | [`/api/block/:hash/txids`](https://mempool.space/docs/api/rest#get-block-transaction-ids) | [`/block/:hash/txids`](/bitcoin/esplora-api/blocks/block-transaction-ids) | | [`/api/block/:hash/txid/:index`](https://mempool.space/docs/api/rest#get-block-transaction-id) | [`/block/:hash/txid/:index`](/bitcoin/esplora-api/blocks/block-transaction-id) | | [`/api/block/:hash/raw`](https://mempool.space/docs/api/rest#get-block-raw) | [`/block/:hash/raw`](/bitcoin/esplora-api/blocks/block-raw) | | [`/api/blocks[/:start_height]`](https://mempool.space/docs/api/rest#get-blocks) | [`/blocks/:start_height`](/bitcoin/esplora-api/blocks/blocks) | | [`/api/block-height/:height`](https://mempool.space/docs/api/rest#get-block-height) | [`/block-height/:height`](/bitcoin/esplora-api/blocks/block-height) | | [`/api/blocks/tip/height`](https://mempool.space/docs/api/rest#get-block-tip-height) | [`/blocks/tip/height`](/bitcoin/esplora-api/blocks/block-tip-height) | | [`/api/blocks/tip/hash`](https://mempool.space/docs/api/rest#get-block-tip-hash) | [`/blocks/tip/hash`](/bitcoin/esplora-api/blocks/block-tip-hash) | ### Mempool | **Mempool.space** | **Maestro** | | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | | [`/api/mempool`](https://mempool.space/docs/api/rest#get-mempool) | [`/mempool`](/bitcoin/esplora-api/mempool/mempool) | | [`/api/mempool/txids`](https://mempool.space/docs/api/rest#get-mempool-transaction-ids) | [`/mempool/txids`](/bitcoin/esplora-api/mempool/mempool-transaction-ids) | | [`/api/mempool/recent`](https://mempool.space/docs/api/rest#get-mempool-recent) | [`/mempool/recent`](/bitcoin/esplora-api/mempool/mempool-recent) | ### Transaction | **Mempool.space** | **Maestro** | | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | | [`/api/tx/:txid/merkeblock-proof`](https://mempool.space/docs/api/rest#get-transaction-merkleblock-proof) | [`/tx/:txid/merkleblock-proof`](/bitcoin/esplora-api/transactions/transaction-merkleblock-proof) | | [`/api/tx/:txid/merkle-proof`](https://mempool.space/docs/api/rest#get-transaction-merkle-proof) | [`/tx/:txid/merkle-proof`](/bitcoin/esplora-api/transactions/transaction-merkle-proof) | | [`/api/tx/:txid/outspend/:vout`](https://mempool.space/docs/api/rest#get-transaction-outspend) | [`/tx/:txid/outspend/:vout`](/bitcoin/esplora-api/transactions/transaction-outspend) | | [`/api/tx/:txid/outspends`](https://mempool.space/docs/api/rest#get-transaction-outspends) | [`/tx/:txid/outspends`](/bitcoin/esplora-api/transactions/transaction-outspends) | | [`/api/tx/:txid/raw`](https://mempool.space/docs/api/rest#get-transaction-raw) | [`/tx/:txid/raw`](/bitcoin/esplora-api/transactions/transaction-raw) | | [`/api/tx/:txid/rbf`](https://mempool.space/docs/api/rest#get-transaction-rbf-timeline) | [`/tx/:txid/rbf`](/bitcoin/esplora-api/transactions/transaction-rbf-timeline) | | [`/api/tx/:txid/status`](https://mempool.space/docs/api/rest#get-transaction-status) | [`/tx/:txid/status`](/bitcoin/esplora-api/transactions/transaction-status) | | [`/api/tx/:txid`](https://mempool.space/docs/api/rest#get-transaction) | [`/tx/:txid`](/bitcoin/esplora-api/transactions/transaction) | | [`/api/tx/:txid/hex`](https://mempool.space/docs/api/rest#get-transaction-hex) | [`/tx/:txid/hex`](/bitcoin/esplora-api/transactions/transaction-hex) | | [`/api/tx (POST)`](https://mempool.space/docs/api/rest#post-transaction) | [`/tx (POST)`](/bitcoin/esplora-api/transactions/transaction) | *** ### Key Differences * Maestro is focused on **Bitcoin mainnet/testnet4** data; **no Liquid or Lightning support** * Maestro returns **identical JSON structures** to Esplora spec, making migration straightward * Some endpoints such as `stats`, `mining/pools`, or prices must be implemented elsewhere if needed ## Using the Esplora-BDK-Proxy for Maestro API Key Authorization When migrating from **Mempool.space** to **Maestro’s Esplora API**, applications that rely on the [BDK (Bitcoin Development Kit)](https://bitcoindevkit.org/) may encounter authorization issues. Maestro’s Esplora API requires an `api-key` to be included in every request, while many BDK integrations (or other Esplora clients) don’t natively support adding custom headers. The **[Maestro Esplora-BDK-Proxy](https://github.com/maestro-org/maestro-esplora-proxy)** solves this problem by acting as a lightweight, local proxy that automatically injects your Maestro API key into requests. *** ### Why You Need It * **BDK limitation:** No built-in method to send custom headers like `api-key`. * **Solution:** Run the Esplora-BDK-Proxy locally; your BDK app connects to it instead of calling Maestro directly. * **Benefit:** Transparent to your BDK code—no code changes needed beyond pointing to the proxy URL. *** ### Installation & Configuration **1. Clone the Repository** ```bash theme={null} git clone https://github.com/maestro-org/maestro-esplora-proxy.git && cd maestro-esplora-proxy ``` **2. Configure Environment** Copy the `.env.example` file to `.env`: ```bash theme={null} cp .env.example .env ``` Edit `.env` and set: ```env theme={null} MAESTRO_API_KEY=your-maestro-api-key-here # For Mainnet ESPLORA_URL=https://xbt-mainnet.gomaestro-api.org/v0/esplora # For Testnet4 (uncomment if needed) # ESPLORA_URL=https://xbt-testnet.gomaestro-api.org/v0/esplora ``` **3. Run the Proxy** ```bash theme={null} cargo run ``` By default, the proxy listens on `http://localhost:8080`. *** ### Updating Your BDK Code In your BDK initialization, replace the direct Maestro Esplora URL with the proxy’s local address: ```rust theme={null} let blockchain = EsploraBlockchain::new("http://localhost:8080", 20); ``` Your BDK app now makes requests to the proxy, which automatically appends the `api-key` and forwards requests to Maestro’s Esplora API. ### 🎉 You’re Done! You now have walked through a guide on how to migrate from [Mempool.space](https://mempool.space) to [Maestro](https://gomaestro.org) as your de-facto on-chain data provider. ### Additional Resources * **Maestro Documentation**: [Esplora API overview](/bitcoin/esplora-api/overview) * **Mempool.space Documentation**: [https://mempool.space/docs/api/rest](https://mempool.space/docs/api/rest) Be sure to review Maestro's rate limits and [pricing tiers](https://www.gomaestro.org/pricing) to select the plan that best fits your application's needs. *** **Support** If you are experiencing any trouble with the above, reach out on Discord. # Metaprotocols canister usage guide Source: https://docs.developer.gomaestro.org/bitcoin/tutorials-and-guides/metaprotocols-canister-usage-guide # Bitcoin Metaprotocols Canister Usage Guide ## Overview The Bitcoin Metaprotocols Canister is an [Internet Computer](https://internetcomputer.org) (ICP) canister that provides indexing services for Bitcoin metaprotocols, specifically focused on Bitcoin inscriptions. It leverages the [Maestro API](/bitcoin) to fetch and process Bitcoin metaprotocol data, providing structured access to inscription information associated with Bitcoin addresses and UTXOs. Maestro Official Deployed Canister: [iayqr-yaaaa-aaaar-qbopq-cai](https://dashboard.internetcomputer.org/canister/iayqr-yaaaa-aaaar-qbopq-cai) ## Key Features * **Address Inscriptions**: Get all inscriptions associated with a Bitcoin address * **UTXO Inscriptions**: Get inscriptions for specific transaction outputs * **Collection Metadata**: Fetch collection symbols and floor prices * **Authorization**: Built-in access control for authorized callers only ## Prerequisites * A Maestro [API key](https://dashboard.gomaestro.org/login) Before deploying and using the canister, ensure you have: 1. **Rust** - [Install Rust](https://www.rust-lang.org/tools/install) 2. **DFX** - [Install DFX](https://internetcomputer.org/docs/building-apps/getting-started/install#installing-dfx-via-dfxvm) 3. **WebAssembly target** for Rust: ```bash theme={null} rustup target add wasm32-unknown-unknown ``` 4. **Additional tools** for Candid generation: * `didc` binary from [Candid releases](https://github.com/dfinity/candid/releases) * `ic-wasm`: `cargo install ic-wasm` * `candid-extractor`: `cargo install candid-extractor` ### Authorization The canister implements access control through a hardcoded list of authorized principals. As it currently exists, only the following principals can call the canister methods: * Maestro principals * Liquidium principals * Other authorized entities **Current authorized callers**: *These should be replaced with your own list of authorized callers before deployment and canister interaction.* ```rust theme={null} // Constants pub const AUTHORIZED_CALLERS: [&str; 7] = [ "62ick-jmsqq-h6wq5-emdfw-qblno-qphae-hs7y3-dxoyp-xiccq-bw4q3-aae", // maestro "xktoe-jjqeb-tzsr3-hxjir-en65h-6agv7-bbq2g-dyoch-276wj-waea7-rqe", "roqha-4aaaa-aaaap-qplnq-cai", // liquidium "e453p-eqaaa-aaaar-qanya-cai", "vr4ua-siaaa-aaaar-qaosq-cai", "pimqm-2dtug-w3ejt-krqai-jlp3u-uux2y-erjcw-wbvhu-pmvhu-hunju-wqe", "daoh3-exchb-6dvbd-fyxld-7kxjo-fdddf-4vhqp-mcoo2-s7gqh-qwpfd-pae", ]; ``` [Source](https://github.com/maestro-org/maestro-bitcoin-metaprotocols-canister/blob/main/src/bitcoin-metaprotocols-canister/src/common.rs) ## Deployment Guide ### Local Development Deployment **Note:** If the `--network` argument is not provided, it defaults to the public playground. For local deployments use `--network=local`. For mainnet use `--network=ic`. #### 1. Setup identity (Optional) Create a new dedicated identity, or: Use the default one for local development: ```bash theme={null} dfx identity use default ``` #### 2. Start Local ICP Subnet In a *separate* terminal window, start the local Internet Computer subnet. This will create a local canister execution environment and web server processes. This enables you to test your dapps during development. ```bash theme={null} dfx start --clean ``` Output: ```bash theme={null} Running dfx start for version 0.26.1 Using the default configuration for the local shared network. Replica API running on 127.0.0.1:4943. You must open a new terminal to continue developing. If you'd prefer to stop, quit with 'Ctrl-C'. ``` #### 3. Create and Deploy Canister Create the development canister: *Creates an empty canister and associates the assigned Canister ID to the canister name.* ```bash theme={null} dfx canister create bitcoin-metaprotocols-canister-dev ``` Output: ```bash theme={null} Created a wallet canister on the "local" network for user "default" with ID "uqqxf-5h777-77774-qaaaa-cai" bitcoin-metaprotocols-canister-dev canister created with canister id: uxrrr-q7777-77774-qaaaq-cai ``` Generate DID: * A `.did` file is a text file that contains a [Candid](https://internetcomputer.org/docs/building-apps/interact-with-canisters/candid) service description, written either manually or generated from a canister's code. * It describes the public methods, arguments, and return types of a canister. ```bash theme={null} dfx generate --network=local bitcoin-metaprotocols-canister-dev ``` Output: ```bash theme={null} Generated type declarations for canister 'bitcoin-metaprotocols-canister-dev' to 'maestro-bitcoin-metaprotocols-canister/src/declarations/bitcoin-metaprotocols-canister-dev' ``` Build the canister: *Compiles the program code into a WebAssembly module that can be deployed on ICP.* ```bash theme={null} dfx build --network=local bitcoin-metaprotocols-canister-dev ``` Output: ```bash theme={null} Building canister 'bitcoin-metaprotocols-canister-dev'. Executing: cargo build --target wasm32-unknown-unknown --release -p bitcoin-metaprotocols-canister --locked Finished building canisters. ``` Install the canister: *Installs compiled code in a canister.* ```bash theme={null} dfx canister install --network=local bitcoin-metaprotocols-canister-dev ``` Output: ```bash theme={null} Installed code for canister bitcoin-metaprotocols-canister-dev, with canister ID uxrrr-q7777-77774-qaaaq-cai ``` **Note:** You can also run `dfx canister deploy` to combine the following steps in the future: * `dfx canister create ` * `dfx build` * `dfx canister install ` #### 4. Render the Canister After [starting the local ICP subnet](#2-start-local-icp-subnet), we can leverage [Candid UI](https://internetcomputer.org/docs/building-apps/interact-with-canisters/candid/using-candid) to interact with our canister directly within the browser. ```bash theme={null} http://127.0.0.1:4943/?canisterId=u6s2n-gx777-77774-qaaba-cai&id=uxrrr-q7777-77774-qaaaq-cai ``` You may notice the `canisterId` query parameter with value: `u6s2n-gx777-77774-qaaba-cai`; this is Candid's canister that is necessary in order to render our canister's functionality. **Note:** ICP's canister IDs are *non-deterministic*, so you may need to replace the above `uxrrr-q7777-77774-qaaaq-cai` canister ID with the ID that is generated from the [Create and Deploy canister](#3-create-and-deploy-canister) step if you are not wiping the subnet state for consecutive deployments. ![Candid UI interface showing canister methods](https://github.com/user-attachments/assets/34499959-d703-4f54-85f6-f3523e492ae4) ### Canister Interaction The canister is designed to work with Bitcoin mainnet data through the Maestro API. **Note:** Regtest support would require modifications to the API endpoints or the use of a regtest-compatible indexing service. ## Available Methods The canister exposes the following public methods: ### 1. get\_address\_inscriptions Retrieves all inscriptions associated with a Bitcoin address. **Method**: `get_address_inscriptions(address: text, count: text) -> (Result)` **Parameters**: * `address`: Bitcoin address (e.g., "bc1pa2lw8d6u3kkexzqn9hqgzultkzjjc9rxtveldes68ryfdq8tmslqwfuccl") * `count`: Maximum number of inscriptions to return (e.g., "10") **Returns**: `AddressInscriptions` containing: * `data`: Array of inscription details * `last_updated`: Block information when data was last updated * `next_cursor`: Pagination cursor for additional results **Authorization**: Only authorized principals can call this method. **Example Usage**: ```bash theme={null} dfx canister call --update bitcoin-metaprotocols-canister-dev get_address_inscriptions '("bc1pa2lw8d6u3kkexzqn9hqgzultkzjjc9rxtveldes68ryfdq8tmslqwfuccl", "10")' ``` [API Docs: Inscription Info](/bitcoin/blockchain-indexer-api/inscriptions/inscription-info) ### 2. get\_utxo\_inscriptions Retrieves inscriptions for a specific UTXO (transaction output). **Method**: `get_utxo_inscriptions(tx_hash: text, output_index: text) -> (Result_1)` **Parameters**: * `tx_hash`: Transaction hash * `output_index`: Output index within the transaction **Returns**: `UtxoInscriptions` containing: * `data`: Array of inscription details for the UTXO * `last_updated`: Block information * `next_cursor`: Pagination cursor **Authorization**: Only authorized principals can call this method. **Example Usage**: ```bash theme={null} dfx canister call --update bitcoin-metaprotocols-canister-dev get_utxo_inscriptions '("604abd1c0ff2ce5a89b004a0601a75280ed3b76384af37b0a46a23471e9288e7", "1")' ``` [API Docs: Transaction Output Info](/bitcoin/blockchain-indexer-api/transactions/transaction-output-info) ### 3. set\_api\_key Sets the Maestro API key for the canister (admin only). **Method**: `set_api_key(key: text) -> (Result_2)` **Parameters**: * `key`: Maestro API key string **Authorization**: Only authorized principals can call this method. **Example Usage**: ```bash theme={null} dfx canister call --update bitcoin-metaprotocols-canister-dev set_api_key '("maestro_api_key")' ``` ### 4. get\_api\_key Retrieves the current API key (admin only, query method). **Method**: `get_api_key() -> (text)` **Returns**: Current API key string **Authorization**: Only authorized principals can call this method. **Example Usage**: ```bash theme={null} dfx canister call bitcoin-metaprotocols-canister-dev get_api_key '()' ``` ## Data Structures ### AddressInscription ```candid theme={null} type AddressInscription = record { floor_price : int64; satoshis : text; utxo_block_height : int64; utxo_txid : text; utxo_vout : int32; utxo_sat_offset : int64; inscription_id : text; collection_symbol : opt text; utxo_confirmations : int64; omb_color : opt text; omb_floor_price : opt int64 }; ``` ### UtxoInscription ```candid theme={null} type UtxoInscription = record { inscription_id : text; collection_symbol : opt text; omb_color : opt text; omb_floor_price : opt int64 }; ``` ### LastUpdated ```candid theme={null} type LastUpdated = record { block_hash : text; block_height : int64 }; ``` ## Troubleshooting ### Common Issues 1. **"Unauthorized" Error** * Ensure your principal is in the authorized callers list * Use `dfx identity get-principal` to check your principal ID 2. **API Key Issues** * Verify the API key is set correctly * Ensure you have a valid Maestro API key * Check that the API key has sufficient permissions 3. **Deployment Issues** * Ensure all prerequisites are installed * Run `make generate_did` before deployment * Check that the WebAssembly target is installed ### Getting Canister Information ```bash theme={null} # Get canister ID dfx canister id bitcoin-metaprotocols-canister-dev # Get canister info dfx canister info bitcoin-metaprotocols-canister-dev # Check canister status dfx canister status bitcoin-metaprotocols-canister-dev ``` ### Cycle Management The canister uses cycles for HTTP outcalls to the Maestro API. Monitor cycle usage: ```bash theme={null} # Check cycles balance dfx canister status bitcoin-metaprotocols-canister-dev # Add cycles if needed dfx canister deposit-cycles 1000000000000 bitcoin-metaprotocols-canister-dev ``` ## API Rate Limits and Costs * Each HTTP request to Maestro API consumes cycles (approximately 1B cycles per request) * The canister makes multiple API calls per inscription to fetch complete data: * Address inscriptions API call * Inscription info API call (per inscription) * Collection stats API call (per collection) * OMB color group API call (per inscription) * Plan cycle usage accordingly based on expected query volume ### Debugging Enable debug logging in the canister by checking the `ic_cdk::println!` statements in the source code. These will output to the replica logs during development. * [Cycleops](https://cycleops.dev/) for monitoring and topping up canisters. ## 🎉 You’re Done! You have now walked through a guide on how to deploy and interact with the Maestro Bitcoin Metaprotocols Canister. Be sure to check out [Maestro's additional services](https://www.gomaestro.org/chains/bitcoin) for further assisting your development of building on Bitcoin. *** ### Support If you are experiencing any trouble with the above, [submit an issue](https://github.com/maestro-org/maestro-bitcoin-metaprotocols-canister/issues/new) or reach out on Discord. # Address Statistics (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/address-statistics-mempool-aware bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/statistics Get Bitcoin address statistics with mempool awareness including balance, transaction count, and activity metrics. # Historical Satoshi Balance by Address Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/historical-satoshi-balance-by-address bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/balance/historical Get historical Bitcoin satoshi balance data for an address at specific block heights or timestamps with USD valuation. # Inscription Activity by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/inscription-activity-by-address-mempool-aware bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/inscriptions/activity Get Bitcoin Ordinals inscription activity for an address including transfers and ownership changes with mempool awareness. # Metaprotocol Activity by Address Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/metaprotocol-activity-by-address bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/activity/metaprotocols Get metaprotocol activity for a Bitcoin address including Runes, inscriptions, and other token-related transactions. # Rune Activity by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/rune-activity-by-address-mempool-aware bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/runes/activity Get Bitcoin rune transaction activity for a specific address including minting, transfers, and balance changes with mempool awareness. # Wallet Satoshi Activity by Address (Mempool-aware) Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/addresses/wallet-satoshi-activity-by-address-mempool-aware bitcoin/wallet-api/openapi.json get /wallet/addresses/{address}/activity Get comprehensive Bitcoin address activity with mempool awareness for real-time wallet management and transaction tracking. # Bitcoin - Wallet API Source: https://docs.developer.gomaestro.org/bitcoin/wallet-api/overview Bitcoin Wallet API for detailed address-level transaction activity, including satoshi tracking, inscription monitoring, and rune balance management. Maestro's Bitcoin Wallet API delivers detailed transaction activity data at the address level, spanning native Bitcoin (satoshis) and metaprotocol layers like inscriptions and runes. This API enables deep visibility into balance changes, token movements, and asset-specific behaviors. Useful for powering explorers, wallets, or dashboards with granular insight into address-level history and asset interactions. ## Key Features * **Satoshi Activity Tracking:** Track and analyze satoshi-level balance changes—including increases, decreases, and self-transfers—with timestamped precision. Historical balances are itemized by either block height or timestamp, enabling accurate auditing, time-based analysis, and USD-denominated valuation over time. * **Inscription Insight:** Monitor Ordinals transactions, filtered by inscription ID, activity type (send/receive), or self-transfer logic to reduce noise from spam or internal moves. * **Rune Transaction Logging:** Track rune minting, transfers, etchings, and balance changes for a given address, including support for filtering by specific rune. * **Unified Metaprotocol View:** Fetch combined activity across satoshis, inscriptions, and runes in a single request to power holistic user or address histories. * **Mempool Awareness:** Provides insight into the latest activity from the mempool by default. The system monitors for block reorganizations and automatically rolls back unconfirmed or invalidated trades, ensuring the data reflects the confirmed state of the chain. ## Key Benefits for Developers Developers gain the ability to surface address-level insights without having to manually parse raw blockchain data. The Wallet API simplifies historical activity analysis, enables protocol-specific filtering, and lets developers build UX-enhancing features like transaction history views, asset trackers, and real-time alerts for wallet activity without managing indexing infrastructure. # API Usage Source: https://docs.developer.gomaestro.org/cardano/api-usage Cardano API usage guide with authentication, pagination, rate limits, and best practices for Maestro's Cardano blockchain APIs. ## Authentication You will need an `api-key` to access the Maestro API. You can obtain this key from the Maestro dApp Platform Dashboard. ## Examples ### GET Request Example GET request for retrieving the chain tip: ```bash theme={null} curl -X GET \ -H "api-key: " \ https://mainnet.gomaestro-api.org/v1/chain-tip ``` ### POST Request Example POST request for submitting a transaction: ```bash theme={null} curl -X POST \ -H "Content-Type: application/cbor" \ -H "api-key: " \ --data @tx.signed \ https://mainnet.gomaestro-api.org/v1/submit/tx ``` # Security To ensure the security of your API usage, follow these best practices: * **Keep your API key private**: Never share it publicly (e.g., on GitHub, client-side code). * **Prevent unauthorized usage**: Loss or misuse of your API key can result in the overuse of your account's available credits. * **Secure your API key**: Implement proper methods for storing and accessing your `api-key`, especially in production environments. # Cursor-based Pagination Some Maestro endpoints use **Cursor-based Pagination to break large datasets into smaller, more manageable responses.** This method is particularly relevant when returning all the data in a single response would be inefficient or slow. * **Improved data integrity and accuracy** when fetching multiple pages. * **Prevents duplicates**, even when new blocks are processed between queries. * **Optimized for infinite scroll**, enabling a smooth user experience by loading content as the user scrolls. When using this method, responses will include a `next_cursor` string. This value should be passed as the `cursor` parameter in your next request to retrieve the next page of results. ## Example * **Initial Response**: When you make an initial API call, the response might include a `"next_cursor": "AAAAAALfeKF8btdzaVvkGaetSS7e1AAF"`. This indicates that there are more results to retrieve. * \*\*Using \*\*`next_cursor`: To get the next page of data, you need to include the `next_cursor` value in your next API request by adding it as a query parameter (`cursor`). * **Modifying the Query**: Append the cursor value to your API request URL, like this: ``` ?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF ``` * **Result**: The API will return the next set of results when this value is provided. * \*\*End of Data: \*\*If the response includes `"next_cursor": null` then the end of the requested dataset has been reached. **Other relevant query parameters are:** | Parameter | Default | Description | | :-------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `count` | `100` | Defines the maximum number of results per pagination page | | `order` | `asc` | Specifies the sort order of the results. Acceptable values are `asc` (ascending) or `desc` (descending). This option is available only for specific endpoints. | **Example** ```bash theme={null} curl -L -X GET 'https://mainnet.gomaestro-api.org/v1/policy/f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a/utxos?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF' \ -H 'Accept: application/json' \ -H 'api-key: your-api-key' ``` # Computer Credits Maestro uses **Compute Credits** to measure the computational resources consumed by your applications on its platform, similar to traditional cloud providers like Google Cloud or AWS. The number of credits assigned to each operation or method is based on the global average duration of that process,\*\* taking into account factors like complexity and computational intensity. \*\* Learn more about how Compute Credits are allocated by exploring the **Subscription breakdown.** Compute Credits provide a **fair, usage-based pricing model**, meaning you only pay for the computational resources your application actually uses, making it both **cost-efficient** and **flexible**. # Request Limits Maestro enforces two types of API rate limits: * **Per day**: a set amount of credits consumed per day based on your [subscription](https://www.gomaestro.org/pricing) plan. * **Per second**: a set amount of requests per second based on your [subscription](https://www.gomaestro.org/pricing) plan. *For example, the ****Artist plan**** supports up to 10 requests per second.* For more details on available packages or to upgrade your plan, refer to the [Pricing page](https://www.gomaestro.org/pricing).[ ](https://www.gomaestro.org/pricing)If your organization needs higher limits, [contact us](mailto:info@gomaestro.org) to discuss **Enterprise solutions**. # Response Headers Maestro includes the following headers in API responses to help manage usage: | Header | Description | | :------------------------------- | :----------------------------------------------------- | | X-RateLimit-Limit-Second | Maximum allowed requests per second. | | **X-RateLimit-Remaining-Second** | **Remaining allowed requests for the current second.** | | X-Maestro-Credits-Limit | Total allowed credits for the day. | | **X-Maestro-Credits-Remaining** | **Remaining credits for the day.** | Be sure to monitor these values (in **bold**) and adjust your request rate accordingly to avoid hitting rate limits. # Errors Maestro follows standard HTTP response codes to indicate the success or failure of API requests: | 2xx | Success | | :-- | :----------------------------------------------------------- | | 4xx | Client-side errors, such as missing or incorrect parameters. | | 5xx | Server-side errors with Maestro. | Refer to the [API Reference](/general/platform-overview) for detailed response codes for each endpoint. # Stake account addresses Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-addresses cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/addresses Get all payment addresses associated with a specific Cardano stake account for wallet management. # Stake account assets Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-assets cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/assets Get native assets controlled by addresses associated with a specific Cardano stake account. # Stake account delegation history Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-delegation-history cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/delegations Get delegation history for a Cardano stake account including stake pool changes and active epochs. # Stake account history Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-history cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/history Get comprehensive activity history for a Cardano stake account including all delegations and rewards. # Stake account information Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-information cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr} Get comprehensive information about a Cardano stake account including delegation status and rewards. # Stake account rewards Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-rewards cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/rewards Get reward history for a Cardano stake account including staking rewards and withdrawal records. # Stake account updates Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/accounts/stake-account-updates cardano/blockchain-indexer-api/openapi.json get /accounts/{stake_addr}/updates Get registration and deregistration history for a Cardano stake account with timestamp details. # Address transaction count Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/address-transaction-count cardano/blockchain-indexer-api/openapi.json get /addresses/{address}/transactions/count Get the total number of transactions associated with a specific Cardano address for analytics and pagination. # Address transactions Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/address-transactions cardano/blockchain-indexer-api/openapi.json get /addresses/{address}/transactions Get transaction history for a Cardano address with detailed input/output information and smart contract interactions. # Balance by payment credential Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/balance-by-payment-credential cardano/blockchain-indexer-api/openapi.json get /addresses/cred/{credential}/balance Get balance information for a specific Cardano payment credential including ADA and native assets. # Decode address Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/decode-address cardano/blockchain-indexer-api/openapi.json get /addresses/{address}/decode Decode a Cardano address to extract payment credentials, staking credentials, and network information. # Payment credential transactions Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/payment-credential-transactions cardano/blockchain-indexer-api/openapi.json get /addresses/cred/{credential}/transactions Get transaction history for a specific Cardano payment credential with detailed transaction information. # Transactions by multiple payment credentials Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/transactions-by-multiple-payment-credentials cardano/blockchain-indexer-api/openapi.json post /addresses/cred/transactions Get transaction history for multiple Cardano payment credentials in a single batch request. # UTxO references at an address Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/utxo-references-at-an-address cardano/blockchain-indexer-api/openapi.json get /addresses/{address}/utxo_refs Get UTXO references for a Cardano address including transaction hash and output index pairs. # UTxOs at an address Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/utxos-at-an-address cardano/blockchain-indexer-api/openapi.json get /addresses/{address}/utxos Get unspent transaction outputs (UTxOs) at a Cardano address including native assets, ADA amounts, and datum information. # UTxOs by multiple addresses Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/utxos-by-multiple-addresses cardano/blockchain-indexer-api/openapi.json post /addresses/utxos Get UTXOs for multiple Cardano addresses in a single batch request for efficient wallet management. # UTxOs by multiple payment credentials Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/utxos-by-multiple-payment-credentials cardano/blockchain-indexer-api/openapi.json post /addresses/cred/utxos Get UTXOs for multiple Cardano payment credentials in a single batch request for efficient querying. # UTxOs by payment credential Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/addresses/utxos-by-payment-credential cardano/blockchain-indexer-api/openapi.json get /addresses/cred/{credential}/utxos Get unspent transaction outputs for a specific Cardano payment credential with asset details and values. # Accounts of addresses holding assets of specific policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/accounts-of-addresses-holding-assets-of-specific-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/accounts Get stake accounts associated with addresses holding assets from a specific Cardano minting policy. # Addresses holding assets of specific policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/addresses-holding-assets-of-specific-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/addresses Get list of addresses holding assets from a specific Cardano minting policy with balance information. # Information about a policy of native assets Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/information-about-a-policy-of-native-assets cardano/blockchain-indexer-api/openapi.json get /policy/{policy} Get detailed information about a Cardano minting policy including assets, metadata, and policy script details. # List assets of a policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/list-assets-of-a-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/assets Get comprehensive list of all native assets created under a specific Cardano minting policy. # Transactions involving assets of policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/transactions-involving-assets-of-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/transactions Get transaction history involving assets from a specific Cardano minting policy including transfers and mints. # Transactions minting or burning assets of policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/transactions-minting-or-burning-assets-of-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/mints Get minting and burning transaction history for assets under a specific Cardano minting policy. # UTxOs containing assets of specific policy Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/asset-policy/utxos-containing-assets-of-specific-policy cardano/blockchain-indexer-api/openapi.json get /policy/{policy}/utxos Get unspent transaction outputs containing assets from a specific Cardano minting policy with asset details. # Accounts of addresses holding specific asset Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/accounts-of-addresses-holding-specific-asset cardano/blockchain-indexer-api/openapi.json get /assets/{asset}/accounts Get stake accounts associated with addresses holding a specific Cardano native asset. # Native asset addresses Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/native-asset-addresses cardano/blockchain-indexer-api/openapi.json get /assets/{asset}/addresses Get list of addresses holding a specific Cardano native asset with balance amounts and distribution statistics. # Native asset information Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/native-asset-information cardano/blockchain-indexer-api/openapi.json get /assets/{asset} Get detailed information about a Cardano native asset including metadata, supply, and minting policy details. # Native asset mints and burns Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/native-asset-mints-and-burns cardano/blockchain-indexer-api/openapi.json get /assets/{asset}/mints Get minting and burning history for a specific Cardano native asset including transaction details and amounts. # Native asset transactions Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/native-asset-transactions cardano/blockchain-indexer-api/openapi.json get /assets/{asset}/transactions Get transaction history for a specific Cardano native asset including transfers, mints, and burns. # Native asset UTxOs Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/assets/native-asset-utxos cardano/blockchain-indexer-api/openapi.json get /assets/{asset}/utxos Get unspent transaction outputs (UTxOs) containing a specific Cardano native asset with address and amount details. # Block information Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/blocks/block-information cardano/blockchain-indexer-api/openapi.json get /blocks/{hash_or_height} Get detailed information about a specific Cardano block by hash or height including transactions and metadata. # Latest block information Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/blocks/latest-block-information cardano/blockchain-indexer-api/openapi.json get /blocks/latest Get information about the latest confirmed block on the Cardano blockchain including hash and timestamp. # Datum by datum hash Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/datums/datum-by-datum-hash cardano/blockchain-indexer-api/openapi.json get /datums/{datum_hash} Get Cardano datum details by datum hash including CBOR data and JSON representation for smart contract interactions. # Datums by hashes Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/datums/datums-by-hashes cardano/blockchain-indexer-api/openapi.json post /datums Get multiple Cardano datums by their hashes in a single request with CBOR and JSON representations for smart contracts. # Resolve ADA Handle Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/ecosystem/resolve-ada-handle cardano/blockchain-indexer-api/openapi.json get /ecosystem/adahandle/{handle} Resolve an ADA Handle to its corresponding Cardano address for user-friendly address management. # Current epoch details Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/epochs/current-epoch-details cardano/blockchain-indexer-api/openapi.json get /epochs/current Get current Cardano epoch information including parameters, pool statistics, and network metrics. # Specific epoch details Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/epochs/specific-epoch-details cardano/blockchain-indexer-api/openapi.json get /epochs/{epoch_no} Get detailed information about a specific Cardano epoch including parameters, statistics, and block count. # Blockchain system start Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/general/blockchain-system-start cardano/blockchain-indexer-api/openapi.json get /system-start Get the Cardano blockchain system start time and initial parameters used to bootstrap the network. # Chain-tip Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/general/chain-tip cardano/blockchain-indexer-api/openapi.json get /chain-tip Get the current Cardano blockchain tip information including latest block hash, number, and slot. # Era summary Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/general/era-summary cardano/blockchain-indexer-api/openapi.json get /era-summaries Get summary information about all Cardano blockchain eras including their start times and parameters. # Protocol parameters Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/general/protocol-parameters cardano/blockchain-indexer-api/openapi.json get /protocol-parameters Get current Cardano blockchain protocol parameters including fees, limits, and governance settings. # Cardano - Blockchain Indexer API Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/overview Fast, structured access to Cardano on-chain data for building wallets, explorers, and dApps with real-time blockchain experiences. The Blockchain Indexer API provides fast, structured access to on-chain data for Cardano and is designed for developers building wallets, explorers, dashboards, and blockchain-integrated apps. From tracking addresses and transactions to inspecting blocks and UTXOs, the Indexer API offers a highly-performant and developer-friendly interface for building real-time blockchain experiences without running your own node or maintaining complex infrastructure. ## Key Features * **Address Statistics & UTXOs**: Query the current balance, UTXOs, and transaction summaries for any blockchain address. * **Transaction Lookup**: Retrieve transaction details including inputs, outputs, confirmations, and block inclusion. * **Block Explorer Data**: Fetch block metadata by height, hash, or timestamp—including size, miner, difficulty, and transaction count. * **Token & Asset Metadata**: Surface custom token info, metadata, and transfer activity across tracked chains. * **Indexing & Activity Summaries**: Understand how an address or block is being used—number of inputs, outputs, sats in/out, and total movement. ## Key Benefits for Developers The Blockchain Indexer API allows developers to access real-time blockchain data through simple REST endpoints without the burden of managing infrastructure. It’s built on Maestro’s high-performance backend, delivering low-latency and high-throughput responses that scale with your application. JSON responses are consistently structured for clarity, making them easy to plug into dApps, analytics platforms, or frontend dashboards. This API is trusted in production by wallets, explorers, and fintech applications that depend on reliable and accurate chain data. # List registered stake pools Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/list-registered-stake-pools cardano/blockchain-indexer-api/openapi.json get /pools Get comprehensive list of all registered Cardano stake pools with their metadata and performance statistics. # Stake pool blocks Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-blocks cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/blocks Get list of blocks produced by a specific Cardano stake pool with timestamps and epoch information. # Stake pool delegator history Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-delegator-history cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/delegators/{epoch_no} Get historical snapshot of delegators for a Cardano stake pool at a specific epoch with stake amounts. # Stake pool delegators Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-delegators cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/delegators Get list of delegators staking to a specific Cardano stake pool with their stake amounts and addresses. # Stake pool history Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-history cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/history Get historical performance data for a Cardano stake pool including rewards, blocks, and delegation metrics. # Stake pool information Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-information cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/info Get detailed information about a specific Cardano stake pool including registration details and current status. # Stake pool metadata Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-metadata cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/metadata Get metadata information for a specific Cardano stake pool including name, description, and website details. # Stake pool relays Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-relays cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/relays Get relay node information for a specific Cardano stake pool including IP addresses and DNS names. # Stake pool updates Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/pools/stake-pool-updates cardano/blockchain-indexer-api/openapi.json get /pools/{pool_id}/updates Get update history for a Cardano stake pool including registration changes and parameter modifications. # Script by script hash Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/scripts/script-by-script-hash cardano/blockchain-indexer-api/openapi.json get /scripts/{script_hash} Get Cardano script details by script hash including Plutus script information and execution parameters. # Address by transaction output reference Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/address-by-transaction-output-reference cardano/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/outputs/{index}/address Get the address associated with a specific Cardano transaction output by transaction hash and output index. # CBOR bytes of a transaction Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/cbor-bytes-of-a-transaction cardano/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/cbor Get the CBOR-encoded bytes of a Cardano transaction for low-level parsing and analysis. # Evaluate redeemers of a transaction Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/evaluate-redeemers-of-a-transaction cardano/blockchain-indexer-api/openapi.json post /transactions/evaluate Evaluate Cardano transaction redeemers to calculate execution units and fees for Plutus smart contract transactions. # Transaction details Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/transaction-details cardano/blockchain-indexer-api/openapi.json get /transactions/{tx_hash} Get detailed Cardano transaction information including inputs, outputs, metadata, and smart contract interactions by transaction hash. # Transaction output by output reference Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/transaction-output-by-output-reference cardano/blockchain-indexer-api/openapi.json get /transactions/{tx_hash}/outputs/{index}/txo Get specific Cardano transaction output (UTxO) by transaction hash and output index with asset details and datum information. # Transaction outputs by output references Source: https://docs.developer.gomaestro.org/cardano/blockchain-indexer-api/transactions/transaction-outputs-by-output-references cardano/blockchain-indexer-api/openapi.json post /transactions/outputs Get multiple Cardano transaction outputs by their references in a single batch request for efficiency. # Changelog Source: https://docs.developer.gomaestro.org/cardano/changelog Cardano API changelog with version updates, Conway era compatibility, new features, and improvements for Maestro's Cardano services. ## Overview **Updated**: * `/transactions/{tx_hash}` Transaction details * New output fields: `reg_certs`, `unreg_certs`, `vote_delegations`, `stake_vote_delegations`, `stake_reg_delegations`, `vote_reg_delegations`, `stake_vote_reg_delegations`, `auth_committee_hot_certs`, `resign_committee_cold_certs`, `reg_drep_certs`, `unreg_drep_certs`, `update_drep_certs` * Extended redeemer information: `votes` and `proposals` **Updated**: * Any endpoints returning Scripts (e.g. Asset Policy, UTxOs, Script by script hash) * Added `plutusv3` Script type * `/policy/{policy}` Asset Policy * `/transactions/{tx_hash}/outputs/{index}/txo` Transaction output by output reference * `/transactions/outputs` Transaction outputs by output references * `/addresses/cred/utxos` UTxOs by multiple payment credentials * `/addresses/cred/{credential}/utxos` UTxOs by payment credential * `/addresses/utxos` UTxOs by multiple addresses * `/addresses/{address}/utxos` UTxOs at an address * `/scripts/{script_hash}` Script by script hash **Updated**: * `/transactions/evaluate` Evaluate redeemers of a transaction * Added returning `redeemer_tag` of vote and propose **Updated**: * `/accounts/{stake_addr}/updates` Stake account updates * Added returning `registration_deposit` **Updated**: * `/pools/{pool_id}/updates` Stake pool updates * `active_epoch_no` no longer required **Deprecated**: * `/era-history` Era history * Please use the improved `/era-summaries` Era summary **Added**: * `/era-summaries` Era summary * Replaces deprecated `/era-history` **Deprecated**: * `/protocol-params` Protocol parameters * Please use the improved `/protocol-parameters` Protocol parameters **Added**: * `/protocol-parameters` Protocol parameters * Replaces deprecated `/protocol-params` **Updated**: * `/markets/dexs/{dex}` DEX pairs * Added `pair`, `policy`, and `asset_name` filters **Added**: * Direct Swap Contract on Managed Contracts API * `/contracts/directSwap/createOffer` Create an offer * Create a new offer for direct swap * `/contracts/directSwap/cancelOffer` Cancel an offer * Cancel an existing offer for direct swap * `/contracts/directSwap/getOffers` Get all offers * Get all the existing offers for direct swap * `/contracts/directSwap/getOffers/:address` Get user's offers * Get all the existing offers for a specific user * `/contracts/directSwap/fillOffer` Fill an offer * Fill an existing offer for direct swap **Updated**: * `/markets/dexs/stats/{dex}/{pair}` DEX and Pair Stats * Added USD conversion for latest price, 1d, 1w, and 1mo **Updated**: * `/markets/dexs/stats/{dex}/{pair}` DEX and Pair Stats * Added `latest_price`, `market_cap`, `supply`, and `unique_holders` **Updated**: * `/markets/dexs/trades/{dex}/{pair}` DEX and Pair Trades * Added returning `a_to_b`, indicating the direction of each trade **Removed**: * Previously deprecated endpoints: * From v1.4.3: `/datum/{datum_hash}` * From v1.4.1: `/assets/policy/{policy}`, `/assets/policy/{policy}/accounts`, `/assets/policy/{policy}/addresses`, `/assets/policy/{policy}/txs`, `/assets/policy/{policy}/utxos`, `/assets/{asset}/txs`, `/assets/{asset}/updates` **Added**: * `/markets/dexs/stats/{dex}/{pair}` Get DEX Stats * Returns DEX and Token Stats over different timeframes **Updated**: * `/markets/dexs/ohlc/{dex}/{pair}` Get DEX OHLC * Now includes change percentage within each candle **Updated**: * `/accounts/{stake_addr}/addresses` Stake account addresses * Added an `include_empty` optional parameter to include all addresses ever seen on-chain **Added**: * `/addresses/cred/{credential}/balance` Balance by payment credential * Return total amount of assets, including ADA, in UTxOs controlled by a specific payment credential **Added**: * `/accounts/{stake_addr}/delegations` Stake account delegation history * Returns list of delegation actions relating to a stake account **Updated**: * `/accounts/{stake_addr}/history` Stake account history * Added `order`: The order in which the results are sorted (by epoch number) * `/accounts/{stake_addr}/rewards` Stake account rewards * Added `order`: The order in which the results are sorted (by epoch number) * `/accounts/{stake_addr}/updates` Stake account updates * Added `order`: The order in which the results are sorted (by absolute slot) **Updated**: * `/transactions/outputs` Transaction outputs by output references * Added an `allow_missing` parameter prevent returning a 404 if any output references are not found **Updated**: * Resolution and sort enums for DeFi Market API endpoints * `/markets/dexs/trades/{dex}/{pair}` Get DEX trades * `/markets/dexs/ohlc/{dex}/{pair}` Get DEX OHLC **Added**: * `/pools/{pool_id}/delegators/{epoch_no}` Stake pool delegator history **Updated**: * DeFi Market API - **Now out of Beta!** **Added**: * `/markets/dexs/trades/{dex}/{pair}` Get DEX trades **Removed**: * `/markets/dexs/prices/{dex}/{pair}` Get DEX prices **Added**: * `/markets/dexs/ohlc/{dex}/{pair}` Get DEX OHLC # Overview Source: https://docs.developer.gomaestro.org/cardano/index Cardano blockchain APIs and services from Maestro. Access smart contract capabilities, native assets, staking features, and transaction management tools. The [Cardano blockchain](https://cardanofoundation.org/) is a smart-contract-enabled proof-of-stake (PoS) blockchain based on the [Ouroboros consensus protocol](https://cardano.org/ouroboros/) offering [native liquid staking](https://cardano.org/stake-pool-delegation/). Cardano is provably secure, energy-efficient, and scalable. Its ledger employs the [Extended UTXO model](https://iohk.io/en/research/library/papers/the-extended-utxo-model/), similar to Bitcoin's UTxO model, but with enhanced capabilities like \*\*native asset issuance \*\*and \*\*smart contracts execution \*\*while maintaining \*\*robust security and scalability. \*\* *** ## Available Services Maestro provides the following services, accessible across multiple Bitcoin networks: ## Available Networks The service is available on the following Bitcoin networks: | ***Network*** | ***Base URL*** | | :----------------- | :------------------------------------- | | **Mainnet** | `https://mainnet.gomaestro-api.org/v1` | | **Pre-Production** | `https://preprod.gomaestro-api.org/v1` | | **Preview** | `https://preview.gomaestro-api.org/v1` | The Maestro API is currently versioned at `v1`. When making a query, `v1 `must be included in your base URL. # Cancel an offer Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/direct-swap/cancel-an-offer cardano/managed-contracts-api/openapi.json post /contracts/directSwap/cancelOffer Cancel an existing peer-to-peer asset swap offer on Cardano and reclaim the locked assets. # Create an offer Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/direct-swap/create-an-offer cardano/managed-contracts-api/openapi.json post /contracts/directSwap/createOffer Create a new peer-to-peer asset swap offer on Cardano using managed smart contracts for trustless token exchanges. # Fill an offer Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/direct-swap/fill-an-offer cardano/managed-contracts-api/openapi.json post /contracts/directSwap/fillOffer Fill an existing peer-to-peer asset swap offer on Cardano to complete the trustless token exchange. # Get all offers Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/direct-swap/get-all-offers cardano/managed-contracts-api/openapi.json get /contracts/directSwap/getOffers Get all active peer-to-peer asset swap offers on Cardano with filtering and pagination support. # Get user's offers Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/direct-swap/get-users-offers cardano/managed-contracts-api/openapi.json get /contracts/directSwap/getOffers/{address} Get all direct swap offers created by a specific Cardano address with details and current status. # End a multisig contract Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/multisig/end-a-multisig-contract cardano/managed-contracts-api/openapi.json post /contracts/multisig/end Terminate a multisignature contract and distribute remaining funds to specified beneficiaries. # Initiate a multisig contract Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/multisig/initiate-a-multisig-contract cardano/managed-contracts-api/openapi.json post /contracts/multisig/initiate Initiate a multi-signature contract on Cardano requiring multiple parties to authorize transactions for enhanced security. # Update a multisig contract Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/multisig/update-a-multisig-contract cardano/managed-contracts-api/openapi.json post /contracts/multisig/update Update an existing multisignature contract with new signers, thresholds, or transaction parameters. # Cardano - Managed Contracts API Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/overview Cardano Managed Contracts API for pre-deployed Plutus smart contracts including vesting, direct swaps, multisig, and staking functionality. The Cardano Managed Contracts API provides a high-level interface for interacting with pre-deployed Plutus smart contracts on the Cardano blockchain. It abstracts the complexity of script interactions into intuitive endpoints, allowing developers to build and manage powerful dApps with minimal effort. ## Key Features * **Vesting Contracts**: Create and manage time-based vesting schedules for tokens, enabling linear or staged release mechanisms. * **Direct Swap Contracts**: Facilitate peer-to-peer swaps of native assets without relying on centralized intermediaries or third-party trust. * **Single Asset Staking**: Launch staking campaigns where users can lock tokens and earn rewards. Includes full lifecycle: config, stake, update, withdraw, and reward distribution. * **Subscription Payments**: Power recurring payment models using NFTs. Includes service creation, user account setup, subscription flows, and merchant fee withdrawals. * **Multisig Smart Contracts**: Set up multi-party authorization schemes with thresholds, signer updates, and controlled fund distribution. * **Unsigned Transaction Builder**: All actions return unsigned CBOR transactions (cbor\_hex, tx\_hash), enabling flexible signing with any wallet or custody solution. ## Key Benefits for Developers Developers can leverage on-chain contracts without needing to write or deploy any Plutus code. The API offers simplified dApp integration through straightforward REST endpoints that manage complex workflows such as staking, vesting, and multisig operations. It’s fully compatible with Cardano Mainnet, Preprod, and Preview networks for seamless development and testing. # Admin - Create the config for a new campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/admin--create-the-config-for-a-new-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/createConfig Create configuration for a new single-asset staking campaign including rewards, duration, and staking parameters. # Admin - Initialize the staking for a new campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/admin--initialize-the-staking-for-a-new-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/initStaking Initialize a new single asset staking campaign with reward parameters and staking conditions. # Admin - process rewards for a campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/admin--process-rewards-for-a-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/processRewards Process and distribute rewards for a single asset staking campaign to all participating users. # Get the state of a campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/get-the-state-of-a-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/stakingState Get the current state and statistics of a single asset staking campaign including total stake and rewards. # User - Staking token to a campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/user--staking-token-to-a-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/stakeToken Stake tokens to a single-asset staking campaign to earn rewards based on the campaign configuration. # User - Updating stake on a campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/user--updating-stake-on-a-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/updateStake Update the amount of assets staked in a single asset staking campaign by increasing or decreasing stake. # User - Withdrawing stake from a campaign Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/single-asset-staking/user--withdrawing-stake-from-a-campaign cardano/managed-contracts-api/openapi.json post /contracts/singleAssetStaking/withdrawStake Withdraw staked assets from a single asset staking campaign with earned rewards calculation. # Create a subscription service Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/subscription/create-a-subscription-service cardano/managed-contracts-api/openapi.json post /contracts/subscription/createService Create a new subscription service contract on Cardano with customizable payment intervals and terms. # Create a user account Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/subscription/create-a-user-account cardano/managed-contracts-api/openapi.json post /contracts/subscription/createUserAccount Create a new user account for subscription services with wallet integration and payment setup. # Initiate a subscription Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/subscription/initiate-a-subscription cardano/managed-contracts-api/openapi.json post /contracts/subscription/initSubscription Initiate a recurring subscription payment on Cardano using NFT-based subscription management and automated billing. # Unsubscribe Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/subscription/unsubscribe cardano/managed-contracts-api/openapi.json post /contracts/subscription/unsubscribe Cancel an active subscription and stop recurring payments with proper contract termination. # Withdraw subscription fees Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/subscription/withdraw-subscription-fees cardano/managed-contracts-api/openapi.json post /contracts/subscription/withdrawFees Withdraw accumulated fees from subscription services to the service provider's wallet. # Collect assets Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/vesting/collect-assets cardano/managed-contracts-api/openapi.json post /contracts/vesting/collect/{beneficiary} Collect vested assets that are ready for release according to the vesting schedule for a beneficiary. # Lock assets Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/vesting/lock-assets cardano/managed-contracts-api/openapi.json post /contracts/vesting/lock Lock Cardano assets in a time-based vesting contract with configurable release schedules and beneficiary management. # State of vesting assets Source: https://docs.developer.gomaestro.org/cardano/managed-contracts-api/vesting/state-of-vesting-assets cardano/managed-contracts-api/openapi.json get /contracts/vesting/state/{beneficiary} Get the current state of vesting assets for a beneficiary including locked amounts and release schedule. # DEX and Pair OHLC Source: https://docs.developer.gomaestro.org/cardano/market-price-api/dex/dex-and-pair-ohlc cardano/market-price-api/openapi.json get /dexs/ohlc/{dex}/{pair} Get OHLC (Open, High, Low, Close) price data for a trading pair on a Cardano DEX with historical candles. # DEX and Pair Trades Source: https://docs.developer.gomaestro.org/cardano/market-price-api/dex/dex-and-pair-trades cardano/market-price-api/openapi.json get /dexs/trades/{dex}/{pair} Get recent trade data for a specific trading pair on a Cardano DEX with price and volume information. # DEX pairs Source: https://docs.developer.gomaestro.org/cardano/market-price-api/dex/dex-pairs cardano/market-price-api/openapi.json get /dexs/{dex} Get trading pairs available on a specific Cardano DEX with liquidity and volume information. # DEXs Source: https://docs.developer.gomaestro.org/cardano/market-price-api/dex/dexs cardano/market-price-api/openapi.json get /dexs Get list of supported Cardano decentralized exchanges (DEXs) with metadata and trading information. # Cardano - Market Price API Source: https://docs.developer.gomaestro.org/cardano/market-price-api/overview Cardano Market Price API for DEX market data, OHLC candlesticks, trading pairs, and real-time price feeds across Cardano ecosystem. The Market Price API provides streamlined access to decentralized exchange (DEX) market data across the Cardano ecosystem. Designed for developers building DeFi analytics tools, trading dashboards, portfolio trackers, or market research platforms, this API delivers real-time and historical data on token pairs, trades, and price movements in a clean, standardized format. Whether you need candlestick OHLC data, a feed of raw trades, or a list of available DEXs and their trading pairs, the Market Price API offers fast and reliable endpoints that eliminate the complexity of sourcing and parsing on-chain market information. ## Key Features * **DEX Discovery**: Retrieve a list of supported decentralized exchanges on Cardano. * **Available Pairs by DEX**: Query all tradable token pairs for a specific DEX, with optional filtering by policy ID or asset name. * **Candlestick (OHLC) Data**: Access historical and real-time price data in standard OHLC format for any token pair, with flexible time resolutions. * **Raw Trade Data**: Stream or query executed trades for specific token pairs to support live market visualizations and analytics. * **Multi-Network Support**: Access consistent market data across Cardano Mainnet, Preprod, and Preview environments. ## Key Benefits for Developers Developers can integrate high-quality DEX market data into their applications without running complex ingestion pipelines or maintaining your own market indexers. The API provides predictable, well-structured JSON responses that are easy to work with and can be directly plugged into dashboards, bots, or analytics engines. # SDKs Source: https://docs.developer.gomaestro.org/cardano/sdks Cardano SDKs and client libraries for multiple programming languages to integrate Maestro's Cardano APIs into your applications. Maestro is dedicated to empowering developer communities by offering SDKs in multiple programming languages. We continually expand and refine these SDKs, and we welcome contributions from developers to help shape Maestro's capabilities. Your insights and feedback are invaluable in ensuring our tools meet language-specific needs and unlock new possibilities. ## Available SDKs Currently, Maestro offers SDKs in the following languages: | Official SDKs | | | ------------- | ---------------------------------------------------------------- | | Haskell | View | | TypeScript | View | | Go | View | | Rust | View | | Python | View | | Unofficial SDKs | | | --------------- | ------------------------------------------------------------------- | | Java | View | ## Language-Specific Integrations For developers proficient in Haskell or TypeScript, Maestro offers specialized integrations: * **Atlas:** Available for Haskell developers. * **Mesh and Lucid:** Available for TypeScript developers. These integrations provide deeper access to Maestro’s APIs, allowing for more robust and efficient development. ## Community Call for Contributors Our SDKs are constantly evolving to keep pace with the rapid expansion of Maestro's services, and we rely on community support to maintain and enhance them. We welcome contributions to add new API integrations, improve existing features, and ensure our tools stay up-to-date. These SDKs are open-source, reflecting our commitment to building a vibrant ecosystem of tools and APIs that enhance the Maestro developer experience. Your contributions play a crucial role in making this possible. **Contribute Now:** [github.com/maestro-org](https://github.com/maestro-org) # Cardano - Transaction Manager API Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/overview Streamlined Cardano transaction submission and monitoring with turbo features, webhooks, and historical tracking for reliable transaction processing. The Transaction Manager API provides a streamlined way to submit, monitor, and manage Cardano transactions with advanced features like turbo submission, webhook-based monitoring, and historical tracking. Designed for applications that require reliable transaction processing, it ensures your signed transactions are quickly propagated through the network while giving you real-time visibility into their state. Whether you’re building wallets, payment processors, or DeFi protocols, the Transaction Manager API abstracts away the complexity of low-level transaction handling, offering secure, high-performance endpoints for transaction submission and lifecycle monitoring. ## Key Features * **Standard Transaction Submission**: Submit already serialized CBOR transactions to the Cardano network for processing. * **Turbo Transaction Submission**: Accelerate transaction propagation with Maestro’s Turbo Submit feature, including built-in monitoring. * **Transaction State Retrieval**: Query the current status of a transaction by its hash to check whether it’s pending, confirmed, or failed. * **Transaction History**: Retrieve paginated records of previously submitted transactions for your project. * **Webhook Integration**: Set up webhooks to receive push notifications on transaction updates, confirmations, and failures. * **Multi-Network Support**: Access the same functionality across Mainnet, Preprod, and Preview environments. ## Key Benefits for Developers The turbo submission feature helps ensure transactions are quickly included in blocks, while webhook-based notifications let your applications react to status changes in real time. By providing a unified API for submission, tracking, and history retrieval, it enables faster development cycles, reduces operational complexity, and ensures consistent transaction performance across Cardano environments. # Turbo submit transaction Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/transaction-manager/turbo-submit-transaction cardano/transaction-manager-api/openapi.json post /txmanager/turbosubmit Submit a Cardano transaction with priority processing for faster confirmation and reduced latency. # Get Transaction State Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/transactions/get-transaction-state cardano/transaction-manager-api/openapi.json get /txmanager/{txhash}/state Get the current confirmation state and status of a submitted Cardano transaction by hash. # Submit a Transaction Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/transactions/submit-a-transaction cardano/transaction-manager-api/openapi.json post /txmanager Submit a signed Cardano transaction to the network with automatic retry logic and confirmation tracking. # Transaction History Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/transactions/transaction-history cardano/transaction-manager-api/openapi.json get /txmanager/history Get transaction submission history and status for all transactions submitted through the transaction manager. # Create a Webhook Source: https://docs.developer.gomaestro.org/cardano/transaction-manager-api/webhooks/create-a-webhook post /webhooks/project/{project_id} Create a new webhook for a Cardano project to receive real-time notifications about transaction events and confirmations. # GET Transaction Output by Reference Source: https://docs.developer.gomaestro.org/cardano/tutorials-and-guides/get-transaction-output-by-reference Tutorial guide to retrieve Cardano transaction outputs by reference using Maestro's Blockchain Indexer API for UTXO queries. ## Prerequisites Before submitting an API request, ensure you have completed the following: * Created an Account * Created a Project ## Steps to Submit an API Request The [Blockchain Indexer]() API allows applications to retrieve on-chain data and submit transactions. In this example, we will use the `Pre-Production Cardano` network as the selected network for our project. ### 1. Select the Network * Ensure your project is configured to use the **Pre-Production Cardano network**. ### 2. Retrieve Transaction Output * Use the following endpoint to get detailed information about a transaction and its output UTxO: ``` /transactions/{tx_hash}/outputs/{index}/txo ``` ### 3. Specify Path Parameters * Include the required path parameters in your request: | Parameter | Data Type | Description | Required | | :-------- | :-------- | :----------------------------------------------------- | :------- | | `tx_hash` | String | The unique identifier of the transaction. | yes | | `index` | Integer | The output index is specifying which UTxO to retrieve. | yes | ### 4. Specify Query Parameters (Optional) * Include **optional** query parameters as needed: | Parameter | Data Type | Description | Required | | :---------- | :-------- | :------------------------------------------------------------------------------------ | :------- | | `with_cbor` | Boolean | Set to `true` to include the CBOR encoding of the transaction output in the response. | no | ### 5. Send the API Request * Use cURL or your preferred tool to send the API request: For this example, we will use: * `tx_hash`: **9907c1bcab96889368d975ec1964e2fedfef22ce4a0e367bf9cb621b9f0dcb4a** * `index`: **0** * `with_cbor`: **true** ```bash theme={null} curl -X GET \ -H "api-key: " \ -H 'Accept: application/json' \ https://preprod.gomaestro-api.org/v1/transactions/9907c1bcab96889368d975ec1964e2fedfef22ce4a0e367bf9cb621b9f0dcb4a/outputs/0/txo?resolve_datums=true&with_cbor=true ``` ### 6. Review the Response The API will return a response like the following: ```json theme={null} "data": { "tx_hash": "9907c1bcab96889368d975ec1964e2fedfef22ce4a0e367bf9cb621b9f0dcb4a", "index": 0, "assets": [ { "unit": "lovelace", "amount": 7280082022 }, { "unit": "34250edd1e9836f5378702fbf9416b709bc140e04f668cc3552085184154414441636f696e", "amount": 10824 } ], "address": "addr_test1vpfwv0ezc5g8a4mkku8hhy3y3vp92t7s3ul8g778g5yegsgalc6gc", "datum": null, "reference_script": null, "txout_cbor": "a200581d6052e63f22c5107ed776b70f7b92248b02552fd08f3e747bc74509944101821b00000001b1ed3c66a1581c34250edd1e9836f5378702fbf9416b709bc140e04f668cc355208518a1494154414441636f696e192a48" }, "last_updated": { "timestamp": "2024-09-06 13:56:56", "block_hash": "ca6cf1b408ee8eb02019bce77995c5ed5983c2b553b1b6b2fcecfaaf72d1fc59", "block_slot": 69947816 } ``` ### 7. Understanding the Response | **Term** | **Definition** | | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------ | | `tx_hash` | The unique hash identifier of a transaction. | | `index` | The index position of the transaction output (UTxO). | | `assets unit` | The reference for native assets, either `hex(policy_id)#hex(asset_name)` or `lovelace`. | | `assets quantity` | The quantity of the native asset. | | `address` | The address controlling the UTxO. | | `datum type` | Type of datum: either `inline` or `hash`. | | `datum hash` | The hash of the datum. | | `datum bytes` | Hex-encoded CBOR bytes of the datum (`null` if datum type is `hash` and corresponding datum bytes have not been seen on-chain). | | `datum json` | JSON format of the datum value. | | `reference_script type` | The type of reference script: `native`, `plutusv1`, or `plutusv2`. | | `reference_script hash` | The hash of the reference script. | | `reference_script bytes` | The script bytes (`null` if the script is `native`). | | `reference_script json` | JSON format of the script. | # Monitor Transactions Source: https://docs.developer.gomaestro.org/cardano/tutorials-and-guides/monitor-transactions Tutorial guide to monitor Cardano transactions using Maestro APIs with real-time tracking and notification setup. ## Prerequisites Before you start monitoring transactions, make sure you have: * Created an Account * Created a Project * Access to the **Transactions** page on your Maestro dashboard. ## Overview The **Transaction Manager & Monitoring System** enables you to track the entire lifecycle of all transactions submitted via the Maestro API. Stay updated on each transaction’s status—from pending in the mempool, to being accepted on-chain, rejected by a node, or rolled back by the network. Real-time state change notifications are available via [Webhooks]() created on the platform Transaction page. ### Cardano Example ### Supported Transaction States | Rejected | Rejected by the block producer due to an invalid transaction. | | :--------------------- | :----------------------------------------------------------------------------------- | | Pending | Transaction successfully submitted and waiting in a mempool to be accepted on-chain. | | Failed | Communication to the node has failed. | | Timedout (Coming Soon) | Transaction is in the mempool but has exceeded its configured time-to-live. | | Onchain | Transaction is part of a minted block. | | Rolledback | Transaction has been removed from the chain due to a network rollback. | ### Create a Webhook URL * Go to the [**Transaction**](https://dashboard.gomaestro.org/) page of your dashboard. * Scroll down to *Transaction Events Listening* * Click `+ Create webhook`. * Select your project, give your webhook a name, and specify its URL. ## Webhook Transaction Notifications The webhook JSON payloads have the following schema: ```json theme={null} { "tx_hash": "84bc33c0336a91f1a42722da8e70b37…", "state": "onchain", "timestamp": "2023-01-06T06:37:23+00:00", "block_number": 8115321, "metadata": {...} } ``` | Field | Description | | :--------------------- | :------------------------------------------------------------------------- | | tx\_hash | Transaction hash. | | state | Current state of the transaction. | | timestamp | UTC timestamp of the transaction state change. | | block\_number | Block number that your transaction is in if it has been accepted on-chain. | | metadata (coming soon) | Additional details about your transaction's state. | # POST a Turbo Transaction Source: https://docs.developer.gomaestro.org/cardano/tutorials-and-guides/post-a-turbo-transaction Tutorial guide to submit Cardano Turbo transactions for fast and efficient transaction processing using Maestro's Turbo API. ## Prerequisites Before submitting an API request, ensure you have completed the following: * Create an Account * Create a Project * Installed the [Eternl wallet](https://eternl.io/) You need a Maestro **Composer-level subscription or higher to access the Turbo Transactions feature**. Otherwise, you can use the Submit Transaction[ ]()endpoint. ## Steps to Submit an API Request Turbo Transactions *supercharge your transaction submission* processes. This guide will walk you through generating a transaction on Eternl and sending it to Maestro's Turbo Transaction endpoint. ### 1. Prepare Your Wallet * Switch the network to `Pre-Production Testnet` by selecting it from the bottom-right selector of the Eternl wallet interface. * **Create or restore two separate wallets** in [Eternl ]()to test the transaction. * After creating the wallets, disable the `Transaction Auto Submit` option. * Find your **w**allet address in the Eternl dashboard under the `Receive` tab. * Send test ADA (tADA) to one (or both) wallets using the [Cardano Faucet](https://docs.cardano.org/cardano-testnet/tools/faucet)[ here](https://docs.cardano.org/cardano-testnet/tools/faucet). ![](https://archbee-doc-uploads.s3.amazonaws.com/Ml2w3Qkq9KbPDbBpWBt6n/qiX0q9GUAVUDuCm-kGfdj_image-19.png) ### 2. Configure Eternl to Use Maestro's Turbo Submit Endpoint * Open Eternl `App Settings` * Expand the `Custom Submit API Endpoint` section and click `Add` * Enter the below **Turbo Transaction** Submit API URL, replacing `` with your project key found in [your project dashboard.](https://dashboard.gomaestro.org/login) ``` https://preprod.gomaestro-api.org/v1/txmanager/turbosubmit?api-key= ``` ![](https://archbee-doc-uploads.s3.amazonaws.com/Ml2w3Qkq9KbPDbBpWBt6n/8RzkPLno_JF2kGorwqc5B_image-22.png) * Click `Save` - If your subscription does not support **Turbo Transactions**, you can try the standard \*\*Submit \*\*API. - Upgrade to the Pay-as-you-go **Conductor** [subscription](https://www.gomaestro.org/pricing) for easy access and support for Turbo Transactions. ### 3. Generating a Transaction * Go to the `Send` tab * Enter the receiving wallet address to create and sign a transaction between the two test wallets. Then, specify the amount of test ADA to send. * Enter your **spending password** and click `Sign`. ![](https://archbee-doc-uploads.s3.amazonaws.com/Ml2w3Qkq9KbPDbBpWBt6n/ppEI-qcs292dQaH0tPvBn_image-36.png) ### 4. Submit the Transaction **Option 1** * Click `Submit` to hit the **Turbo Transaction** endpoint via Eternl. **Option 2** Click `Download(signed)` * Copy the `cBorHex` from the downloaded transaction file. In this example, that will be: ``` > 84a500818258206c4200b0697da7bb625007431df049c70fcc6f548a35f706f9f3356e2c91ee51000186825839008f0bb4f9da382fc5c4926d55130ffbc6f9b4df9461ca922dd310aade6e923c8acd41268395174a364a586ea99a26ba526aa16a3aead7a3ef1a004c4b4082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71b0000000129b6e78b82583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a94dcd36082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a4a6e69b082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a4a6e69b082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a004c4b40021a0002bf35031a042bb5290800a10081825820a92c0a0ddb77ae18ea28e7bcd7f6966af99f32a9a73fc84c5c2c0737f6e8903b5840307e1b7cfedbf33bc167a1779aa72a5379c2461caba02becb2786c4688af48f9c72029f89839d664848145c3d4e719a2122820bc188d279ded4f9c9e59c6e706f5f6 ``` * Run the following command to create a binary stream: ``` > TRANSACTION=84a500818258206c4200b0697da7bb625007431df049c70fcc6f548a35f706f9f3356e2c91ee51000186825839008f0bb4f9da382fc5c4926d55130ffbc6f9b4df9461ca922dd310aade6e923c8acd41268395174a364a586ea99a26ba526aa16a3aead7a3ef1a004c4b4082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71b0000000129b6e78b82583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a94dcd36082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a4a6e69b082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a4a6e69b082583900e55b137c7911b75f8f8b5c83f82107e9c5a40d03e6eeb58bad2b4227a720eb63cb5bd34ac4923e8b114c672f543a0e98a1e18492bc3f2da71a004c4b40021a0002bf35031a042bb5290800a10081825820a92c0a0ddb77ae18ea28e7bcd7f6966af99f32a9a73fc84c5c2c0737f6e8903b5840307e1b7cfedbf33bc167a1779aa72a5379c2461caba02becb2786c4688af48f9c72029f89839d664848145c3d4e719a2122820bc188d279ded4f9c9e59c6e706f5f6 > xxd -r -p <<< ${TRANSACTION} > tx.signed.cbor.preprod ``` * Use your project API key to submit the transaction to the Maestro endpoint: `/txmanager/turbosubmit` ``` > curl -X POST -H "Content-Type: application/cbor" -H "api-key: " --data-binary @tx.signed.cbor.preprod https://preprod.gomaestro-api.org/v1/txmanager/turbosubmit ``` The response is the `transaction hash` of the submitted transaction. # API Usage Source: https://docs.developer.gomaestro.org/dogecoin/api-usage Dogecoin API usage guide with authentication, pagination, rate limits, and best practices for Maestro's Dogecoin blockchain APIs. ## Authentication You will need an `api-key` to access the Maestro API. You can obtain this key from the Maestro dApp Platform Dashboard. ## Examples ### GET Request Example GET request for retrieving the chain tip: ```bash theme={null} curl -X GET \ -H "api-key: " \ https://xdg-mainnet.gomaestro-api.org/v0/chain-tip ``` ### POST Request Example POST request for submitting a transaction: ```bash theme={null} curl -X POST \ -H "Content-Type: application/cbor" \ -H "api-key: " \ --data @tx.signed \ https://xdg-mainnet.gomaestro-api.org/v0/submit/tx ``` # Security To ensure the security of your API usage, follow these best practices: * **Keep your API key private**: Never share it publicly (e.g., on GitHub, client-side code). * **Prevent unauthorized usage**: Loss or misuse of your API key can result in the overuse of your account's available credits. * **Secure your API key**: Implement proper methods for storing and accessing your `api-key`, especially in production environments. # Cursor-based Pagination Some Maestro endpoints use **Cursor-based Pagination to break large datasets into smaller, more manageable responses.** This method is particularly relevant when returning all the data in a single response would be inefficient or slow. * **Improved data integrity and accuracy** when fetching multiple pages. * **Prevents duplicates**, even when new blocks are processed between queries. * **Optimized for infinite scroll**, enabling a smooth user experience by loading content as the user scrolls. When using this method, responses will include a `next_cursor` string. This value should be passed as the `cursor` parameter in your next request to retrieve the next page of results. ## Example * **Initial Response**: When you make an initial API call, the response might include a `"next_cursor": "AAAAAALfeKF8btdzaVvkGaetSS7e1AAF"`. This indicates that there are more results to retrieve. * \*\*Using \*\*`next_cursor`: To get the next page of data, you need to include the `next_cursor` value in your next API request by adding it as a query parameter (`cursor`). * **Modifying the Query**: Append the cursor value to your API request URL, like this: ``` ?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF ``` * **Result**: The API will return the next set of results when this value is provided. * \*\*End of Data: \*\*If the response includes `"next_cursor": null` then the end of the requested dataset has been reached. **Other relevant query parameters are:** | Parameter | Default | Description | | :-------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `count` | `100` | Defines the maximum number of results per pagination page | | `order` | `asc` | Specifies the sort order of the results. Acceptable values are `asc` (ascending) or `desc` (descending). This option is available only for specific endpoints. | **Example** ```bash theme={null} curl -L -X GET 'https://mainnet.gomaestro-api.org/v1/policy/f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a/utxos?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF' \ -H 'Accept: application/json' \ -H 'api-key: your-api-key' ``` # Computer Credits Maestro uses **Compute Credits** to measure the computational resources consumed by your applications on its platform, similar to traditional cloud providers like Google Cloud or AWS. The number of credits assigned to each operation or method is based on the global average duration of that process,\*\* taking into account factors like complexity and computational intensity. \*\* Learn more about how Compute Credits are allocated by exploring the **Subscription breakdown.** Compute Credits provide a **fair, usage-based pricing model**. This means you only pay for the computational resources your application actually uses, making it both **cost-efficient** and **flexible**. # Request Limits Maestro enforces two types of API rate limits: * **Per day**: a set amount of credits consumed per day based on your [subscription](https://www.gomaestro.org/pricing) plan. * **Per second**: a set amount of requests per second based on your [subscription](https://www.gomaestro.org/pricing) plan. *For example, the *Artist plam* supports up to 10 requests per second.* For more details on available packages or to upgrade your plan, refer to the [Pricing page](https://www.gomaestro.org/pricing). If your organization needs higher limits, [contact us](mailto:info@gomaestro.org) to discuss **Enterprise solutions**. # Response Headers Maestro includes the following headers in API responses to help manage usage: | Header | Description | | :------------------------------- | :----------------------------------------------------- | | X-RateLimit-Limit-Second | Maximum allowed requests per second. | | **X-RateLimit-Remaining-Second** | **Remaining allowed requests for the current second.** | | X-Maestro-Credits-Limit | Total allowed credits for the day. | | **X-Maestro-Credits-Remaining** | **Remaining credits for the day.** | Be sure to monitor these values (in **bold**) and adjust your request rate accordingly to avoid hitting rate limits. # Errors Maestro follows standard HTTP response codes to indicate the success or failure of API requests: | 2xx | Success | | :-- | :----------------------------------------------------------- | | 4xx | Client-side errors, such as missing or incorrect parameters. | | 5xx | Server-side errors with Maestro. | Refer to the [API Reference](/general/platform-overview) for detailed response codes for each endpoint. # DRC20 by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/drc20-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/drc20 Get DRC-20 token balances and holdings for a specific Dogecoin address with token details and amounts. # DRC20 Transfer Inscriptions by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/drc20-transfer-inscriptions-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/transfer_inscriptions Get DRC-20 transfer inscriptions for a Dogecoin address including token movements and transfer details. # Dune UTxOs by Address and Dune Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/dune-utxos-by-address-and-dune dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/dunes/{dune} Get unspent transaction outputs containing a specific Dogecoin Dune token for a particular address. # Dunes by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/dunes-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/dunes Get all Dogecoin Dune token balances and holdings for a specific address with amounts and metadata. # Inscriptions by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/inscriptions-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/inscriptions Get all Dogecoin inscriptions associated with a specific address including metadata and content information. # Total Balance by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/total-balance-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/balance Get total Dogecoin balance for an address including confirmed and unconfirmed amounts with USD valuation. # Transactions by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/transactions-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/txs Get transaction history for a Dogecoin address with detailed input/output information and pagination support. # UTxOs by Address Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/addresses/utxos-by-address dogecoin/blockchain-indexer-api/openapi.json get /addresses/{address}/utxos Get unspent transaction outputs (UTXOs) for a Dogecoin address with real-time mempool awareness and rollback protection. # DRC20 Holders Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/drc20/drc20-holders dogecoin/blockchain-indexer-api/openapi.json get /assets/drc20/{ticker}/holders Get list of addresses holding a specific DRC-20 token with their balance amounts and distribution statistics. # DRC20 Info Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/drc20/drc20-info dogecoin/blockchain-indexer-api/openapi.json get /assets/drc20/{ticker} Get detailed information about a specific Dogecoin DRC-20 token including supply, holders, and deployment details. # List DRC20 Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/drc20/list-drc20 dogecoin/blockchain-indexer-api/openapi.json get /assets/drc20 Get comprehensive list of Dogecoin DRC-20 tokens with metadata, supply information, and holder statistics. # Dunes Info Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/dunes/dunes-info dogecoin/blockchain-indexer-api/openapi.json get /assets/dunes/{dune} Get detailed information about a specific Dogecoin Dune token including metadata, supply, and holder statistics. # Holders by Dune Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/dunes/holders-by-dune dogecoin/blockchain-indexer-api/openapi.json get /assets/dunes/{dune}/holders Get list of addresses holding a specific Dogecoin Dune token with balance amounts and holder statistics. # List Dunes Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/dunes/list-dunes dogecoin/blockchain-indexer-api/openapi.json get /assets/dunes Get comprehensive list of Dogecoin Dunes tokens with metadata, supply information, and trading statistics. # UTxOs by Dunes Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/dunes/utxos-by-dunes dogecoin/blockchain-indexer-api/openapi.json get /assets/dunes/{dune}/utxos Get unspent transaction outputs (UTxOs) containing a specific Dogecoin Dune token with address and amount details. # Content by Inscription ID Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/inscriptions/content-by-inscription-id dogecoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id}/content_body Get the content body of a Dogecoin Ordinals inscription by inscription ID including binary data and metadata. # Inscription Info Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/inscriptions/inscription-info dogecoin/blockchain-indexer-api/openapi.json get /assets/inscriptions/{inscription_id} Get detailed information about a Dogecoin Ordinals inscription including metadata, content type, and creation details. # Dogecoin - Blockchain Indexer API Source: https://docs.developer.gomaestro.org/dogecoin/blockchain-indexer-api/overview The Dogecoin Blockchain Indexer API provides structured, high-performance access to on-chain data for Dogecoin, including addresses, transactions, UTxOs, inscriptions, and metaprotocol assets like DRC20 tokens and Dunes. This service is useful for developers building explorers, wallets, trading platforms, and analytics tools. ## Key Features * **Address Insights**: Retrieve balances, UTxOs, transaction history, inscriptions, DRC20 tokens, and Dunes tied to a specific address. * **DRC20 Token Support**: List all deployed DRC20 tokens, get token details, track holders, and inspect transfer inscriptions. * **Dunes Asset Data**: Discover and query Dunes metadata, holders, and UTxOs with full historical and pagination support. * **Inscription Indexing**: Retrieve all inscriptions for an address, get detailed metadata, and stream raw inscription content. * **Transaction Lookups**: List transactions involving an address, with filtering and pagination for efficient history retrieval. * **UTxO Management**: Query all UTxOs for an address or asset, with options to filter dust or exclude metaprotocol-related UTxOs. * **Multi-Network Access**: Available for both Dogecoin Mainnet and Testnet environments. ## Key Benefits for Developers This service enables developers to integrate rich Dogecoin blockchain and metaprotocol data directly into their applications without building their own indexing infrastructure. This unified data layer for both native Dogecoin activity and advanced protocols like DRC20 and Dunes allows teams to focus on building user-facing features while ensuring reliable, scalable access to the chain’s full history. # Changelog Source: https://docs.developer.gomaestro.org/dogecoin/changelog Dogecoin API changelog with version updates, new features, improvements, and breaking changes for Maestro's Dogecoin services.
Improved
**Node RPC moved to dedicated folder** `/addresses/{address}/inscriptions` * Updates response schema. Backward compatible `/assets/dunes/{dune}` * removed field: `data.total_utxos`
Added
**New Inscription Endpoints** `/addresses/{address}/inscriptions` * List of all inscriptions which reside at a specific address of script pubkey `/assets/inscriptions/{inscription_id}` * Information about an inscription `/assets/inscriptions/{inscription_id}/content_body` * Paginated response of inscription content body byte array
Added
**Node RPC moved to dedicated folder** `/rpc/block/*` * endpoints moved to Node RPC folder `/rpc/mempool/*` * endpoints moved to Node RPC folder `/rpc/transaction/*` * endpoints moved to Node RPC folder
Added
**New DRC20 Transfer Inscriptions** `addresses/\{address}/transfer\inscriptions` * DRC20 Transfer Inscriptions by Address
Added
**Filter UTxO without Runes and Inscriptions** `/addresses/{address}/utxos` * `exclude_metaprotocols` flag to allow excluding metaprotocol UTxOs in Dunes and inscriptions. To use, append the full query parameter `?exclude_metaprotocols=true`
Improved
**Adding Runes Circulating supply** `/assets/dunes/{rune}`; * Added `circulating_supply` to provide the current amount of a specific Dune in circulation.
Added
**New Dunes Holders** `​/assets/dunes/{dune}/holders` * List of all addresses that hold the specified Dune, with the respective amounts.
Added
**New Transaction Details** `/rpc/transactions/{tx_hash}` * Transaction Information
Added
**Dune UTxOs by Address and Dune** `/addresses/{address}/dunes/{dune}` * Returns all UTxOs controlled by the specified address or script pubkey that contain a specified type of Dune;
Improved
**Ignore dust UTxO filter** `/addresses/\{address}/utxos` * Added `filter_dust_threshold` filter to ignore UTxOs containing less than specified shibes.
# Overview Source: https://docs.developer.gomaestro.org/dogecoin/index Dogecoin blockchain APIs and services from Maestro. Access Blockchain Indexer, DRC20 tokens, Dunes, inscriptions, and node RPC functionality. The [**Dogecoin blockchain**](https://dogecoin.com/) is a decentralized digital currency network that supports peer-to-peer transactions. It uses a proof-of-work (PoW) consensus mechanism similar to Bitcoin but features quicker block times and a more abundant supply. Originally created as a “meme” cryptocurrency, Dogecoin has gained a large community following and a notable market presence. ## Available Services Maestro provides the following services, accessible across multiple Bitcoin networks: ## Available Networks The service is available on the following Bitcoin networks: | Networ | Base URL | | :---------- | :----------------------------------------- | | **Mainnet** | `https://xdg-mainnet.gomaestro-api.org/v0` | | **Testnet** | `https://xdg-testnet.gomaestro-api.org/v0` | The Maestro API is currently versioned at `v0`. When making a query, `v0` must be included in your base URL. # Block Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/blocks/block-info dogecoin/node-rpc-api/openapi.json get /block/{height_or_hash} Get detailed Dogecoin block information by block height or hash including transactions, size, and mining details. # Block Range Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/blocks/block-range-info dogecoin/node-rpc-api/openapi.json get /block/range/{start_height}/{end_height} Get information about a range of Dogecoin blocks between specified start and end heights. # Latest Block Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/blocks/latest-block dogecoin/node-rpc-api/openapi.json get /block/latest Get the latest block information from the Dogecoin network including block height, hash, and transaction count. # Recent Block Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/blocks/recent-block-info dogecoin/node-rpc-api/openapi.json get /block/recent/{count} Get information about the most recent Dogecoin blocks with configurable count limit. # Blockchain Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/general/blockchain-info dogecoin/node-rpc-api/openapi.json get /general/info Get Dogecoin blockchain general information including network stats, block height, difficulty, and node status. # Mempool Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/mempool/mempool-info dogecoin/node-rpc-api/openapi.json get /mempool/info Get Dogecoin mempool information including size, bytes, usage, and fee statistics for transaction queue management. # Mempool Transaction Ancestors Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/mempool/mempool-transaction-ancestors dogecoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash}/ancestors Get ancestor transactions of a specific Dogecoin transaction currently in the mempool. # Mempool Transaction Descendants Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/mempool/mempool-transaction-descendants dogecoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash}/descendants Get descendant transactions of a specific Dogecoin transaction currently in the mempool. # Mempool Transaction Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/mempool/mempool-transaction-info dogecoin/node-rpc-api/openapi.json get /mempool/transactions/{tx_hash} Get detailed information about a specific Dogecoin transaction in the mempool including fees and dependencies. # Mempool Transactions Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/mempool/mempool-transactions dogecoin/node-rpc-api/openapi.json get /mempool/transactions Get list of all transactions currently in the Dogecoin mempool awaiting confirmation. # Dogecoin - Node RPC API Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/overview The Dogecoin Node RPC API provides direct, low-latency access to the Dogecoin blockchain for querying network data, retrieving transaction and block details, monitoring mempool activity, and broadcasting transactions. This service is useful for developers building wallets, block explorers, trading systems, or other blockchain-integrated applications. ## Key Features * **Blockchain Information**: Retrieve real-time network status, including chain height, difficulty, chainwork, and consensus parameters. * **Block Data Access**: Get the latest block, fetch blocks by height or hash, and retrieve recent or ranged block history. * **Transaction Retrieval**: Query full transaction details by hash, including inputs, outputs, confirmations, and raw hex data. * **Transaction Submission**: Broadcast signed transactions directly to the Dogecoin network. * **Mempool Monitoring**: Access mempool statistics, view all pending transaction hashes, retrieve detailed mempool transaction info, and explore ancestor/descendant relationships. * **Multi-Network Support**: Available on both Dogecoin Mainnet and Testnet environments. ## Key Benefits for Developers The API provides a consistent, high-performance interface for querying chain data, monitoring network activity, and broadcasting transactions, all while returning structured JSON for seamless integration. # Send Transaction Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/transactions/send-transaction dogecoin/node-rpc-api/openapi.json post /transaction/submit Submit a signed Dogecoin transaction to the network for processing and inclusion in the blockchain. # Transaction Info Source: https://docs.developer.gomaestro.org/dogecoin/node-rpc-api/transactions/transaction-info dogecoin/node-rpc-api/openapi.json get /transaction/{tx_hash} Get detailed Dogecoin transaction information including inputs, outputs, fees, and confirmation status by transaction hash. # SDKs Source: https://docs.developer.gomaestro.org/dogecoin/sdks Dogecoin SDKs and client libraries for multiple programming languages to integrate Maestro's Dogecoin APIs into your applications. Maestro is dedicated to empowering developer communities by offering SDKs in multiple programming languages. We continually expand and refine these SDKs, and we welcome contributions from developers to help shape Maestro's capabilities. Your insights and feedback are invaluable in ensuring our tools meet language-specific needs and unlock new possibilities. ## Available SDKs Currently, Maestro offers SDKs in the following languages: | **SDK** | | | -------------- | ----------- | | **Haskell** | Coming Soon | | **TypeScript** | Coming Soon | | **Go** | Coming Soon | | **Rust** | Coming Soon | | **Python** | Coming Soon | ## Community Call for Contributors Our SDKs are constantly evolving to keep pace with the rapid expansion of Maestro's services, and we rely on community support to maintain and enhance them. We welcome contributions to add new API integrations, improve existing features, and ensure our tools stay up-to-date. These SDKs are open-source, reflecting our commitment to building a vibrant ecosystem of tools and APIs that enhance the Maestro developer experience. Your contributions play a crucial role in making this possible. **Contribute Now:** [github.com/maestro-org](https://github.com/maestro-org) # Tutorials (Coming Soon) Source: https://docs.developer.gomaestro.org/dogecoin/tutorials-and-guides/tutorials-coming-soon Upcoming Dogecoin tutorials and guides for building applications with Maestro's Dogecoin blockchain APIs and development tools. *Coming soon* # Blockchain Indexer Source: https://docs.developer.gomaestro.org/general/blockchain-indexer Blockchain indexer infrastructure for Web3 applications providing optimized on-chain data access across Bitcoin, Cardano, and Dogecoin networks. A blockchain indexer is a key piece of infrastructure required to power any Web3 ecosystem. It provides applications with access to a wide range of on-chain data through a flexible and optimized interface. One well-known example is [**The Graph**](https://thegraph.com/en/), a popular blockchain indexer on Ethereum, which simplifies data availability for Web3 applications. *** # Service Availability The Blockchain Indexer service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | :--------------------- | :-------------------------------------------------------- | :-------------------------------------------------------- | :--------------------------------------------------------- | | **Blockchain Indexer** | [API Reference](/bitcoin/blockchain-indexer-api/overview) | [API Reference](/cardano/blockchain-indexer-api/overview) | [API Reference](/dogecoin/blockchain-indexer-api/overview) | *** # Indexing Data ## Real-Time Data Maestro’s blockchain indexer is specifically optimized for [**UTXO**](https://docs.cardano.org/learn/eutxo-explainer)\*\* ledger primitives\*\* and focuses on delivering both **real-time data liveness** and **data accuracy**. Blockchains operate as an **event-driven system** with probabilistic transaction finality, meaning the ledger’s "ground truth" isn't instantly finalized—it can take some time to reach global consensus. Learn More: What are chain [reorgs](https://learnmeabitcoin.com/technical/blockchain/chain-reorganisation/) or [rollbacks](https://plutus-apps.readthedocs.io/en/latest/plutus/explanations/rollback.html)? Accessing “real-time” onchain data requires rigorous data integrity checks. Traditional solutions, like adding a **block buffer** to indexers, only mitigate rollbacks by providing outdated data. Maestro has designed a system that handles rollbacks gracefully and in **real-time**, giving users live data without sacrificing data integrity. Let's take a closer look at the components that make up the indexer: 1. **Indexer** - Specialized pipelines that extract, match, and process on-chain information, including handling rollbacks. 2. **Storage** - A data lake optimized for storing various types of data. 3. **Access** - A REST API providing flexible and performant querying capabilities. *** ## Common Use Cases Accurate and live on-chain data is critical for delivering an optimal user experience in blockchain applications. Some common use cases for blockchain indexers include: * **Smart contract-based dApps** – Time-sensitive DeFi apps like DEXs, NFT marketplaces, lending protocols, games, and metaverses. * **Wallets and Decentralized IDs (DIDs)** – Real-time UTxO states are crucial for Cardano wallets, cross-chain wallets, and DID systems. * **Blockchain explorers** – Analytics platform require reliable access to large sets of on-chain data. * **Bridges & Web2 integrations** – Blockchain bridges and integrations with traditional Web2 software require access to on-chain information. # Esplora API Source: https://docs.developer.gomaestro.org/general/esplora-api Blockstream-compatible Esplora REST API for lightweight Bitcoin blockchain access with fast block, transaction, and address queries. The Esplora API is a RESTful service designed by [Blockstream](https://github.com/Blockstream/esplora) that provides a lightweight and efficient HTTP interface for accessing Bitcoin data including blocks, transactions and addresses. Esplora is designed for performance and ease of integration, making it ideal for explorers, wallets, and backend services that need fast blockchain reads without running a full node RPC server. *** The Maestro Esplora API offers a forked [Mempool.Space](https://github.com/mempool/mempool) instance, with support for both Bitcoin mainnet and Bitcoin testnet4. Repo: [https://github.com/maestro-org/mempool](https://github.com/maestro-org/mempool) ### Service Availability The Esplora service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | :---------- | :--------------------------------------------- | :------ | :------- | | **Esplora** | [API Reference](/bitcoin/esplora-api/overview) | - | - | ### Key Features #### Transactions * Fetch transaction details, raw hex, and status. * Retrieve merkle proofs (both `bitcoind` and `Electrum` style). * Broadcast raw transactions. * Check spending status of outputs. #### Addresses & Scripthashes * Lookup balances and stats for addresses and scripthashes. * View confirmed and mempool transaction history. * Fetch associated UTXOs. * Search by address prefix. #### Blocks * Get full block details including headers, transactions, txids. * Access block metadata like height, weight, merkle root. * Fetch block status and raw binary representation. #### Mempool * View mempool stats: total count, vsize, fees. * Get full mempool txid list and most recent entries. * Access fee-rate distribution histogram. #### Fee Estimates * Retrieve estimated fee rates for confirmation targets (1-1008 blocks). ### Use Cases * Build block explorers and analytics dashboards. * Monitor transactions and fee trends. * Query UTXOs and spending data for wallets. * Implement mempool-aware transaction trackers. # Event Manager Source: https://docs.developer.gomaestro.org/general/event-manager Real-time blockchain event notification system with programmable webhooks for responsive applications and reduced API usage. *Real-time event notification systems* are a game-changer for developers building **responsive, reactive applications.** Instead of "pull-based" APIs requiring the client to explicitly request data from the blockchain, "push-based" APIs automatically send data to a client as soon as certain events happen on-chain. Leading to: 1. Significant savings in API usage and billing 2. Increased app responsiveness with better user experience. **Maestro's Event Manager** is a *blockchain event notification service* that monitors the blockchain network for user-specified events and notifies applications in real-time via *Webhooks*. This allows applications to stay updated with on-chain activities such as: * **Wallet Event:** Track wallet deposits and withdraws * **Token Activity:** Token transfers or NFT mints * **Script Execution:** Execution of scripts and smart-contracts * **Mempool State:** Pending transactions in the mempool * **Network Activity:** New block minted or blockchain reorgs ## Mempool-Aware Event Notifications **Maestro's Event Manager** has a unique feature in that it is "*mempool-aware."* That means every configured Event Webhook has two types of notification: 1. **Mempool Notification**: Triggered when the event is detected in the mempool 2. **Onchain Notification**: Triggered when the event is first minted onchain (block confirmation = 1). ## Benefits of Event-Driven App Architecture By subscribing to these notifications, developers can create applications that react instantly to blockchain activity, **improving user experience and enabling a variety of innovative functionalities.** 1. **Reduced Overhead:** Instead of constantly querying node data to check if something happened onchain, your app can rely on real-time push notifications, resulting in **significantly fewer API calls.** 2. **Real-time Experience:** Create a responsive app that immediately updates users with their most important events creating a **better user experience**. (e.g., “your NFT was just transferred!”) 3. **Scalability and Cost Savings:** Maestro's Event Manager handles the heavy lifting of monitoring the chain so your app never misses an important event. This results in **reduced infrastructure complexity and long-term cost savings**. *** # Service Availability The Event Manager service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | :---------------- | :--------------------------------------------------- | :------------ | :------------ | | **Event Manager** | [API Reference](/bitcoin/event-manager-api/overview) | *Coming Soon* | *Coming Soon* | ## Event Types Available | **Event Type** | **Notify on** | **Trigger Conditions** | | :--------------------------- | :-------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------- | | **Transaction Notification** | Specific transaction accepted into the mempool and then confirmed onchain | **Trigger**=Transaction **Field**= Transaction ID **Operator**= equal to **Value**= Transaction ID | | **Address Notification** | Specific address withdrawals or deposits by a transaction entering the mempool and then confirmed onchain | **Trigger**=Transaction **Field**= Sender or Receiver **Operator**= containts **Value**= Address ID | | | | | ### Using the Event Manager See usage instructions [here](/bitcoin/tutorials-and-guides/integrating-event-manager-into-your-application#configure-and-manage-event-triggers-in-the-maestro-dashboard). ## Common Use Cases for Real-Time Event Notifications ### DeFi Protocol Monitoring **Liquidity Pool Events**: Get alerts when large liquidity deposits or withdrawals occur, or if pool parameters change. **Loan Liquidations:** Notify borrowers (or watchers) in real-time when a position is at risk or has been liquidated. ### NFT Marketplace & Collectibles **Mint Tracking:** Monitor when new tokens are minted so you can update supply or notify users. Transfer/Ownership Updates: Send push notifications when an NFT changes hands. **Auction Bids:** Real-time updates for any new bids or final sales. ### Wallet & Portfolio Tracking \*\*Address Activity: \*\*Keep track of inbound/outbound transactions for a user’s wallet. Helpful for generating push notifications. **Token Balance Changes:** When an address receives a new token or sells a portion of a token. ### Transaction Lifecycle Tracking **Pending → Mined → Confirmed:** Provide instant feedback to users about where their transaction is in the pipeline. **Dropped or Replaced Transactions:** Notify users if their transaction was replaced by a new one with a higher fee. ### Security & Monitoring **Smart Contract Exploit Detection:** Set up alerts for large, abnormal transactions on known vulnerable contracts. **Whitelist/Blacklist:** Immediately know if a blacklisted address interacts with your protocol. # FAQ Source: https://docs.developer.gomaestro.org/general/faq Frequently asked questions about Maestro blockchain APIs, services, pricing, technical support, and platform capabilities. ## Q1: What is Maestro? **A:** Maestro is an enterprise-grade blockchain infrastructure provider specializing in UTXO-based blockchains such as Bitcoin, Cardano, and Dogecoin. It delivers a complete Web3 stack featuring high-performance APIs and advanced developer tools, simplifying the creation of decentralized applications (dApps) and driving innovation in decentralized finance (DeFi). Maestro offers: * **High-Performance UTXO Indexing:** For rapid and reliable on-chain data retrieval. * **Advanced Developer Tools:** Including transaction management, mempool monitoring, and on-chain event notifications. * **Enhanced Scalability and Security:** Optimized to handle high transaction volumes for both startups and large enterprises. *** ## Q2: How does Maestro work? **A:** Maestro leverages state-of-the-art UTXO indexing technology to offer real-time, low-latency access to on-chain data. Its robust APIs enable seamless integration with blockchain networks, efficient transaction management, mempool monitoring, and event notification —all designed to streamline dApp development. *** ## Q3: Which blockchains does Maestro support? **A:** Maestro currently supports multiple UTxO-based blockchains including Bitcoin, Cardano, Dogecoin, and Bitcoin L2s such as MIDL. Maestro's infrastructure services are specifically optimized for the unique characteristics of UTxO ledgers. This multichain approach allows developers to build interoperable dApps across different blockchain ecosystems *** ## Q4: What makes Maestro different from other blockchain infrastructure providers? **A:** Unlike most infrastructure providers that focus on EVM chains (like Ethereum), Maestro specializes in UTxO-based blockchains. Maestro's technology is built from the ground up to handle the unique challenges of UTxO ledgers, including data availability issues and probabilistic transaction finality. Maestro’s state-of-the-art UTxO indexer technology offers a battle-tested, high-performance data layer optimized to meet the unique needs and challenges of UTxO-based DeFi protocols. This specialized focus makes Maestro the premier choice for Bitcoin and other UTxO blockchain development. *** ## Q5: Who uses Maestro's services? **A:** Maestro's services are used by: * DeFi protocols (DEXes, lending platforms) * Wallet providers * NFT marketplaces * Layer 2 solutions * Traders and payment services * Enterprise blockchain applications * Blockchain analysis platforms *** ## Q6: What are the key features of Maestro’s platform? **A:** Maestro offers a range of enterprise-grade features such as: * **All-in-one Enterprise Platform:** No longer juggle multiple data providers and software vendors. Maestro offers a suite of advanced services under one enterprise-ready package. * **High Availability and Reliability:** Benefit from over 99% uptime, backed by enterprise-grade security to keep your applications running smoothly, without interruption. * **Efficient Data Access:** Accelerate development with streamlined blockchain integration using Maestro's standard API protocols and robust developer tools. * **Scalable and Cost-Effective:** Grow your project with confidence thanks to flexible, usage-based pricing designed to scale as your needs evolve. * **Unmatched Support and SLAs:** Get peace of mind with responsive customer support and transparent service level agreements, ensuring reliable and timely assistance whenever you need it. *** ## Q7: What core products does Maestro offer? **A:** Maestro's core product offerings include: * **Node RPC API:** Direct blockchain node interactions * **Blockchain Indexer APIs:** Powerful API for enterprise-grade onchain data needs. * **Mempool Monitoring:** Real-time tracking of pending transactions * **Event Manager:** Webhook-based notifications of blockchain events * **Transaction Manager:** Onchain monitoring of transaction state * **Turbo Transaction:** Supercharge transaction submission * **Market Price Feeds:** High-fidelity DeFi market price feed. * **Wallet Manager:** Dev tools for crypto wallet creation * **Managed Smart-Contracts:** Plug-and-play managed smart contracts *** ## Q8: What is a UTxO blockchain and why is specialized infrastructure important? **A:** UTxO (Unspent Transaction Output) is the accounting model used by Bitcoin and several other blockchains. Unlike account-based models (used by Ethereum), UTxO works differently, tracking individual "outputs" rather than account balances. This creates unique challenges for data indexing, state tracking, and application development that require specialized infrastructure solutions. *** ## Q9: How does Maestro's UTxO indexer technology work? **A:** Maestro's state-of-the-art UTxO indexer employs: * Event-driven architecture connecting directly to blockchain P2P protocols * Proactive UTxO resolution upstream of the indexing process * Block reorganization protection via Maestro's "block buffer" system * Parallelized data indexing through distributed pipelines * High-availability API gateway for efficient data retrieval *** ## Q10: What programming languages and frameworks does Maestro support? **A:** Maestro's services use a standard REST API interface, and additionally provides SDKs for multiple popular programming languages, making integration simple regardless of your technology stack. Visit Maestro's developer [documentation](https://www.gomaestro.org/documentation) for the latest supported languages and frameworks. *** ## Q11: How can Maestro help me build Bitcoin DeFi applications? **A:** Maestro provides the essential infrastructure layer needed to build responsive, reliable DeFi applications on Bitcoin. Maestro's services handle the complex data indexing, real-time mempool monitoring, and event tracking required for DeFi use cases like DEXes, lending protocols, and yield farming platforms. *** ## Q12: Can Maestro support metaprotocols like Ordinals and Runes? **A:** Yes! Maestro's infrastructure is specifically designed to support Bitcoin's emerging metaprotocols. Maestro's APIs provide metaprotocol-aware indexing and monitoring for Ordinals (Bitcoin NFTs), Runes (fungible tokens), and other Bitcoin protocol extensions. *** ## Q13: How does Maestro help with wallet development? **A:** Maestro's Wallet API provides wallet developers with reliable blockchain data access, transaction monitoring, and balance tracking services. This allows wallet providers to focus on building great user experiences while we handle the underlying infrastructure demands. *** ## Q14: How can enterprises and institutions use Maestro? **A:** Enterprises and institutions can leverage Maestro's infrastructure to build compliance-friendly, high-performance blockchain applications. Maestro's scalable architecture is designed to meet enterprise demands for reliability, security, and performance when integrating with Bitcoin and other UTxO blockchains. *** ## Q15: How do I start using Maestro's services? **A:** Visit Maestro's [developer portal](https://www.gomaestro.org/documentation) 1. [Create an account](https://dashboard.gomaestro.org/signup) 2. Choose your subscription plan 3. Get your API keys 4. Integrate using Maestro's [documentation](/) and [SDKs](https://github.com/maestro-org) *** ## Q16: Does Maestro offer a free tier for developers? **A:** Yes, Maestro offers a free tier for developers to test and experiment with its APIs and services. Check Maestro's [pricing page](https://www.gomaestro.org/pricing) for the latest information on Maestro's free tier limits and capabilities. *** ## Q17: Where can I find documentation and examples? **A:** Comprehensive documentation, tutorials, example projects, and integration guides are available on Maestro's [developer documentation site](/). *** ## Q18: Does Maestro provide customer support? **A:** Yes, Maestro provides dedicated support channels for all customers. Enterprise customers receive priority support with guaranteed response times. Visit Maestro's [support page](https://www.gomaestro.org/pricing) for more information. *** ## Q19: What is Maestro's vision for the future? **A:** Maestro's vision is to accelerate the world's transition to the Bitcoin Economy and become the infrastructure middleware that powers a blockchain-native financial system. Maestro's four-phase master plan includes: 1. Building the most advanced application stack for Bitcoin 2. Powering infrastructure for top DeFi projects 3. Onboarding enterprises and institutions 4. Supporting nation-states in adopting Bitcoin as financial infrastructure *** ## Q20: How is Maestro contributing to Bitcoin's evolution as a platform? **A:** Maestro is helping transform Bitcoin from a simple value transfer network into a robust platform for applications and services. By providing the critical infrastructure needed for Bitcoin DeFi, NFTs, L2s and other use cases, Maestro is enabling Bitcoin to fulfill its potential as the foundation of a new financial system. *** ## Q21: How can I partner with Maestro? **A:** If you're building a blockchain project or service that could benefit from Maestro's infrastructure, reach out by email: `info@gomaestro.org`. Maestro is actively collaborating with promising projects across the blockchain ecosystem. *** ## Q22: Does Maestro offer custom solutions for specific use cases? **A:** Yes, Maestro works with enterprises and large-scale projects to provide customized infrastructure solutions tailored to specific requirements. Contact Maestro's enterprise team (`info@gomaestro.org`) to discuss your unique needs. *** ## Q23: How can developers get started with Maestro? **A:** Developers can [sign up](https://dashboard.gomaestro.org/signup) on Maestro’s platform to access a suite of APIs and cutting-edge tools. The website offers comprehensive [documentation](https://www.gomaestro.org/documentation), a [developer hub](https://www.gomaestro.org/documentation), and [quick-start guides](/getting-started) to help you rapidly build, test, and deploy decentralized applications. *** ## Q24: Is it safe to use Maestro? **A:** Yes. Maestro provides enterprise-grade security through: * **Secure Architecture:** Advanced cryptographic techniques and security best practices protect your data and transactions. * **Privacy Controls:** Strict data access policies and blockchain's inherent decentralization reduce breach risks. * **High Reliability:** Our infrastructure maintains excellent uptime for business continuity. * **Regulatory Compliance:** We adhere to industry standards for security and privacy. * **Expert Support:** Our specialized team helps ensure your safe implementation of UTxO blockchain technology. *** ## Q25: What are Maestro Compute Credits? **A:** Maestro Compute Credits are the units used in our usage-based billing system. Each API operation or method is assigned a specific number of compute credits based on the computational resources it requires. This model is similar to cloud usage billing on platforms like AWS or Google Cloud. The benefit of this approach is fairness and transparency - you only pay for the actual computational workload your application generates. Lightweight operations cost fewer credits than resource-intensive ones, accurately reflecting your resource utilization. This allows developers to efficiently manage costs while scaling their applications. *** ## Q26: Can Maestro save me money? **A:** Yes, Maestro is designed to be cost-effective in several ways: * **Pay for what you use:** Our compute credit model ensures you only pay for the computational resources you actually consume * **Automatic volume discounts:** As your usage increases, you automatically qualify for progressively larger discounts * **Annual billing savings:** Get an additional 30% discount by choosing annual billing * **No infrastructure costs:** Eliminate the expenses of running and maintaining your own blockchain nodes * **Developer efficiency:** Reduce development time and costs by using our ready-made APIs instead of building custom solutions For many projects, using Maestro is significantly more economical than building and maintaining comparable blockchain infrastructure in-house, especially when accounting for ongoing operational costs and the specialized expertise required. *** ## Q27: How do Maestro's volume discounts work? **A:** Maestro's pricing is designed to reward growth. As your API usage increases, you automatically qualify to higher volume tiers with progressively larger discounts. This ensures your costs don't scale linearly with your success. The volume discounts apply automatically based on your monthly usage, making the unit price cheaper the more you use it. *** ## Q28: Does Maestro contribute to open-source? **A:** Yes, Maestro is deeply committed to driving innovation within the blockchain ecosystem through open-source contributions. We actively contribute to several important open-source projects including Laser Eyes, Blink Labs, TxPipe, Lucid, and Mesh. Our involvement with these open-source organizations reflects our dedication to community collaboration, transparency, and the democratization of blockchain technology. By supporting these projects, we help push the boundaries of what's possible within the blockchain space while fostering an environment that propels the entire community forward. *** ## Q29: What are Maestro's values and team culture? **A:** **Company Values:** Maestro is built on a foundation of engineering excellence and user-centric product development. Maestro believes in crafting services that address the genuine needs of users while delivering premium performance at any scale. Maestro's commitment to excellence ensures that whether you're an individual developer or an established enterprise, Maestro provides the infrastructure you need to succeed. **Team Culture:** Maestro's team consists of domain experts and creative thinkers working in a fully decentralized company structure. Maestro fosters an environment based on first principle thinking, constructive discourse, and a relentless pursuit of excellence. Maestro's culture values self-leadership, radical accountability, and individual freedom, enabling Maestro's team to innovate and drive blockchain technology forward. # Getting Started Source: https://docs.developer.gomaestro.org/general/getting-started Quick start guide to get up and running with Maestro APIs. Learn how to create an account, generate API keys, and make your first blockchain API request. **Quickstart Guide to Maestro** Learn how to open a Maestro account, create a project API key, and make your first request. **Start building today!** ## Tutorial ### 1. Sign Up or Log In 👋 ***New to Maestro?*** Create an account for free [here](https://dashboard.gomaestro.org/). *** ### 2. Create a Project Once logged in to the Dashboard, you can create multiple API projects. Each project will generate a unique `API key` that authorizes your requests on the platform. The total number of projects you can create depends on your active subscription tier. * Click on `+ New Project` * Add new project info * `Project Name` * `Blockchain` * `Network` *** ### 3. Copy the URL and API Key *** ### 4. Your Project Dashboard The Projects section will list all created projects. In this example, we will use the `Cardano Preprod` network. * Copy the project's `URL` and `Key`. | Term | Description | | :------------------ | :------------------------------------------------------------------------------------------------ | | Project URL | The base URL is customized for the network you selected for your project. | | **Project API Key** | A unique key used by the Maestro API to authenticate and authorize all requests for your project. | Each *API key* is specific to a project and will only function with the network you selected for that project. *** **Next Steps** **Congrats!** Now that you've generated your first API key, let's [Make Your First API Request](./make-your-first-api-request). # Introduction Source: https://docs.developer.gomaestro.org/general/index Welcome to Maestro - comprehensive blockchain APIs for Bitcoin, Cardano, Dogecoin, and more. Build powerful Web3 applications with our reliable infrastructure. # Welcome to [Maestro](https://www.gomaestro.org/) 👋 [**Maestro**](https://www.gomaestro.org/) is the *fastest* *way* to build on Web3— the **1st complete Web3 developer stack** for UTxO-based apps. Maestro offers *enterprise-grade scalability* and *robust data availability* solutions. # Agentic Integrations Maestro provides a complete set of tools for AI agents to seamlessly interact with the blockchain. Explore our agentic integrations: Autonomous API access via crypto payments — no API keys required. Connect LLMs and AI agents to Bitcoin blockchain data. Trustless on-chain agent discovery and verification. Maestro skills on the ClawHub AI marketplace. # Supported Chains Maestro supports the following UTxO chains; view available API services below:           # Quickstart Learn how to create a project API key, make a request, and submit your first transaction. Your builder journey starts today!           *** # Popular Tutorials Level up your skills with developer-friendly tutorials showcasing Maestro's best features and tooling:       *** **Don't have an API key yet?** Create an account for *free* and start exploring Maestro's self-serving [Dashboard](https://dashboard.gomaestro.org/signup). # Managed Smart Contracts Source: https://docs.developer.gomaestro.org/general/managed-smart-contracts Cardano's first Smart Contract Marketplace featuring open-source, audited smart contracts with hosted execution and unified key management. # Smart-Contract Marketplace Maestro has released Cardano's first Smart Contract Marketplace, a repository of open-source and audited smart contracts contributed by the community. This platform is a significant step toward promoting open collaboration and trust within the smart contract landscape. In addition, Maestro offers two novel services aimed at empowering developers with low-code/no-code tools to build and deploy secure dApps easily. 1. Managed Contract API: Deploy contracts and build transactions with a simple REST API interface 2. Contract UI Widgets: Integrate whitelabel React components directly into your app This service is only included in subscriptions above the **Artist** tier. Check out the Marketplace [here](https://www.gomaestro.org/smart-contracts). *** # Service Availability The Managed Smart Contract service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | :------------------------- | :------ | :------------------------------------------------------- | :------- | | **Managed Smart Contrac**t | *-* | [API Reference](/cardano/managed-contracts-api/overview) | *-* | *** ## Available Contracts on the Marketplace | **Smart Contract** | **Description** | **Details** | **Audit/Open-sourced** | | :------------------------------- | :-------------------------------------------------------------------------- | :--------------------------------------------------------- | :-------------------------------------- | | **Linear Vesting** | Lock tokens with a linear vesting schedule and control release over time. | Compiler: Plutarch v2, Project: Anastasia Labs, Fee: Yes | Open-sourced, Audited by Anastasia Labs | | **Direct Swap** | Peer-to-peer & trustless swaps for tokens & NFTs. | Compiler: Plutarch v2, Project: Anastasia Labs, Fee: Yes | Open-sourced, Audited by Anastasia Labs | | **Single Asset Staking** | Earn and redeem yield on tokens staked at an address. | Compiler: Plutarch v2, Project: Anastasia Labs, Fee: Yes | Open-sourced, Audited by Anastasia Labs | | **P2P Lending** | Cerra - P2P lending & borrowing order book. | Compiler: Plutus v2, Project: Cerra, Fee: Yes | Open-sourced | | **Privacy Payments** | Encoins - Privacy accounts and payments protocol. | Compiler: Aiken v2, Project: Encoins, Fee: Yes | Open-sourced | | **P2P Swaps** | Fallen Icarus - distributed order book DEX with composable atomic swaps. | Compiler: Plutus v2, Project: Fallen Icarus, Fee: No | Open-sourced | | **Derivatives Marketplace** | Fallen Icarus - marketplace for options, futures, and bonds. | Compiler: Plutus v2, Project: Fallen Icarus, Fee: No | Open-sourced | | **P2P Options** | Fallen Icarus - P2P options trading. | Compiler: Plutus v2, Project: Fallen Icarus, Fee: No | Open-sourced | | **P2P Loans** | Fallen Icarus - distributed P2P lending/borrowing protocol. | Compiler: Aiken v2, Project: Fallen Icarus, Fee: No | Open-sourced | | **Collateralized Debt Position** | Indigo - collateralized debt position protocol. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Onchain Oracle** | Indigo - Onchain oracle script. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Governance Polling** | Indigo - Onchain governance polling script. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Stability Pool** | Indigo - CDP stability pools. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Governance Proposal** | Indigo - Onchain governance proposal creation. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Onchain Staking** | Indigo - staking contract. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **Onchain Treasury** | Indigo - Onchain treasury protocol. | Compiler: Plutus v2, Project: Indigo, Fee: Yes | Open-sourced | | **NFT Marketplace** | JPG.store Bid and Ask contract for NFT marketplace. | Compiler: Aiken v2, Project: JPG.store, Fee: Yes | Open-sourced, Audited by Sundaeswap | | **Pool Lending Protocol** | Pooled lending and borrowing protocol with flash loans. | Compiler: Aiken v2, Project: Lenfi, Fee: Yes | Open-sourced, Audited by TxPipe | | **AMM DEX V1** | Minswap - AMM DEX v1 protocol. | Compiler: Plutus v1, Project: Minswap, Fee: Yes | Open-sourced, Audited by Tweag | | **AMM DEX V2** | MuesliSwap - AMM DEX protocol. | Compiler: Plutus v2, Project: MuesliSwap, Fee: Yes | Open-sourced | | **AMM DEX Batcher** | Batch Muesliswap orders. | Compiler: Plutus v2, Project: MuesliSwap, Fee: Yes | Open-sourced | | **Orderbook DEX V1** | MuesliSwap - v1.1 OrderBook DEX. | Compiler: Plutus v1, Project: MuesliSwap, Fee: Yes | Open-sourced | | **NFT Marketplace** | SpaceBudz - NFT marketplace contract with chain indexer and event listener. | Compiler: Aiken v2, Project: SpaceBudz, Fee: No | Open-sourced | | **AMM DEX** | Spectrum Network - Cross-chain DEX with liquidity provision & mining. | Compiler: Plutarch v1, Project: Spectrum Network, Fee: Yes | Open-sourced | | **NFT Marketplace** | Token Riot - NFT selling, offering, auctions, and timelocks. | Compiler: Plutus v2, Project: Token Riot, Fee: Yes | Open-sourced | | **Orderbook DEX** | Genius Yield - Pure order book DEX supporting partial orders. | Compiler: Plutarch v2, Project: Genius Yield, Fee: No | Open-sourced, Audited by Anastasia Labs | | **DEX Order Validator** | GY - Validate new DEX limit orders. | Compiler: Plutarch v2, Project: Genius Yield, Fee: No | Open-sourced, Audited by Anastasia Labs | | **DEX Fee Config** | GY - Set maker & taker DEX fees. | Compiler: Plutarch v2, Project: Genius Yield, Fee: No | Open-sourced, Audited by Anastasia Labs | *** ### Contract Royalty Royalties are directly encoded into the contract and *automatically distributed to the contract author* when executed. Like NFT royalties, this ensures the author is incentivized to **open-source** their contract and is rewarded accordingly, *benefiting the Cardano ecosystem with standardized and vetted contracts* for anyone to use. **Add your own contract to the Marketplace** Do you have a smart contract and want to earn royalties for it? To get added to the *Marketplace*, follow the following ***Contribution Instructions.*** *** ## Advantages of Open-Sourcing Contracts * **Standardization**: Open-source contracts can demonstrate best practices and battle-tested protocol architectures, providing a reliable foundation for developers. * **Security**: Anyone can audit open-source contracts, enhancing their security over time and building confidence in the community that uses them. * **Collaboration**: Open-source work benefits from diverse contributions, which can lead to higher application efficiency and robustness. * **Composability**: The ability to combine and recombine contracts encourages creative and innovative protocol development. *** ## Unlocked Benefits for Cardano’s dApp Ecosystem 1. **Dependable Contracts**: Access a curated collection of modular, robust, and reusable smart contracts. Benefit from contracts that have undergone rigorous community assessments. 2. **Standardize Contract Interface**: Interact with contracts through intuitive API, SDK, or UI components, lowering the barrier to entry into Web3 and unlocking the power of blockchain for everyone. 3. **Instant Deployment**: Avoid cumbersome and expensive Cardano backend infrastructure and seamlessly deploy contracts into your web2 application. 4. **Rewarding Innovation**: The royalty system for **both** the backend and frontend developers encourages a culture of sharing and collective advancement. *** ## Managed Contract API Maestro's Managed Contracts API gives access to **ready-to-deploy smart contracts** written in [Plutus](https://github.com/input-output-hk/plutus) and [Aiken](https://aiken-lang.org/) or any other Cardano smart contract frameworks. The contract API abstracts away both *on-chain* and *off-chain* script interactions. Using intuitive and developer-friendly endpoints, this fully managed contract service aims to *enhance developer experience*, *strengthen the ecosystem*, and *enhance the security* of Dapps on Cardano. ## Contract UI Widgets ### *Direct Swap UI Widget* For those looking for an end-to-end web integration, Maestro's Contract Widgets provide a no-code option, allowing developers to add full-featured frontend components to any website. All UI widgets are made open source and can be found [here](https://github.com/maestro-org/smart-contract-clients): **Add your own UI Widget and charge a frontend fee** Similar to smart contract royalties, front-end developers can contribute their own UI component and charge a *front-end fee* to receive ongoing revenue for their work. ### *Linear Vesting UI Widget* This API is only included in subscriptions above the *Artist* tier. Get to know Maestro subscription details [here](https://www.gomaestro.org/pricing). # Market Price Feeds Source: https://docs.developer.gomaestro.org/general/market-price-feeds High-fidelity DeFi market data feeds from Bitcoin and Cardano protocols with OHLC data, trading pairs, and real-time price analytics. Maestro's *Market Price API* provides **high-fidelity smart contract data feeds** from top DeFi protocols in both the Bitcoin and Cardano ecosystems, enabling the exploration, visualization, and discovery of trends in both historical and real-time DeFi markets. The API democratizes access to DeFi data, facilitating various use-cases for developers, researchers, and traders. It not only abstracts away the complexity of accessing valuable smart contract or UTXO data but also processes and aggregates this data into dApp metrics and financial indicators, enabling advanced blockchain analytics. In the future, it will offer a graphical visualization interface for creating custom dashboards, ultimately helping users to build better dApps, find arbitrage opportunities, and discover new trends in DeFi. This service is only included in subscriptions above the **Artist** tier. ## Practical Use Cases * **DeFi Analytics**: Track and analyze liquidity, trading volumes and user activity from various DeFi protocols such as Minswap, Genius Yield and Magic Eden. * **Smart Contract Analysis**: Analyze the interactions and transactions of a specific smart contract, useful for monitoring the usage and activity of a dApp or for auditing a smart contract. * **NFT Analytics**: Analyze trends and data related to Non-Fungible Tokens (NFTs), such as sales volumes, average prices, and popular collections. * **Token/Rune Analytics**: Analyze transactions and transfers of a specific asset, such as token/rune transfers, holder distribution, and on-chain trading activity. * **Wallet Tracking**: Track and analyze the transactions of a specific Cardano or Bitcoin address; useful for monitoring one's own transactions or for analyzing the activity of a specific address, such as that of a DEX. ### Mempool Awareness Add the `mempool=included` query parameter to your endpoint to return the latest market price including trades from the mempool for fast price discovery. This functionality includes: * **Rollback Protection:** The system monitors for block reorganizations and automatically rolls back unconfirmed or invalidated trades, ensuring the data reflects the confirmed state of the chain. *Even though real-time pricing includes mempool trades, the API corrects prices if blocks are reorged—no false positives or phantom trades in pricing.* For developers, this means that you can use the price data immediately but still trust that it will self-correct if the underlying block is not confirmed. > *By the numbers:* > > We refresh this index at a 1 second frequency so both the index and candlesticks are continuously up-to-date. > > Our index maintains a buffer of 10 blocks, which allows us to properly update mempool data to be confirmed, without having duplicate or incorrect data. *** # Service Availability The Market Price service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | ---------------- | --------------------------------------------------- | --------------------------------------------------- | ------------- | | **Market Price** | [API Reference](/bitcoin/market-price-api/overview) | [API Reference](/cardano/market-price-api/overview) | *Coming Soon* | ## Format definitions Detailing the Maestro Market API response structures ### Prices The DEX OHLC endpoint will return OHLC (Open High Low Close) prices aggregated over the prices of individual trades for a particular time resolution and over a time range. **Bitcoin** Example: * "symbol": "BTC-840000:3" = Bitcoin-DOG•GO•TO•THE•MOON (pair) * "side": "buy" = puchase rune with Bitcoin * price = cost per rune (in satoshis) **Add Mempool awareness** to your endpoint as an optional query parameter. Example: `?mempool=included` [https://xbt-mainnet.gomaestro-api.org/v0/markets/dexs/ohlc/magiceden/BTC-840000:3?mempool=included](https://xbt-mainnet.gomaestro-api.org/v0/markets/dexs/ohlc/magiceden/BTC-840000:3?mempool=included) **Cardano** * coin A price = coin A traded amount / coin B traded amount * coin B price = coin B traded amount / coin A traded amount **This service is only included in subscriptions above the *****Artist***** tier.** ## Data Accessibility The Market Price API service enhances *Data Accessibility* in the following ways: 1. **Abstracts Complexity**: The Bitcoin and Cardano blockchains contains a vast amount of data that is publicly available but challenging to access and analyze due to their complex natures. Maestro's service abstracts away this complexity and provides easy access to valuable smart contract data (Cardano). Users do not need to have deep technical knowledge on how to parse and process smart-contract data (script, datum, UTxOs, etc.). 2. **Democratizes Access**: By providing a high-fidelity smart contract data feed, Maestro makes it easy for a wide range of users, whether they are developers, researchers, or traders, to access the DeFi data they need. This democratization of access helps fuel adoption and innovation in the ecosystem by enabling various use cases, such as building better dApps, finding arbitrage opportunities, and discovering new trends in DeFi. 3. **Provides Real-time and Historical Data**: Maestro's Market Price API provides access to both historical and real-time smart contract or DEX market data. This is crucial for conducting a comprehensive analysis, backtesting strategies, and making informed decisions based on the most current data. 4. **Facilitates Integration**: The API format of Maestro’s Market Price API service facilitates integration into various applications, tools, or services. Developers can easily integrate the API into their dApps, trading bots, or analytics platforms to access the data they need programmatically. ## Data Analysis The Market Price API service provides superior *Data Analysis* in several ways: 1. **Processing and Aggregation**: The raw blockchain data includes specific smart contract (Cardano) or complex UTXO interactions happening on DEXes and lending protocols, which can be challenging to analyze. Maestro's service processes and aggregates this raw contract data into more understandable dApp metrics and financial indicators. This transformation enables more advanced blockchain analytics and makes it easier to extract deep insights from the Bitcoin and Cardano DeFi ecosystems. 2. **Enables Advanced Blockchain Analytics**: By processing and aggregating dApp metrics, Maestro's service enables users to conduct more advanced blockchain analytics. Researchers, traders, and developers can extract deep insights from both the Bitcoin and Cardano DeFi ecosystems, which is particularly valuable for making informed decisions, optimizing strategies, and identifying new opportunities. # Mempool Monitoring Source: https://docs.developer.gomaestro.org/general/mempool-monitoring Bitcoin mempool monitoring tools and API for tracking unconfirmed transactions, fee estimation, and network congestion analysis. The **Bitcoin Mempool** (short for "Memory Pool") is a critical component of the Bitcoin network where all valid but unconfirmed transactions are temporarily stored. When you initiate a Bitcoin transaction, it doesn't get added to the blockchain immediately. Instead, it first enters the Mempool of each participating node in the network. ## The Function of the Mempool 1. **Staging Area for Transactions:** The Mempool acts as a holding area for transactions waiting to be included in the next block. This allows miners to select which transactions to include based on factors like transaction fees. 2. **Facilitates Fee Prioritization:** Since block space is limited (1 MB per block for Bitcoin), miners often prioritize transactions that offer higher fees. Transactions in the Mempool are usually sorted by fee rates, enabling miners to maximize their earnings. 3. **Network Health Indicator:** The size and state of the Mempool can indicate the network's congestion level. A growing Mempool suggests more transactions are waiting to be processed than usual, which can lead to higher fees and longer confirmation times. 4. **Transaction Propagation:** The Mempool helps in propagating transactions across the network. As each node receives a transaction, it validates it and adds it to its own Mempool before sharing it with neighboring nodes. The Bitcoin Mempool is essential for managing unconfirmed transactions. It serves as a temporary repository that enables efficient transaction processing, fee-based prioritization, and overall network stability. # Service Availability The Mempool Monitoring service is available on the following blockchains: | Services | Bitcoin | Cardano | Dogecoin | | ------------------------ | --------------------------------------------------------- | ------------- | ------------------------------------------------ | | **Mempool Node RPC** | [API Reference](/bitcoin/node-rpc-api/overview) | *Coming Soon* | [API Reference](/dogecoin/node-rpc-api/overview) | | **Mempool Metaprotocol** | [API Reference](/bitcoin/mempool-monitoring-api/overview) | *Coming Soon* | *Coming Soon* | ### Mempool Node RPC Service This service offers remote access to synced nodes via RPC protocols. It allows users to perform essential operations such as querying blockchain data securely and efficiently. It specializes in giving access to Mempool Information. It can track in real-time the state of unconfirmed transactions, as well as, mempool transaction ancestors and descendants. Find out more information about the [Node RPC](./node-rpc) Service. ### Mempool Metaprotocol Service This service is a highly-optimized\*\* mempool indexer for Bitcoin metaprotocols\*\*, such as Runes and Inscriptions. It gives access to real-time metaprotocol information from unconfirmed transactions: * Retrieve mempool Runes balances and inscriptions at an address * Retrieve mempool UTxOs with Runes & Inscription info at an address This service allows to filter the mempool state by some number of "estimated blocks", in order to prioritize for transsactions that are more likely to be minted in the next block. ### Global Mempool Infrastructure Maestro's advanced mempool infrastructure leverages a **Global Mempool Synchronization** system that connects to multiple Bitcoin nodes worldwide to provide the most comprehensive and accurate mempool data available. **How it works:** * **Multi-Node Network:** Connects to geographically distributed Bitcoin nodes. * **Real-Time Aggregation:** Continuously synchronizes mempool data from multiple sources. * **Unified Global View:** Provides a consolidated perspective of unconfirmed transactions across regions. * **Enhanced Accuracy:** Reduces blind spots and regional inconsistencies for better network visibility. This infrastructure ensures that Maestro's mempool monitoring APIs deliver the most complete and reliable data for fee estimation, transaction timing, and network analysis. ### Benefits for Developers Access to Bitcoin mempool APIs provides developers with real-time data about unconfirmed transactions waiting to be included in the blockchain. This access offers several benefits and enables a wide range of use-cases for application builders. 1. **Real-Time Transaction Monitoring** * \*\*Immediate Insights & Enhanced User Experience: \*\*Access to the mempool allows developers to monitor transactions as soon as they are broadcasted to the network. Developers can provide users with instant updates on the status of their transactions. 2. **Optimal Fee Estimation:** * **Dynamic Fee & Cost Efficiency :** By analyzing current mempool conditions, developers can help users set appropriate transaction fees to achieve desired confirmation times. Avoid overpaying fees during low congestion periods by adjusting fees based on real-time data. 3. **Network Analysis and Health Monitoring:** * **Congestion & Anomaly Detection:** Mempool data can signal network congestion, helping developers and users make informed decisions about transaction timing. Identify unusual patterns that may indicate spam attacks or other network issues. 4. **Custom Transaction Selection for Miners:** * **Maximizing Profits at Block Construction:** Miners can use mempool data to select transactions with higher fees, optimizing their earnings. Helps in creating blocks that maximize fee revenue while adhering to size limits. *** ### Use-Cases for App Builders Access to Bitcoin mempool APIs can enhance the functionality, efficiency, and user experience of blockchain applications. Whether it's optimizing transaction fees, providing immediate transaction feedback, or developing sophisticated analytics tools, mempool data enables a multitude of innovative use-cases: 1. **Cryptocurrency Wallets:** Offer users real-time fee recommendations for optimal transaction confirmation times. Allow users to monitor the progress of their unconfirmed transactions. 2. **Blockchain Explorers:** Display real-time data on unconfirmed transactions, including sizes, fees, and volume. Enable users to search and filter transactions based on various criteria. 3. **Trading Platforms and Exchanges:** Use mempool data to anticipate market movements based on transaction volumes and fee rates. Optimize the timing of transactions to ensure faster confirmations. 4. **Mining Software and Pools:** Develop smarter ways to select transactions that maximize revenue. Adjust mining strategies based on current mempool conditions. 5. **Analytics and Research Tools:** Provide insights into transaction patterns, fee trends, and network health. Facilitate studies on blockchain behavior and transaction dynamics. 6. **Transaction Accelerators:** Help users increase the fees of their unconfirmed transactions to expedite processing. Offer services to resolve transactions delayed due to low fees. # Node RPC Source: https://docs.developer.gomaestro.org/general/node-rpc Node RPC services for blockchain interaction without running full nodes - query data, broadcast transactions, and access blockchain functionality via JSON-RPC. The **Node RPC (Remote Procedure Call)** is a service that enables developers and applications to interact with blockchain networks without the need to run their own full nodes. By offering remote access to synced nodes via RPC protocols, this service allows users to perform essential operations such as querying blockchain data and broadcasting transactions securely and efficiently. ## Node RPC Key Functions * **Remote Node Access:** The RPC service operates full blockchain nodes and exposes their functionality through an API (JSON-RPC protocol). This setup allows developers to remotely execute commands as if they were running a local node. * **Blockchain Data Retrieval:** Developers can fetch detailed information about blocks, transactions, and addresses. This includes querying transaction histories, obtaining unspent transaction outputs (UTXOs), and monitoring address balances. * **Transaction Broadcasting:** Applications can create, sign, and broadcast transactions to the network. This is crucial for sending payments or interacting with Layer 2 solutions like the Lightning Network. *** # Service Availability The Node RPC service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | Midl | | :----------- | :---------------------------------------------- | :------------ | :----------------------------------------------- | :------------------------------------------- | | **Node RPC** | [API Reference](/bitcoin/node-rpc-api/overview) | *Coming Soon* | [API Reference](/dogecoin/node-rpc-api/overview) | [API Reference](/midl/node-rpc-api/overview) | *** ## Benefits for Developers * **Resource Efficiency:** Running a full blockchain node requires significant disk space, constant bandwidth, and computational resources. An RPC provider offloads this burden, allowing developers to access node functionalities without the associated overhead. * **Time Savings:** Synchronizing a new node with the network can take several days. RPC providers offer immediate access, accelerating development and deployment timelines. * **Scalability:** Designed to handle high volumes of requests, ensuring that applications can scale to meet user demand without performance degradation. * **Reliability and Uptime:** Maintain robust infrastructure with high availability, ensuring consistent access to the blockchain network, which is critical for real-time applications. * \*\*Expertise and Support: \*\*Maestro's specialized team manages the nodes, offering optimizations, security updates, and technical support that individual developers might find challenging to maintain independently. *** ## Use-Cases for Blockchain Businesses * **Cryptocurrency Wallets:** Developers building crypto wallets can use RPC providers to manage wallet functionalities, check balances, and send transactions without handling the complexities of node management. * **Payment Processing Systems:** E-commerce platforms or services that accept cryptocurrencies can utilize RPC providers to monitor incoming transactions, confirm payments, and handle withdrawals efficiently. * **Blockchain Explorers:** Applications that allow users to explore blockchain data need access to detailed information about blocks, transactions, and addresses, which can be provided through RPC services. * **Analytics and Monitoring Tools:** Developers creating tools for network analysis, transaction monitoring, or market insights can retrieve necessary data points from the blockchain * **Exchange Platforms:** Cryptocurrency exchanges require reliable and fast interactions with the network for processing deposits, withdrawals, and confirming transaction statuses. *** ## Takeaways Maestro's Node RPC service plays a pivotal role in the blockchain ecosystem by bridging the gap between developers and the blockchain network. By handling the complexities of node operation and maintenance, RPC providers empower developers to: * **Focus on Innovation:** Spend more time developing features and improving user experience rather than managing infrastructure. * **Reduce Costs:** Avoid the expenses related to hardware, storage, bandwidth, and maintenance associated with running full nodes. * **Enhance Security:** Leverage the provider's expertise in securing nodes and handling sensitive data like private keys. * **Achieve Scalability:** Easily scale applications to accommodate a growing user base without worrying about backend limitations. # Platform Overview Source: https://docs.developer.gomaestro.org/general/platform-overview Complete overview of Maestro's Web3 stack for UTxO chains including Bitcoin, Cardano, and Dogecoin. Discover our key differentiators and services. **The Complete Web3 Stack for UTxO Chains** [Maestro](https://www.gomaestro.org/) offers an advanced UTxO-indexing data layer to supercharge Defi on Bitcoin, Cardano & Dogecoin. Below is an overview of Maestro's key differentiators and available services. *** [**Maestro**](https://www.gomaestro.org/)**’s state-of-the-art UTxO indexer technology** offers a *battle-tested, high-performance data layer* optimized to meet the unique needs and challenges of *UTxO-based DeFi protocols*, making it the infrastructure provider of choice for these blockchains. ## Key Differentiators Whether developing DeFi protocols, launching NFT marketplaces, or diving into blockchain data, Maestro equips you with everything you need to build, scale, and innovate: * **✅ All-in-one Enterprise Platform:** No longer juggle multiple data providers and software vendors. Maestro offers a suite of advanced services under one enterprise-ready package. * **✅ High Availability and Reliability:** Benefit from over 99% uptime, backed by enterprise-grade security to keep your applications running smoothly, without interruption. * **✅ Efficient Data Access**: Accelerate development with streamlined blockchain integration using our standard API protocols and robust developer tools. * **✅ Scalable and Cost-Effective:** Grow your project with confidence thanks to flexible, usage-based pricing designed to scale as your needs evolve. * **✅ Unmatched Support and SLAs:** Get peace of mind with responsive customer support and transparent service level agreements, ensuring reliable and timely assistance whenever you need it. *** # Available Services The Maestro platform simplifies your code, streamlines development, and accelerates dApp deployment with a suite of innovative technologies. | Services | Bitcoin | Cardano | Dogecoin | Midnight | Midl | | ------------------------- | --------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- | | **Blockchain Indexer** | [API Reference](/bitcoin/blockchain-indexer-api/overview) | [API Reference](/cardano/blockchain-indexer-api/overview) | [API Reference](/dogecoin/blockchain-indexer-api/overview) | [**API Reference**](https://www.postman.com/go-maestro/maestro-api/collection/ye4quyd/midnight-indexer-graphql-api) | - | | **Node RPC** | [API Reference](/bitcoin/node-rpc-api/overview) | *Coming Soon* | [API Reference](/dogecoin/node-rpc-api/overview) | *Coming Soon* | [API Reference](/midl/node-rpc-api/overview) | | **Transaction Manager** | *Coming Soon* | [API Reference](/cardano/transaction-manager-api/overview) | *Coming Soon* | *Coming Soon* | - | | **Mempool Monitoring** | [API Reference](/bitcoin/mempool-monitoring-api/overview) | *Coming Soon* | [API Reference](/dogecoin/node-rpc-api/overview) | - | - | | **Event Manager** | [API Reference](/bitcoin/event-manager-api/overview) | *Coming Soon* | *Coming Soon* | Coming Soon | - | | **Market Price** | [API Reference](/bitcoin/market-price-api/overview) | [API Reference](/cardano/market-price-api/overview) | *Coming Soon* | *Coming Soon* | - | | **Managed Contracts** | *-* | [API Reference](/cardano/managed-contracts-api/overview) | - | *Coming Soon* | - | | **Wallet Manager** | [**API Reference**](/bitcoin/wallet-api/overview) | - | *Coming Soon* | *Coming Soon* | - | | **Esplora API** | [**API Reference**](/bitcoin/esplora-api/overview) | - | - | - | - | | **Hosted Infrastructure** | ✔ | ✔ | ✔ | ✔ | ✔ | ## Swagger Support In addition to our [official Maestro API references](/platform-overview#available-services), we also provide a [Maestro Swagger UI](https://swagger.gomaestro.org) for developers who prefer a lighter-weight approach to testing our services. Simply select the service you are looking for from the dropdown menu at the top of the page and add your generated [Maestro API key](https://dashboard.gomaestro.org) to begin testing the endpoints. # Service Overview Enterprise-grade, high performance & low latency UTxO blockchain indexer optimized for both liveliness and accuracy. Query blockchain data and broadcast transactions without the need to run your own full node. Automates the entire transaction lifecycle, from submission to confirmation, providing full real-time visibility and control. Detect unconfirmed transactions in the mempool & track the state of UTxOs and metaprotocol assets. Onchain event notification service for event-driven software architecture. Unlocks high-fidelity market price data, empowering your dApp with precise market insights for better decision-making. Tools for managing crypto wallets. Developer-friendly API to generate key pairs and addresses quickly and securely. Enables seamless deployment and management of smart contracts with plug-and-play APIs and customizable UI components, reducing development time. A RESTful interface from Blockstream that provides read-only access to Bitcoin and Liquid blockchain data, including transactions, addresses, blocks, mempool, and assets. Offers dedicated, scalable infrastructure tailored for performance, control, and security, meeting the demands of mission-critical applications. # Transaction Manager Source: https://docs.developer.gomaestro.org/general/transaction-manager Transaction lifecycle management with real-time state tracking for pending, onchain, and rolled-back transactions across blockchain networks. Transactions are at the center of all interactions on the blockchain. They are responsible for defining the specific ledger state transitions between two consecutive blocks (ie. UTxOs both consumed and created at an address). As a dApp developer, tracking individual states of a transaction is important and complex. A transaction can be `pending`in a mempool, `onchain`in a block, or `rolledback `from a block. Capturing these state transitions in real-time is challenging and can lead to corrupted data in your application. *** # Service Availability The Transaction Manager service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | | :---------------------- | :------------ | :--------------------------------------------------------- | :------------ | | **Transaction Manager** | *Coming Soon* | [API Reference](/cardano/transaction-manager-api/overview) | *Coming Soon* | *** # Possible Transaction States | **State** | **Description** | | :------------- | :----------------------------------------------------------------------------------- | | **Rejected** | Rejected by the block producer due to an invalid transaction. | | **Pending** | Transaction successfully submitted and waiting in a mempool to be accepted on-chain. | | **Failed** | Communication to the node has failed. | | **Onchain** | Transaction is part of a minted block. | | **Rolledback** | Transaction has been removed from the chain due to a network rollback or reorg | *** # Transaction Monitoring & Webhook Notification System **Maestro’s Transaction Manager is a state-of-the-art tool that abstracts away the complexity of managing blockchain transaction states.** It provides a transaction monitoring dashboard and webhook notification system to track all transactions submitted with Maestro. This provides applications with the following benefits: ## 1. On-submit transaction information[​](/cardano/transaction-manager-api/overview) * **Automatic Retries**: Transactions that fail due to network issues are automatically resubmitted. * **Rejection Error Parsing**: Transactions rejected by the node will return specific error messages, such as missing UTxOs or malformed transaction bodies. * **Pending Transaction State**: Successfully submitted transactions are classified as `Pending` when entered into the mempool. ## 2. On-chain webhook notifications[​](/cardano/transaction-manager-api/overview) * **Onchain**: Once a `Pending` transaction is included in a block, an Onchain webhook notification is sent. * **Rolledback**: If an `Onchain` transaction is dropped due to a rollback, a `Rollback` webhook notification is sent. * **Timeouts**: ***\[Coming Soon]*** A transaction that remains in the mempool beyond its time-to-live will be marked as timed out and rejected. *** ## Transaction State Machine[​](/cardano/transaction-manager-api/overview) Transaction state transitions can best be understood with a [state machine](https://en.wikipedia.org/wiki/Finite-state_machine) diagram. *Note: The state machine contains loops, meaning a transaction can transition through the same state multiple times before reaching an end state.* For example, a rolledback transaction may be included into another block, resulting in three webhook notifications: > **Onchain -> Rollback -> Onchain** *** ## Transaction Submission[​](/cardano/transaction-manager-api/overview) All transactions submitted via Maestro's specialized endpoint are **recorded and tracked** by the Transaction Manager. Below are the possible response codes: | Response Code | Description | State Transition | | :------------ | :----------------- | :--------------------------------- | | 200 | Valid submission | Start --> Pending | | 400 | Invalid submission | Start --> Rejected | | 500 | Network failure | Start --> Start (retry) --> Failed | *** ## Common Use Cases [Webhooks](https://en.wikipedia.org/wiki/Webhook) are ideal for tracking continuously changing states of data, such as blockchain transactions. Maestro’s transaction notification system provides an efficient way for applications to react to on-chain events, enhancing user experience—particularly for time-sensitive applications. Examples of **time-sensitive Web3 applications** * Submitting a trade on a DEX * Placing a bid for an NFT auction Transaction rollback notifications are essential for maintaining *data integrity* by providing a mechanism to revert in-app operations as soon as a rollback happens on-chain. For example, reverting an onchain DEX order after a block containing that transaction gets rolled back. *** # Turbo Transactions The **Turbo Transaction** service is designed to **supercharge your transaction submission** process. It is a specialized system that employs various strategies to **get your transaction on-chain as fast as possible**. Whether the network is **under heavy load** or operating under normal conditions, Turbo Transactions ensures your transactions are added to the blockchain with utmost **reliability and speed**. This service is only included in subscriptions above the **Artist** tier. *** # Service Availability The Turbo Transaction service is available on the following blockchains: # Benefits of a transaction propagation system 1. Outcompete transactions trying to consume **highly sought-after UTxOs**, particularly within intensive DeFi applications. 2. Enhance the **reliability of transaction submissions**, particularly during periods of high network load. 3. Accelerate **transaction onchain confirmation and finality**, providing an edge in time-sensitive operations. *** ## Common Use Cases Use cases are vast, ranging from DeFi applications, where transaction speed can significantly impact financial outcomes, to gaming platforms, where swift transactions can enhance user experience dramatically. In essence, any application demanding fast, reliable transaction execution can substantially benefit from Turbo Transactions. # Wallet Manager Source: https://docs.developer.gomaestro.org/general/wallet-manager Address-level wallet activity tracking with balance changes, metaprotocol interactions, and granular transaction insights for explorers and wallets. This service provides granular insights into address-level activity, including balance changes and interactions with emerging metaprotocols, if applicable, depending on the chain. This API is ideal for developers building explorers, wallets, indexers, or analytics tools that need to surface meaningful, filtered transaction data tied to a specific address. Whether you're tracking basic balance deltas or metaprotocol token flows, the Wallet API gives you a unified, flexible interface for querying relevant blockchain events with pagination and fine-grained filters. ## Key Features * **Activity Tracking:** Understand balance increases, decreases, and self-transfers with timestamped accuracy to support historical analysis and auditing. * **Bitcoin** * **Satoshi History:** Returns the historical satoshi balances, itemized by block and including USD price. * **Inscription Insight:** Monitor Ordinals transactions, filtered by inscription ID, activity type (send/receive), or self-transfer logic to reduce noise from spam or internal moves. * **Rune Transaction Logging:** Track rune minting, transfers, etchings, and balance changes for a given address, including support for filtering by specific rune. * **Unified Metaprotocol View:** Fetch combined activity across satoshis, inscriptions, and runes in a single request to power holistic user or address histories. # Service Availability The Wallet API service is available on the following blockchains: | Service | Bitcoin | Cardano | Dogecoin | Arch | | -------------- | --------------------------------------------- | ------- | -------- | ---- | | **Wallet API** | [API Reference](/bitcoin/wallet-api/overview) | - | - | - | ## Benefits for Developers: Developers gain the ability to surface address-level insights without having to manually parse raw blockchain data. The Wallet API simplifies historical activity analysis, enables protocol-specific filtering, and lets developers build UX-enhancing features like transaction history views, asset trackers, and real-time alerts for wallet activity without managing indexing infrastructure. ### Use Cases * Displaying full transaction history for an address * Filtering specific activity types (e.g., only inscriptions received or runes decreased) * Building dashboards holders of specific assets * Monitoring wallet interactions with native and metaprotocol layers (if applicable) ### Endpoint Categories **Activity Tracking** Provides a unified and filterable view of all address-level activity, including satoshi balance changes, Ordinals (inscription) movements, and Rune-related events like etching, minting, and transfers—enabling comprehensive insight into asset flows across Bitcoin and metaprotocol layers. **Satoshi History** Query the historical satoshi balance for a specific address over time, allowing you to understand address usage patterns, time-based changes in holdings, and to reconstruct past wallet states. **Inscriptions Management** Fetch inscriptions associated with a wallet or address, including metadata like inscription ID, type, and origin. Useful for tracking Ordinals-based NFTs and file inscriptions on Bitcoin. **Rune Tracking** Monitor Rune balances and related activity tied to your wallet, including mints, transfers, and etchings. Supports granular filtering by specific Rune ID or asset name. **Transaction & UTXO Insight** Delivers detailed, mempool-aware views of confirmed and unconfirmed transactions and UTXO sets per address. Supports batch queries and enables tracking of spendable outputs in real time, including upcoming blocks. **Asset Holdings** Provides a snapshot of current asset ownership for UTXOs, Runes, and Inscriptions (if applicable). Supports batch queries and reflects pending mempool updates, enabling dynamic portfolio and balance views across native and metaprotocol assets. # API Usage Source: https://docs.developer.gomaestro.org/midl/api-usage Midl API usage guide with authentication, pagination, rate limits, and best practices for Maestro's Midl blockchain APIs. # Authentication You will need an `api-key` to access the Maestro API. You can obtain this key from the Maestro dApp Platform Dashboard. ## Examples ### POST Request Example request for submitting a transaction: ```bash theme={null} curl -X POST https://midl-mainnet.gomaestro-api.org/v0 \ -H "Content-Type: application/json" \ -H "api-key: YOUR_API_KEY" \ -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' ``` *** # Security To ensure the security of your API usage, follow these best practices: * **Keep your API key private**: Never share it publicly (e.g., on GitHub, client-side code). * **Prevent unauthorized usage**: Loss or misuse of your API key can result in the overuse of your account's available credits. * **Secure your API key**: Implement proper methods for storing and accessing your `api-key`, especially in production environments. *** # Computer Credits Maestro uses **Compute Credits** to measure the computational resources consumed by your applications on its platform, similar to traditional cloud providers like Google Cloud or AWS. The number of credits assigned to each operation or method is based on the global average duration of that process, **taking into account factors like complexity and computational intensity.** Learn more about how Compute Credits are allocated by exploring the **Subscription breakdown.** Compute Credits provide a **fair, usage-based pricing model**, meaning you only pay for the computational resources your application actually uses, making it both **cost-efficient** and **flexible**. *** # Request Limits Maestro enforces two types of API rate limits: * **Per day**: a set amount of credits consumed per day based on your [subscription](https://www.gomaestro.org/pricing) plan. * **Per second**: a set amount of requests per second based on your [subscription](https://www.gomaestro.org/pricing) plan. *For example, the ****Artist plan**** supports up to 10 requests per second.* For more details on available packages or to upgrade your plan, refer to the [Pricing page](https://www.gomaestro.org/pricing). If your organization needs higher limits, [contact us](mailto:info@gomaestro.org) to discuss **Enterprise solutions**. *** # Response Headers Maestro includes the following headers in API responses to help manage usage: | Header | Description | | -------------------------------- | ------------------------------------------------------ | | X-RateLimit-Limit-Second | Maximum allowed requests per second. | | **X-RateLimit-Remaining-Second** | **Remaining allowed requests for the current second.** | | X-Maestro-Credits-Limit | Total allowed credits for the day. | | **X-Maestro-Credits-Remaining** | **Remaining credits for the day.** | Be sure to monitor these values (in **bold**) and adjust your request rate accordingly to avoid hitting rate limits. *** # Errors Maestro follows standard HTTP response codes to indicate the success or failure of API requests: | 2xx | Success | | --- | ------------------------------------------------------------ | | 4xx | Client-side errors, such as missing or incorrect parameters. | | 5xx | Server-side errors with Maestro. | Refer to the [API Reference](/general/platform-overview) for detailed response codes for each endpoint. *** # Overview Source: https://docs.developer.gomaestro.org/midl/index Midl blockchain APIs and services from Maestro. Access Midl Node RPC APIs for network communication. Midl enables native smart contracts, tokens, and dApps directly on Bitcoin’s layer-1, without bridges or intermediaries. Developers can build, deploy, and interact with Bitcoin-native assets just as they would on Ethereum or Solana, but retaining the security and decentralization of the Bitcoin network. Midl unlocks: * Smart contracts executing on Bitcoin’s consensus layer * Token standards and fungible/non-fungible assets * Native yields: staking, fee-redistribution, liquidity mining * Full ecosystem interoperability (DEXes, governance, games, DeFi) *** ## Available Services Maestro provides the following services, accessible across multiple Midl networks:   ## Block Explorer Maestro also provides a comprehensive block explorer for the Midl network, offering an intuitive interface to explore blocks, transactions, smart contracts, and network activity. The explorer provides real-time insights into the Midl blockchain, making it easy to track transactions, verify contract deployments, and monitor network health. **Coming Soon**: Public block explorer link will be available here once deployed. ## Available Networks The service is available on the following Midl networks: | ***Network*** | ***Base URL*** | | ------------- | -------------------------------------------------------------------------------------- | | **Mainnet** | - | | **Testnet** | - | | **Regtest** | [https://midl-regtest.gomaestro-api.org/v0](https://midl-regtest.gomaestro-api.org/v0) | The Maestro API is currently versioned at `v0`. When making a query, `v0 `must be included in your base URL. # Midl - Node RPC API Source: https://docs.developer.gomaestro.org/midl/node-rpc-api/overview The [Midl](https://midl.xyz) Node RPC API provides direct, low-latency access to the Midl blockchain for querying network data, retrieving transaction and block details, EVM-specific metadata, and broadcasting transactions. This service is useful for developers building wallets, block explorers, vaults, or other blockchain-integrated applications. **JSON-RPC Compatibility** The Midl Node RPC API is a direct JSON-RPC interface that serves as a drop-in replacement for the MIDL EVM node's JSON-RPC interface. This means you can use existing EVM tooling and libraries without modification, simply by pointing them to Maestro's Midl RPC endpoints. ## Key Features * **Blockchain Information**: Retrieve real-time network data, including current height, latest hash, and timestamp for live synchronization. * **Block Data Access**: Fetch blocks by hash or height, explore recent block history with pagination, and select from header-only or full-detail views. * **Transaction Retrieval**: View complete transaction details such as sender, recipient, gas usage, fee metrics, and Bitcoin linkage for cross-chain verification. * **Hybrid Execution Context**: Access EVM-enhanced block data featuring gas metrics, withdrawals, and optional execution witness fields for full execution visibility. * **Cross-Chain Metadata**: Leverage unified transaction records containing both EVM semantics and Bitcoin anchors for multi-layer analytics. # JSON-RPC Source: https://docs.developer.gomaestro.org/midl/node-rpc-api/rpc midl/node-rpc-api/openapi.json post /rpc A drop-in replacement for Ethereum JSON-RPC interface supporting all standard methods. MIDL provides a single JSON-RPC endpoint that supports all standard Ethereum 2.0 JSON-RPC methods, making it a drop-in replacement for EVM-compatible blockchain interactions. ## JSON-RPC Methods: * [Block](#block-methods) * [Transaction](#transaction-methods) * [Account](#account-methods) * [Network](#network-methods) ### Block Methods #### `eth_getBlockByNumber` Get block information by block number. **Parameters:** 1. `blockNumber` (string): Block number in hex or "latest", "earliest", "pending" 2. `includeTransactions` (boolean): If true, returns full transaction objects **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getBlockByNumber", "params": ["latest", true], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": { "number": "0x1b4", "hash": "0x1234567890abcdef...", "parentHash": "0x...", "gasLimit": "0x1c9c380", "gasUsed": "0x...", "timestamp": "0x...", "transactions": [...] } } ``` #### `eth_getBlockByHash` Get block information by block hash. **Parameters:** 1. `blockHash` (string): Block hash in hexadecimal format 2. `includeTransactions` (boolean): If true, returns full transaction objects **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getBlockByHash", "params": ["0x1234567890abcdef...", true], "id": 1 } ``` #### `eth_blockNumber` Get the current block number. **Parameters:** None **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_blockNumber", "params": [], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": "0x4b7" } ``` ### Transaction Methods #### `eth_getTransactionByHash` Get transaction information by transaction hash. **Parameters:** 1. `transactionHash` (string): Transaction hash in hexadecimal format **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getTransactionByHash", "params": ["0x1234567890abcdef..."], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": { "hash": "0x1234567890abcdef...", "blockNumber": "0x1b4", "blockHash": "0x...", "transactionIndex": "0x0", "from": "0x...", "to": "0x...", "value": "0x...", "gas": "0x5208", "gasPrice": "0x...", "input": "0x" } } ``` #### `eth_getTransactionReceipt` Get transaction receipt by transaction hash. **Parameters:** 1. `transactionHash` (string): Transaction hash in hexadecimal format **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getTransactionReceipt", "params": ["0x1234567890abcdef..."], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": { "transactionHash": "0x1234567890abcdef...", "blockNumber": "0x1b4", "blockHash": "0x...", "transactionIndex": "0x0", "from": "0x...", "to": "0x...", "gasUsed": "0x5208", "cumulativeGasUsed": "0x5208", "status": "0x1", "logs": [] } } ``` ### Account Methods #### `eth_getBalance` Get account balance for a specific address. **Parameters:** 1. `address` (string): Account address in hexadecimal format 2. `blockParameter` (string): Block number in hex, or "latest", "earliest", "pending" **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getBalance", "params": ["0x1234567890abcdef...", "latest"], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": "0x0234c8a3397aab58" } ``` #### `eth_getTransactionCount` Get the transaction count (nonce) for an account. **Parameters:** 1. `address` (string): Account address in hexadecimal format 2. `blockParameter` (string): Block number in hex, or "latest", "earliest", "pending" **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_getTransactionCount", "params": ["0x1234567890abcdef...", "latest"], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": "0x1" } ``` ### Network Methods #### `eth_gasPrice` Get the current gas price. **Parameters:** None **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_gasPrice", "params": [], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": "0x09184e72a000" } ``` #### `eth_chainId` Get the network chain ID. **Parameters:** None **Example Request:** ```json theme={null} { "jsonrpc": "2.0", "method": "eth_chainId", "params": [], "id": 1 } ``` **Example Response:** ```json theme={null} { "jsonrpc": "2.0", "id": 1, "result": "0x1" } ``` ## Error Handling Standard JSON-RPC 2.0 error responses: ```json theme={null} { "jsonrpc": "2.0", "id": 1, "error": { "code": -32601, "message": "Method not found" } } ``` ## Integration Examples ### Web3.js ```javascript theme={null} const Web3 = require('web3'); const web3 = new Web3('https://midl-mainnet.gomaestro-api.org/v0'); // Set default headers for API key web3.currentProvider.headers = { 'api-key': 'YOUR_API_KEY' }; // Get latest block const block = await web3.eth.getBlock('latest'); ``` ### Ethers.js ```javascript theme={null} const { JsonRpcProvider } = require('ethers'); const provider = new JsonRpcProvider('https://midl-mainnet.gomaestro-api.org/v0', { headers: { 'api-key': 'YOUR_API_KEY' } }); // Get account balance const balance = await provider.getBalance('0x...'); ``` ## Rate Limits API calls are subject to your plan's rate limits. See [billing documentation](/account/manage-billing) for details on threshold billing and plan limits. # API Reference Source: https://docs.developer.gomaestro.org/midnight/api-reference Midnight Network API reference documentation with GraphQL endpoints for privacy-focused blockchain queries and zero-knowledge operations. # API Usage Source: https://docs.developer.gomaestro.org/midnight/api-usage Midnight Network API usage guide with authentication, privacy-focused queries, and best practices for zero-knowledge blockchain APIs. # Authentication You will need an `api-key` to access the Maestro API. To get an API key contact us on our socials: [Discord](https://discord.com/channels/950173135838273556/1266961548967018558) or email: `info@gomaestro.org` ## Examples ### Indexer Request Example request for retrieving information from the pub-dub Indexer API: ```sh Curl theme={null} curl --location 'https://midnight-testnet.gomaestro-api.org/v0/indexer/graphql' \ --header 'Content-Type: application/json' \ --header 'api-key: ${API_KEY}' \ --data '{"query":"query {\n block(offset: {height: 500}) {\n hash\n height\n timestamp\n parent {\n hash\n }\n transactions {\n hash\n applyStage\n }\n }\n}","variables":{}}' ``` ### Prover Request ```sh Curl theme={null} curl --location 'https://midnight-testnet.gomaestro-api.org/v0/prover/health' \ --header 'api-key: ${API_KEY}' ``` ## Security To ensure the security of your API usage, follow these best practices: * **Keep your API key private**: Never share it publicly (e.g., on GitHub, client-side code). * **Prevent unauthorized usage**: Loss or misuse of your API key can result in the overuse of your account's available credits. * **Secure your API key**: Implement proper methods for storing and accessing your api-key, especially in production environments. *** # Cursor-based Pagination Some Maestro endpoints use **Cursor-based Pagination to break large datasets into smaller, more manageable responses.** This method is particularly relevant when returning all the data in a single response would be inefficient or slow. * **Improved data integrity and accuracy** when fetching multiple pages. * **Prevents duplicates**, even when new blocks are processed between queries. * **Optimized for infinite scroll**, enabling a smooth user experience by loading content as the user scrolls. When using this method, responses will include a `next_cursor` string. This value should be passed as the `cursor` parameter in your next request to retrieve the next page of results. ## Example * **Initial Response**: When you make an initial API call, the response might include a `"next_cursor": "AAAAAALfeKF8btdzaVvkGaetSS7e1AAF"`. This indicates that there are more results to retrieve. * **Using** `next_cursor`: To get the next page of data, you need to include the `next_cursor` value in your next API request by adding it as a query parameter (`cursor`). * **Modifying the Query**: Append the cursor value to your API request URL, like this: ```none Text theme={null} ?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF ``` * **Result**: The API will return the next set of results when this value is provided. * **End of Data:** If the response includes `"next_cursor": null`, the requested dataset's end has been reached. **Other relevant query parameters are:** | Parameter | Default | Description | | :-------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `count` | `100` | Defines the maximum number of results per pagination page | | `order` | `asc` | Specifies the sort order of the results. Acceptable values are `asc` (ascending) or `desc` (descending). This option is available only for specific endpoints. | **Example** ```sh Curl theme={null} curl -L -X GET 'https://mainnet.gomaestro-api.org/v1/policy/f0ff48bbb7bbe9d59a40f1ce90e9e9d0ff5002ec48f232b49ca0fb9a/utxos?cursor=AAAAAALfeKF8btdzaVvkGaetSS7e1AAF' \ -H 'Accept: application/json' \ -H 'api-key: your-api-key' ``` Available [**Services & Networks**](https://documentation.gomaestro.org/) will include further details for a particular endpoint. *** # Computer Credits Maestro uses **Compute Credits** to measure the computational resources consumed by your applications on its platform, similar to traditional cloud providers like Google Cloud or AWS. The number of credits assigned to each operation or method is based on the global average duration of that process, **taking into account factors like complexity and computational intensity.** Learn more about how Compute Credits are allocated by exploring the **Subscription breakdown.** Compute Credits provide a **fair, usage-based pricing model**, meaning you only pay for the computational resources your application actually uses, making it both **cost-efficient** and **flexible**. *** # Request Limits Maestro enforces two types of API rate limits: * **Per day**: a set amount of credits consumed per day based on your [subscription](https://www.gomaestro.org/pricing) plan. * **Per second**: a set amount of requests per second based on your [subscription](https://www.gomaestro.org/pricing) plan. *For example, the ****Artist plan**** supports up to 10 requests per second.* For more details on available packages or to upgrade your plan, refer to the [Pricing page](https://www.gomaestro.org/pricing). If your organization needs higher limits, [contact us](mailto:info@gomaestro.org) to discuss **Enterprise solutions**. *** # Response Headers Maestro includes the following headers in API responses to help manage usage: | Header | Description | | :------------------------------- | :----------------------------------------------------- | | X-RateLimit-Limit-Second | Maximum allowed requests per second. | | **X-RateLimit-Remaining-Second** | **Remaining allowed requests for the current second.** | | X-Maestro-Credits-Limit | Total allowed credits for the day. | | **X-Maestro-Credits-Remaining** | **Remaining credits for the day.** | Be sure to monitor these values (in **bold**) and adjust your request rate accordingly to avoid hitting rate limits. *** # Errors Maestro follows standard HTTP response codes to indicate the success or failure of API requests: | 2xx | Success | | --- | ------------------------------------------------------------ | | 4xx | Client-side errors, such as missing or incorrect parameters. | | 5xx | Server-side errors with Maestro. | Refer to the [API Reference](/general/platform-overview) for detailed response codes for each endpoint. *** # Overview Source: https://docs.developer.gomaestro.org/midnight/index Midnight Network APIs from Maestro - privacy-focused blockchain platform with zero-knowledge proofs for data-protected decentralized applications. The [Midnight Network](https://midnight.network/) is a next-generation blockchain platform designed to empower **data protection in decentralized applications** (dApps). By integrating **zero-knowledge (ZK) proofs**, Midnight enables developers to create applications that protect user, commercial, and transaction metadata without compromising data ownership or utility. **Key Features:** * **Programmable Data Protection:** Developers can selectively disclose data, ensuring sensitive information remains confidential while maintaining necessary transparency. * **Developer-Friendly Environment:** Midnight offers 'Compact,' a programming language based on TypeScript, facilitating a seamless transition for developers into blockchain and ZK technology. * **Regulatory Compliance:** The platform's architecture supports the creation of applications that adhere to various regulatory requirements, balancing transparency with data protection. * **Enterprise Integration:** Midnight's compliance-focused infrastructure is designed to be as user-friendly as traditional cloud services, making it accessible for enterprise adoption. For more detailed information, you can explore Midnight's official website: [https://midnight.network/](https://midnight.network/) ## Available Services Maestro provides the following services, accessible across multiple Midnight networks: ## Available Networks The service is available on the following Bitcoin networks: | ***Network*** | ***Base URL*** | | ------------- | ----------------------------------------------- | | **Mainnet** | **Coming soon** | | **Testnet** | `https://midnight-testnet.gomaestro-api.org/v0` | The Maestro API is currently versioned at `v0`. When making a query, `v0` must be included in your base URL. # SDKs Source: https://docs.developer.gomaestro.org/midnight/sdks Midnight Network SDKs and client libraries for privacy-focused blockchain development with zero-knowledge proof capabilities. *Coming soon* # Tutorials (Coming Soon) Source: https://docs.developer.gomaestro.org/midnight/tutorials-and-guides/tutorials-coming-soon Upcoming Midnight Network tutorials for privacy-focused blockchain development with zero-knowledge proofs using Maestro's APIs. *Coming soon* # For AI Agents Source: https://docs.developer.gomaestro.org/quick-start/for-ai-agents Quickstart guide for AI agents and developers to use Maestro's SKILL.md for querying Maestro APIs and paying via x402. ✨ **AI Agent Integration** Use the Maestro skill file below to teach your agent how to query Maestro APIs and pay with x402. ## Provide the Maestro skill directly ```text theme={null} https://raw.githubusercontent.com/maestro-org/maestro-skill/refs/heads/main/SKILL.md ``` ## Install the Maestro skill with npx ```bash theme={null} npx skills add maestro-org/maestro-skill ``` ## What This Skill Enables * Agent-friendly instructions for querying Maestro APIs * x402 payment flow guidance for autonomous API access * A reusable setup path for both AI agents and human operators ## Next Step Load the URL in your agent setup, then ask the agent to follow the skill and execute an x402-backed Maestro API query. ## Learn More Learn how Maestro x402 payments work, including the payment challenge flow, wallet sign-in, and credit purchases. # Make Your First API Request Source: https://docs.developer.gomaestro.org/quick-start/make-your-first-api-request **Unsure of what endpoints or service you might need?** Check out our [Endpoint Recommendations](#endpoint-recommendations) section below. Feel free to reach out on [Discord](https://discord.com/invite/ES2rDhBJt3) with questions or further help identifying which endpoints would be a good fit for your specific use-case. **Query Onchain Data with Maestro** In this guide, you will learn to leverage Maestro's [Blockchain Indexer](/blockchain-indexer#) API interface to extract UTxO information given a blockchain address. # Get UTxOs at an Address The following endpoint will return a list of UTxOs controlled by a specific address. Select below the chain you want to query:       ## Endpoint Recommendations ### Bitcoin * [Metaprotocols](#metaprotocols) ### Metaprotocols * [Metaprotocol Activity by Address (Mempool-aware)](/bitcoin/wallet-api/addresses/metaprotocol-activity-by-address) **Inscriptions**: * [Inscription IDs by Collection Symbol](/bitcoin/blockchain-indexer-api/inscriptions/inscription-ids-by-collection-symbol) * [Collection Metadata by Collection Symbol](/bitcoin/blockchain-indexer-api/inscriptions/collection-metadata-by-collection-symbol) * [Inscription Info](/bitcoin/blockchain-indexer-api/inscriptions/inscription-info) * [Activity by Inscription](/bitcoin/blockchain-indexer-api/inscriptions/activity-by-inscription) * [Collection Metadata by Inscription](/bitcoin/blockchain-indexer-api/inscriptions/collection-metadata-by-inscription) * [Content by Inscription ID](/bitcoin/blockchain-indexer-api/inscriptions/content-by-inscription-id) * [Token Metadata by Inscription ID](/bitcoin/blockchain-indexer-api/inscriptions/token-metadata-by-inscription) * [Inscriptions by Address](/bitcoin/blockchain-indexer-api/addresses/inscriptions-by-address) * [Inscription Activity by Address](/bitcoin/blockchain-indexer-api/addresses/inscription-activity-by-address) * [Inscription Activity by Address (Wallet API)](/bitcoin/wallet-api/addresses/inscription-activity-by-address-mempool-aware) **Runes:** * [List Runes](/bitcoin/blockchain-indexer-api/runes/list-runes) * [Runes Info](/bitcoin/blockchain-indexer-api/runes/runes-info) * [Runes by Address](/bitcoin/blockchain-indexer-api/addresses/runes-by-address) * [Runes by Address (Mempool-aware)](/bitcoin/mempool-monitoring-api/addresses/runes-by-address-mempool-aware) * [Rune UTxOs by Address](/bitcoin/blockchain-indexer-api/addresses/rune-utxos-by-address) * [Rune UTxOs by Address (Mempool-aware)](/bitcoin/mempool-monitoring-api/addresses/rune-utxos-by-address-mempool-aware) * [Rune Activity by Address](/bitcoin/blockchain-indexer-api/addresses/rune-activity-by-address) * [Rune Activity by Address (Wallet API)](/bitcoin/wallet-api/addresses/rune-activity-by-address-mempool-aware) * [Activity by Rune](/bitcoin/blockchain-indexer-api/runes/activity-by-rune) * [Holders by Rune](/bitcoin/blockchain-indexer-api/runes/holders-by-rune) * [Holders by Rune (Mempool-aware)](/bitcoin/mempool-monitoring-api/runes/holders-by-rune-mempool-aware) * [UTxOs by Runes](/bitcoin/blockchain-indexer-api/runes/utxos-by-runes) * [Rune OHLC data](/bitcoin/market-price-api/dex/rune-ohlc-data) * [Rune Trades for DEX](/bitcoin/market-price-api/dex/rune-trades-for-dex) * [Rune Registry](/bitcoin/market-price-api/dex/rune-registry) **BRC20:** * [List BRC20](/bitcoin/blockchain-indexer-api/brc20/list-brc20) * [BRC20 Info](/bitcoin/blockchain-indexer-api/brc20/brc20-info) * [BRC20 Holders](/bitcoin/blockchain-indexer-api/brc20/brc20-holders) * [BRC20 by Address](/bitcoin/blockchain-indexer-api/addresses/brc20-by-address) * [BRC20 Transfer Inscriptions by Address](/bitcoin/blockchain-indexer-api/addresses/brc20-transfer-inscriptions-by-address) # Query Bitcoin UTxOs Source: https://docs.developer.gomaestro.org/quick-start/query-bitcoin-utxos Tutorial guide to query Bitcoin UTxO information by address using Maestro's Blockchain Indexer API for wallet and transaction building. **Get UTxO details on Bitcoin** In this guide, you will learn to query Bitcoin and extract UTxO information by leveraging the [UTxOs by Address](/bitcoin/blockchain-indexer-api/address/utxos-by-address) endpoint. ## Prerequisites Before submitting an API request, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) * [Create a Project](/getting-started#) * `Project Name`: \ * `Blockchain`: Bitcoin * `Network`: Testnet ## Steps to Submit an API Request The API allows applications to retrieve a list of all UTxOs that are located at a specific address or controlled by a particular script (script pubkey). In this example, we will use the `Bitcoin Testnet` as the selected network for our project. *** ### 1. Select the Network * Ensure your project is configured to use `Bitcoin Testnet`. *** ### 2. Retrieve Transaction Output * Use the following endpoint to get a list of all UTxOs that reside at the specified Bitcoin address or script pubkey: ``` /addresses/:address/utxos ``` *** ### 3. Specify Path Parameters * Include the required path parameters in your request: | Parameter | Data Type | Description | Required | | :-------- | :-------- | :------------------------------------------------ | :------- | | `address` | String | The Bitcoin address or hex-encoded script pubkey. | yes | *** ### 4. Specify Query Parameters (Optional) * Include **optional** query parameters as needed: | Parameter | Data Type | Description | Required | | :---------------------- | :-------- | :--------------------------------------------------------------------------------------------- | :------- | | `filter_dust` | Boolean | Ignore UTxOs containing less than 100,000 sats. | no | | `filter_dust_threshold` | Integer | Ignore UTxOs containing less than the specified number of satoshis. | no | | `count` | any | Maximum number of results per page. | no | | `order` | any | The order in which the results are sorted (by height at which UTxO was produced). | no | | `from` | int64 | Return only UTxOs created on or **after** a specific height. | no | | `to` | int64 | Return only UTxOs created on or **before** a specific height. | no | | `cursor` | String | Pagination cursor string; use the cursor included in a page of results to fetch the next page. | no | *** ### 5. Send the API Request * Use cURL or your preferred tool to send the API request: For this example, we will use: * `address`: **bc1qh62wlr6cv349jg2ltpfe6dgrjt585gzhlmecdu** * `filter_dust`: **true** * `order`: **desc** qfkWFyfdd8WZIxrXZTCgzRqZyphMA0hk ```sh theme={null} curl -X GET \ -H "api-key: " \ -H "Accept: application/json" \ "https://xbt-testnet.gomaestro-api.org/v0/addresses/tb1qphcdyah2e4vtpxn56hsz3p6kapg90pl4x525kc/utxos?filter_dust=true&order=desc" ``` *** ### 6. Review the Response The API will return a response like the following: ```json JSON theme={null} { "data": [{ "txid": "caff433f77a1458696280be82a9bdb7298260e5d85b81e7a77a762c47bbb89c2", "vout": 1, "address": "tb1qphcdyah2e4vtpxn56hsz3p6kapg90pl4x525kc", "script_pubkey": "00140df0d276eacd58b09a74d5e0288756e8505787f5", "satoshis": "9813110", "confirmations": 186347, "height": 2815507, "runes": [], "inscriptions": [] }, { "txid": "9e46003cb9ae4906a81b4be663c0b3ea5acb8947857bbc20594e9d76144be6ff", "vout": 2, "address": "tb1qphcdyah2e4vtpxn56hsz3p6kapg90pl4x525kc", "script_pubkey": "00140df0d276eacd58b09a74d5e0288756e8505787f5", "satoshis": "980362", "confirmations": 186373, "height": 2815481, "runes": [], "inscriptions": [] }], "last_updated": { "block_hash": "000000000538766058d37b6ca5e2cd6d313aed48f16da2633eceec75a417e4ea", "block_height": 3001854 }, "next_cursor": null } ``` *** ### 7. Understanding the Response | Term | Definition | | :-------------- | :----------------------------------------------------------------------------------------------------- | | `txid` | The transaction ID where the UTXO was created. | | `vout` | The index of the output in the transaction (`txid`). | | `address` | The Bitcoin address that received the UTXO. | | `script_pubkey` | The script public key associated with the UTXO, usually in hex format. | | `satoshis` | The amount of satoshis (smallest unit of Bitcoin) in the UTXO. | | `confirmations` | The number of confirmations that the UTXO has received on the blockchain. | | `height` | The block height at which the UTXO was created. | | `runes` | Additional data related to runes, if any (empty in this response). | | `inscriptions` | Additional data related to inscriptions, if any (empty in this response). | | `last_updated` | Information about the last block update related to this request. | | `block_hash` | The hash of the last block where the UTXOs were updated or retrieved. | | `block_height` | The height of the last block where the UTXOs were updated or retrieved. | | `next_cursor` | A cursor for pagination to fetch the next page of results, if applicable (`null `if no further pages). | *** **Next Steps** Congrats! Now that you've made your API request, let's [Submit Your First Transaction](/submit-your-first-transaction). # Query Cardano UTxOs Source: https://docs.developer.gomaestro.org/quick-start/query-cardano-utxos Tutorial guide to query Cardano UTxO information by address using Maestro's Blockchain Indexer API for wallet and dApp development. **Get UTxO details on Cardano** In this guide, you will learn to query Cardano and extract UTxO information by leveraging the [UTxOs at an Address](/cardano/blockchain-indexer-api/addresses/utxos-at-an-address) endpoint. # Prerequisites Before submitting an API request, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) * [Create a Project](/getting-started#) * `Project Name`: \ * `Blockchain`: Cardano * `Network`: Preprod # Steps to Submit an API Request The API allows applications to retrieve detailed information on UTxOs controlled by a specific address. In this example, we will use the `Cardano Preprod` as the selected network for our project. *** ## 1. Select the Network * Ensure your project is configured to use `Cardano Preprod`**.** *** ## 2. Retrieve Transaction Output * Use the following endpoint to get a list of all UTxOs that reside at the specified Cardano address or script pubkey: ``` /addresses/\:address/utxos ``` *** ## 3. Specify Path Parameters * Include the required path parameters in your request: | Parameter | Data Type | Description | Required | | :-------- | :-------- | :------------------------------------------- | :------- | | `address` | String | The address in Bech32 format to query UTxOs. | yes | *** ## 4. Specify Query Parameters (Optional) * Include **optional** query parameters as needed: | Parameter | Data Type | Description | Required | | :--------------- | :-------- | :---------------------------------------------------------------------------------------------------------------- | :------- | | `asset` | String | Returns only UTxOs containing a specific asset (formatted as concatenation of hex-encoded policy and asset name). | no | | `resolve_datums` | Boolean | If `true`, include corresponding datums for datum hashes in the response. | no | | `with_cbor` | Boolean | If `true`, includes CBOR encodings of transaction outputs in the response. | no | | `count` | Integer | Maximum number of results to return per page. | no | | `order` | String | Sort order for results (`asc` for ascending or `desc` for descending). | no | | `from` | int64 | Returns only UTxOs created on or **after** a specific slot number. | no | | `to` | int64 | Returns only UTxOs created on or **before** a specific slot number. | no | | `cursor` | String | Pagination cursor string to fetch the next page of results. | | *** ## 5. Send the API Request * Use cURL or your preferred tool to send the API request: For this example, we will use: * `address`: addr\_test1wzdtu0djc76qyqak9cj239udezj2544nyk3ksmfqvaksv7c9xanpg * `order`: asc ```sh Curl theme={null} curl -L -X GET \ -H "Accept: application/json" \ -H "api-key: " \ 'https://preprod.gomaestro-api.org/v1/addresses/addr_test1wzdtu0djc76qyqak9cj239udezj2544nyk3ksmfqvaksv7c9xanpg/utxos?order=asc' ``` *** ## 6. Review the Response The API will return a response like the following: ```json JSON theme={null} { "data": [ { "tx_hash": "6c1bbfff3b22f189b325fee3f51eceacf13090aae895e912c56ec615efacb3e0", "index": 0, "slot": 57115432, "assets": [ { "unit": "lovelace", "amount": 1224040 }, { "unit": "0c64d6d0371d11185aae649cf3a169040e94214137137b531ebb16c2446a65644f7261636c654e4654", "amount": 1 } ], "address": "addr_test1wzdtu0djc76qyqak9cj239udezj2544nyk3ksmfqvaksv7c9xanpg", "datum": { "type": "hash", "hash": "065191b95752a6ecca365cfd19a68f8968215596fbfc94f1fbc8ab0053d9110f", "bytes": null, "json": null }, "reference_script": null, "txout_cbor": null } ], "last_updated": { "timestamp": "2024-09-11 23:22:19", "block_hash": "053a9d8a812db204a32ddbb90834128ec8f94a3de2c990caa413dd55ae30d5c1", "block_slot": 70413739 }, "next_cursor": null } ``` *** ## 7. Understanding the Response | Term | Definition | | :------------------------ | :------------------------------------------------------------------------------- | | `tx_hash` | The unique identifier of the transaction that created this UTXO. | | `index` | The output index of this UTXO within the transaction. | | `slot` | The slot number at which this UTXO was created. | | `assets` | A list of assets contained in this UTXO, including their unit (type) and amount. | | `address` | The address associated with this UTXO. | | `datum.type` | The type of datum associated with this UTXO (e.g., "hash"). | | `datum.hash` | The hash of the datum associated with this UTXO. | | `datum.bytes` | The byte representation of the datum (if available), otherwise `null`. | | `datum.json` | The JSON representation of the datum (if available), otherwise `null`. | | `reference_script` | A reference to a script associated with this UTXO, if any, otherwise `null`. | | `txout_cbor` | The CBOR encoding of the transaction output, if available, otherwise `null`. | | `last_updated.timestamp` | The timestamp indicating when the data was last updated. | | `last_updated.block_hash` | The hash of the block where the UTXO data was last updated. | | `last_updated.block_slot` | The slot number of the block where the UTXO data was last updated. | | `next_cursor` | A pointer to the next set of data if there are more results; otherwise `null`. | **Next Steps** Congrats! Now that you've made your API request, let's [Submit Your First Transaction](/submit-your-first-transaction). # Query Dogecoin UTxOs Source: https://docs.developer.gomaestro.org/quick-start/query-dogecoin-utxos Tutorial guide to query Dogecoin UTxO information by address using Maestro's Blockchain Indexer API for wallet management and transactions. **Get UTxO details on Dogecoin** In this guide, you will learn to query Dogecoin and extract UTxO information by leveraging the [UTxOs by Address](/dogecoin/blockchain-indexer-api/addresses/utxos-by-address) endpoint. ## Prerequisites Before submitting an API request, ensure you have completed the following: * [Create an Account](https://dashboard.gomaestro.org) * [Create a Project](/getting-started) * `Project Name`: \ * `Blockchain`: Doge * `Network`: Mainnet *** ## Steps to Submit an API Request The API allows applications to list all UTxOs located at a specific address or controlled by a particular script (script pubkey). In this example, we will use the `Doge Mainnet` as the selected network for our project. *** ### 1. Select the Network * Ensure your project is configured to use `Doge Mainnet.` *** ### 2. Retrieve Transaction Output * Use the following endpoint to get a list of all UTxOs that reside at the specified Doge address or script pubkey: ``` /addresses/\:address/utxos ``` *** ### 3. Specify Path Parameters * Include the required path parameters in your request: | Parameter | Data Type | Description | Required | | :-------- | :-------- | :--------------------------------------------- | :------- | | `address` | String | The Doge address or hex-encoded script pubkey. | yes | *** ### 4. Specify Query Parameters (Optional) * Include **optional** query parameters as needed: | Parameter | Data Type | Description | Required | | :---------------------- | :-------- | :--------------------------------------------------------------------------------------------- | :------- | | `filter_dust` | Boolean | Ignore UTxOs containing less than 100,000 sats. | no | | `filter_dust_threshold` | Integer | Ignore UTxOs containing less than the specified number of satoshis. | no | | `count` | any | Maximum number of results per page. | no | | `order` | any | The order in which the results are sorted (by height at which UTxO was produced). | no | | `from` | int64 | Return only UTxOs created on or **after** a specific height. | no | | `to` | int64 | Return only UTxOs created on or **before** a specific height. | no | | `cursor` | String | Pagination cursor string; use the cursor included in a page of results to fetch the next page. | no | *** ### 5. Send the API Request * Use cURL or your preferred tool to send the API request: For this example, we will use: * `address`: **D9Xni5mwofyjvtzg4Cq7aE5vsDJA3zXQti** * `count`: **3** * `order`: **asc** ```sh Curl theme={null} curl -L -X GET \ -H "Accept: application/json" \ -H "api-key: " \ 'https://xdg-mainnet.gomaestro-api.org/v0/addresses/D9Xni5mwofyjvtzg4Cq7aE5vsDJA3zXQti/utxos?count=3&order=asc' ``` *** ### 6. Review the Response The API will return a response like the following: ```json JSON theme={null} { "data": [{ "txid": "9921cf6256c0794aabdbd830ecd2cc75526ad3728a0a31ec6eb1cea816162cd8", "vout": 0, "address": "D9Xni5mwofyjvtzg4Cq7aE5vsDJA3zXQti", "script_pubkey": "76a914302b2f9e99b0f1256ea229f1399ee2d38044dce488ac", "satoshis": "100000", "confirmations": 247204, "height": 5144691, "dunes": [], "inscriptions": [{ "offset": 0, "inscription_id": "676bd73b326dc73de502fa78f7ac4994a8054d9df1311e34c5d81f9182b51015i0" }] }, { "txid": "9921cf6256c0794aabdbd830ecd2cc75526ad3728a0a31ec6eb1cea816162cd8", "vout": 1, "address": "D9Xni5mwofyjvtzg4Cq7aE5vsDJA3zXQti", "script_pubkey": "76a914302b2f9e99b0f1256ea229f1399ee2d38044dce488ac", "satoshis": "100000", "confirmations": 247204, "height": 5144691, "dunes": [], "inscriptions": [{ "offset": 0, "inscription_id": "25025072dac60ec88cfe353d2d39448b33b702ce5799383493be797f00e97bf7i0" }] }, { "txid": "9921cf6256c0794aabdbd830ecd2cc75526ad3728a0a31ec6eb1cea816162cd8", "vout": 2, "address": "D9Xni5mwofyjvtzg4Cq7aE5vsDJA3zXQti", "script_pubkey": "76a914302b2f9e99b0f1256ea229f1399ee2d38044dce488ac", "satoshis": "100000", "confirmations": 247204, "height": 5144691, "dunes": [], "inscriptions": [{ "offset": 0, "inscription_id": "e0a9abc190a19e3287874c4244d2f8b20dbe437922c6c9774606d4f71e7bb2d1i0" }] }], "last_updated": { "block_hash": "a8e23d570387e97591545f98fd1572d4f8787ab180c5c282b76de1949c06c780", "block_height": 5391895 }, "next_cursor": "AAAAAABOgHNg2CwWFqjOsW7sMQqKctNqUnXM0uww2NurSnnAVmLPIZlgAAAAAg" } ``` *** ### 7. Understanding the Response | Term | Definition | | :-------------- | :----------------------------------------------------------------------------------------------------- | | `txid` | The transaction ID where the UTXO was created. | | `vout` | The index of the output in the transaction (`txid`). | | `address` | The Bitcoin address that received the UTXO. | | `script_pubkey` | The script public key associated with the UTXO, usually in hex format. | | `satoshis` | The amount of satoshis (smallest unit of Bitcoin) in the UTXO. | | `confirmations` | The number of confirmations that the UTXO has received on the blockchain. | | `height` | The block height at which the UTXO was created. | | `runes` | Additional data related to runes, if any (empty in this response). | | `inscriptions` | Additional data related to inscriptions, if any (empty in this response). | | `last_updated` | Information about the last block update related to this request. | | `block_hash` | The hash of the last block where the UTXOs were updated or retrieved. | | `block_height` | The height of the last block where the UTXOs were updated or retrieved. | | `next_cursor` | A cursor for pagination to fetch the next page of results, if applicable (`null `if no further pages). | ## Next Steps Congrats! Now that you've made your API request, let's [Submit Your First Transaction](/submit-your-first-transaction). # Submit Bitcoin transaction Source: https://docs.developer.gomaestro.org/quick-start/submit-bitcoin-transaction Complete guide to creating, signing, and broadcasting Bitcoin transactions using bitcoin-cli and Maestro APIs on Testnet4. **Creating a Bitcoin Transaction Using bitcoin-cli and Maestro APIs** This guide covers the steps to create a Bitcoin transaction using bitcoin-cli on Testnet4 Blockchain and Maestro APIs. We will generate a testnet4 Bitcoin address, transfer funds to our address, create a raw transaction, calculate fees using Maestro API, sign the transaction, and broadcast it to the Bitcoin network via Maestro API. ## Prerequisites * A running Bitcoin Core node with bitcoin-cli access. See Setup Bitcoin Node guide in order to run a testnet4 bitcoin node and install bitcoin-cli. * Maestro API credentials for retrieving transaction fees and broadcasting transactions. See Getting Started guide in order to create a free Maestro Account. ## Submit a Bitcoin Transaction To receive Bitcoin, First, you will need to create a new wallet and then generate a new address using bitcoin-cli. Open CMD on Windows or Terminal on Linux and navigate to the bitcoin daemon folder and run the commands below: ```bash theme={null} # Let's create a new Bitcoin Wallet bitcoin-cli testnet4 createwallet "MaestroWallet1" # Now you can create a new address that will be associated with your wallet bitcoin-cli testnet4 getnewaddress "Address1" mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM ``` The first command returns a newly generated Bitcoin wallet. The second command creates a new address in that wallet which you can use as the recipient or sender in transactions. To create a Bitcoin transaction, our wallet must have funds stored as UTXOs (Unspent Transaction Outputs). We'll receive Test Bitcoin (tBTC) from the Testnet4 Faucet to Address1. This test bitcoin (not real BTC) will be used as UTXO to send funds to another address on the Testnet4 blockchain. Go to CoinFaucet website and enter your bitcoin testnet4 address in order to receive test bitcoin. Maestro get tBTC to Bitcoin Testnet Address The Coin Faucet will send Test Bitcoin (tBTC) to our Address1 testnet4 wallet, generating a transaction (tx) that will be recorded on the Bitcoin Testnet4 blockchain. `abe3318569c84d229dd8aea53ca8e7c9dfe725d2f866ee60a8926cbfba4ddc0c` **Maestro Bitcoin Explorer** You can lookup the transaction by visiting explorer.gomaestro.org and entering the transaction id (txid). [https://explorer.gomaestro.org/bitcoin/testnet/transactions/abe3318569c84d229dd8aea53ca8e7c9dfe725d2f866ee60a8926cbfba4ddc0c](https://explorer.gomaestro.org/bitcoin/testnet/transactions/abe3318569c84d229dd8aea53ca8e7c9dfe725d2f866ee60a8926cbfba4ddc0c) In Step 2, we received 0.0001776 tBTC. The Bitcoin Faucet generated a transaction with two UTXO outputs. One of these UTXOs was assigned to our address as an output of that transaction, making it available as an input for future transactions. Refer to the screenshot below. In order to get all Unspent Transaction Outputs (UTXOs) in your address use Maestro's API. ```bash theme={null} curl --location 'https://xbt-testnet.gomaestro-api.org/v0/addresses/mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM/utxos?api-key={YOUR_MAESTRO_API_KEY}' ``` Below is the output for the Maestro API request UTXOs by Address Maestro API get Unspent UTxOs by Address **In the given UTXO (Unspent Transaction Output) data:** **txid (Transaction ID)**: A unique identifier for the Bitcoin transaction that created this UTXO. `"txid": "a4b80f03ff283418825ef8b30e4d2668fc8f61295f6dd2f95ac46074f704b1fb"` **vout (Output Index)**: The index of this specific output in the transaction. A Bitcoin transaction can have multiple outputs, and vout specifies which output is being referenced. `"vout" : 1` means this is the second output (indexes start at 0). Together, `txid `and `vout `uniquely identify a UTXO, which can be spent in a future transaction. **Each Transaction Creates Outputs** Each Bitcoin transaction can create multiple outputs. The **vout** index refers to the specific output within that transaction. * `"txid": "a4b80f03ff28..."` has an output at vout: 1. * `"txid": "0a35bebbd903..."` also has an output at vout: 1. These are separate transactions, meaning each `txid `corresponds to a different transaction, but both have at least two outputs (one at index 0 and another at index 1). **In our case each UTXO Comes from a Different Transaction** Even though both UTXOs belong to the same address (`mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM`), they originate from separate transactions, making their **combination of txid and vout unique**. in the screenshot below we can witness that `"txid": "0a35bebbd903..." `has two outputs and one of them, with the `vout:1` for that transaction, was an input UTXO to our address. Similarly, the transaction with `txid: "0a35bebbd903..." ` has two outputs. One of them, with index `vout:1`, became an input UTXO for our address when funds were spent in a new transaction. The remaining change from the transaction was sent back to our address. Refer to the screenshot below. **Why This Matters** When spending a UTXO in a new transaction, you must reference its **exact** `txid `and `vout`. Since each `txid `is different, these are **two separate UTXOs**, even though both have` vout: 1`. This returns a list of UTXOs available for spending. Identify the UTXO’s txid and vout to use in the next step. Let's generate a second address on Bitcoin Testnet Blockchain and create UTXO to send tBTC from Address1 to Address2 ```bash theme={null} bitcoin-cli -testnet4 getnewaddress "Address2" mxVhXyQgXYaJ1ZfuWBa7QGUyH97obnYnkA ``` * Maestro Generate Bitcoin Address UTxO * Let's create a Raw transaction using bitcoin-cli command Use the UTXO details to create a raw transaction. Replace placeholders with actual values: ```bash theme={null} bitcoin-cli createrawtransaction '\[\{"txid":"UTXO\_TXID","vout": 1..n}]' '\{"RECIPIENT\_ADDRESS"\:amount,"CHANGE\_ADDRESS"\:amount}' ``` * `UTXO_TXID`: The transaction ID of the unspent output. * `UTXO_VOUT`: The output index of the UTXO. * `RECIPIENT_ADDRESS`: The address receiving Bitcoin. * `AMOUNT`: The amount (in BTC) to send. * `CHANGE_ADDRESS`: Your change address for receiving remaining funds. * `CHANGE_AMOUNT`: The remaining balance after subtracting the transaction fee. This command constructs a raw Bitcoin transaction, using a specific UTXO as an input and defining two output addresses with specified amounts. The generated raw transaction must be **signed** and **broadcasted** to the network to take effect. ```bash theme={null} bitcoin-cli createrawtransaction '[\{"txid":"0a35bebbd903c6b0963eaeae5abcbe9ab57d80aafb3b24ccf1e6073672abde73", "vout":1 }]' '\{"mxVhXyQgXYaJ1ZfuWBa7QGUyH97obnYnkA":0.00015206, "mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM":0.00001}' ``` * `createrawtransaction` - Creates a raw Bitcoin transaction without signing or broadcasting it. * First argument `[\{"txid":"...","vout":1 }]` – Specifies the transaction input: * txid is the transaction ID from which the UTXO is being spent. * vout specifies the output index (1 in this case) from the previous transaction, meaning we are using the second output as an input. * Second argument `{"mxVhXyQgXYaJ1ZfuWBa7QGUyH97obnYnkA":0.00015206, "mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM":0.00001}`– Defines the outputs: * Sends 0.00015206 tBTC to address `mxVhXyQgXYaJ1ZfuWBa7QGUyH97obnYnkA`. * Sends 0.00001 tBTC to address `mwB5SqzYMFQj1BQxPTTL8W2brMr6ehFEEM`. * Maestro Create a Bitcoin Raw Transaction Maestro has two APIs that you can use to calculate estimated fees and the minimum, median, and maximum fee rates for a transaction to be verified on a block. Use Maestro's API to get the recommended fee rate: ```bash theme={null} curl --location 'https://xbt-testnet.gomaestro-api.org/v0/rpc/transaction/estimatefee/6' \ --header 'api-key: \{MAESTRO\_API\_KEY}' ``` This API returns an estimate fee rate for 6 transaction verifications. Select a fee rate and adjust the `CHANGE_AMOUNT `accordingly. See Mempool Block Fee Rates Maestro API Documentation Use Maestro Mempool API to calculate min, median and max block fee rates per tx [https://xbt-testnet.gomaestro-api.org/v0/mempool/fee\\\_rates](https://xbt-testnet.gomaestro-api.org/v0/mempool/fee\\_rates) ```bash theme={null} curl --location 'https://xbt-testnet.gomaestro-api.org/v0/mempool/fee_rates' \ --header 'api-key: \{YOUR_MAESTRO_ENTERPRISE_API_KEY\}' ``` This API returns fee rates for different speeds (low, medium, high). Select a fee rate and adjust the `CHANGE_AMOUNT `accordingly. See Mempool Block Fee Rates Maestro API Documentation. This section contains information related to the block and its fee estimates. ```bash theme={null} "data": \[] ``` * `block_height`: The height (or index) of the block on the blockchain. In this case, it's block number 70608. * `sats_per_vb` (Satoshis per virtual byte): This shows the estimated fee rate in (sats/vbyte), which is used for calculating transaction fees. ```bash theme={null} Indexer_info": {} ``` * `chain_tip`: The latest block in the blockchain that is known by the indexer. It provides the block hash and the block height of the latest confirmed block. * `block_hash`: The hash of the latest block in the chain. * `block_height`: The height of the latest block in the blockchain. * `mempool_timestamp`: The timestamp of when the data related to the mempool was recorded. The mempool holds unconfirmed transactions waiting to be included in a block. * `estimated_blocks`: The predicted next block and its fee structure. ```bash theme={null} bitcoin-cli signrawtransactionwithwallet "RAW_TX_HEX" ``` This command returns a signed transaction `(hex)` ready for broadcasting. To check if the transaction is valid before broadcasting run the command below: ```bash theme={null} bitcoin-cli testmempoolaccept '\["SIGNED\_TX\_HEX"\]' ``` If the command is valid and you provide a valid signed transaction (`SIGNED_TX_HEX`), it will return a JSON response where you can find the key-value pair - `"allowed":true` indicating whether the transaction would be accepted into the mempool or not. Use Maestro’s API to push the transaction to the Bitcoin network: ```bash theme={null} curl --location 'https\://xbt-testnet.gomaestro-api.org/v0/rpc/transaction/submit' \ --header 'Content-Type: text/plain' \ --header 'api-key: \{YOUR\_MAESTRO\_API\_KEY}' \ --data '"02000000010a336d7554da8b351850e57712379081364520309bd0fdb0c410ca4e3f8161c5010000006a47304402203c4fd342c1e8a8047ae1f5cd3c91bfed07328bc22d456f3db24a23c1769f51c40220523bed0042446df1830b44fe4ded71c6085a6e0bc389b2635abb3c4b385eff6f012102bfdbc8b5243526c89c31da25b9669121a7c98a4ba44a5c7d3a79fb0d58ea5e7bfdffffff02a03d0000000000001976a9140a5f580e3773f79eb266c9553c4f8187675bec9b88ace8030000000000001976a914861ba3640bb054ab203c13222fda0c2b58c3471788ac00000000"' ``` If successful, the response includes the transaction ID. Use Maestro Bitcoin Explorer to monitor the Transaction Use Mempool UTXO by Address API in order to monitor the broadcasted transaction. ```bash theme={null} curl --location 'https://xbt-testnet.gomaestro-api.org/v0/mempool/addresses/mxVhXyQgXYaJ1ZfuWBa7QGUyH97obnYnkA/utxos' \ --header 'api-key: \{YOUR_MAESTRO_ENTERPRISE_API_KEY}' ``` To see the transaction on the testnet4 blockchain use mempool.space/testnet4 [Transactions by Address](/bitcoin/blockchain-indexer-api/addresses/transactions-by-address) ```bash theme={null} curl --location 'https://xbt-testnet.gomaestro-api.org/v0/addresses/mgToGb1sxHdBiPbHE5TGMQyuck1DnejxQa/txs' \ --header 'api-key: \{YOUR_MAESTRO_API_KEY}' ``` [Transaction Info](/bitcoin/blockchain-indexer-api/transactions/transaction-info) Congrats! you made it to this point and now you know how to create a Bitcoin Transaction using Maestro APIs. Next Topic -> How to Create a Cardano Transaction # Submit Cardano transaction Source: https://docs.developer.gomaestro.org/quick-start/submit-cardano-transaction Tutorial guide for submitting signed Cardano transactions to the network using Maestro's transaction submission endpoints. *Coming soon* # Submit Doge transaction Source: https://docs.developer.gomaestro.org/quick-start/submit-doge-transaction Tutorial guide for creating, signing, and broadcasting Dogecoin transactions using Maestro's Dogecoin APIs and transaction submission endpoints. *Coming soon* # Submit Your First Transaction Source: https://docs.developer.gomaestro.org/quick-start/submit-your-first-transaction       **NEXT STEPS** [Bitcoin Documentation](/bitcoin)