Hiro Mining API

Endpoints related to Stacks block production and mining.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hiro-mining-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

hiro-mining-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Signer Metrics Accounts Mining API
  description: Welcome to the API reference overview for the Signer Metrics API.
  version: 1.0.3
servers:
- url: https://api.hiro.so/
  description: mainnet
- url: https://api.testnet.hiro.so/
  description: testnet
tags:
- name: Mining
  description: Endpoints related to Stacks block production and mining.
paths:
  /v3/block_proposal:
    post:
      summary: Validate a proposed Stacks block
      tags:
      - Mining
      operationId: postBlockProposal
      description: 'Used by stackers to validate a proposed Stacks block from a miner.

        **This API endpoint requires a basic Authorization header.**

        '
      security:
      - rpcAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - block
              - chain_id
              properties:
                block:
                  type: string
                  minLength: 400
                  pattern: ^([0-9a-fA-F]{2})+$
                  description: Hex-encoded block data (must be valid SIP-003 serialized block, typically 200+ bytes)
                chain_id:
                  type: integer
                  minimum: 0
                  description: Chain ID for the block
            examples:
              block-proposal-request:
                summary: Block proposal request
                value:
                  block: 00000000000000001f00000000000927c08fb5ae5bf80e39e4168f6a3fddb0407a069d21ee68465e6856393254d2a66194f44bb01070666d5effcfb2436e209a75878fe80a04b4258a8cd34ab97c38a8dde331a2a509dd7e4b90590726866172cc138c18e80567737667f55d3f9817ce4714c91d1adfd36101141829dc0b5ea0c4944668c0005ddb6f9e2718f60014f21932a42a36ffaf58e88e77b217b2af366c15dd59e6b136ca773729832dcfc5875ec0830d04012dd5a4fa77a196646ea2b356289116fd02558c034b62d63f8a65bdd20d7ffc3fec6c266cd974be776a9e92759b90f288dcc2525b6b6bd5622c5f02e0922440e9ad1095c19b4467fd94566caa9755669d8e0000000180800000000400f64081ae6209dce9245753a4f764d6f168aae1af00000000000000000000000000000064000041dbcc7391991c1a18371eb49b879240247a3ec7f281328f53976c1218ffd65421dbb101e59370e2c972b29f48dc674b2de5e1b65acbd41d5d2689124d42c16c01010000000000051a346048df62be3a52bb6236e11394e8600229e27b000000000000271000000000000000000000000000000000000000000000000000000000000000000000
                  chain_id: 2147483648
      responses:
        '202':
          description: 'Block proposal has been accepted for processing.

            The result will be returned via the event observer.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockProposalResponse'
              examples:
                block-proposal-accepted:
                  $ref: ./components/examples/post-block-proposal-response.example.json
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockProposalResponse'
              example:
                result: Error
                message: Bad Request.
            text/plain:
              schema:
                type: string
              example: Bad request.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          description: 'There is an ongoing proposal validation being processed, the new

            request cannot be accepted until the prior request has been processed.

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockProposalResponse'
              examples:
                too-many-requests:
                  $ref: ./components/examples/post-block-proposal-response.429.example.json
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v2/blocks/upload/{consensus_hash}:
    post:
      summary: Upload a Stacks block
      tags:
      - Mining
      security: []
      operationId: uploadLegacyBlock
      description: 'Upload a Stacks block to the node for processing.

        The block must be in binary format and associated with the given consensus hash.

        '
      parameters:
      - name: consensus_hash
        in: path
        required: true
        description: Consensus hash (40 hex characters)
        schema:
          type: string
          pattern: ^[0-9a-f]{40}$
      requestBody:
        required: true
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
              minLength: 1
              description: Binary-encoded Stacks block
      responses:
        '200':
          description: Block upload result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BlockUploadResponse'
              examples:
                block-upload-success:
                  summary: Block upload accepted
                  value:
                    stacks_block_id: abc123...
                    accepted: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  responses:
    NotFound:
      description: Not found
      content:
        text/plain:
          schema:
            type: string
          example: Not found
    Unauthorized:
      description: Unauthorized. Invalid or missing authentication token.
      content:
        text/plain:
          schema:
            type: string
          example: Unauthorized
    InternalServerError:
      description: Internal Server Error
      content:
        text/plain:
          schema:
            type: string
          example: Internal Server Error
    BadRequest:
      description: Bad request
      content:
        text/plain:
          schema:
            type: string
          example: Bad request
  schemas:
    BlockProposalResponse:
      $ref: ./components/schemas/block-proposal.schema.yaml
    BlockUploadResponse:
      $ref: ./components/schemas/block-upload-response.schema.yaml
externalDocs:
  url: https://github.com/hirosystems/signer-metrics-api
  description: Source Repository