Ava Labs Chain Metrics API

Get network level staking and usage metrics.

Operations 6

GET /v2/chains/{chainId}/metrics/{metric} Get metrics for EVM chains #
GET /v2/chains/{chainId}/rollingWindowMetrics/{metric} Get rolling window metrics for EVM chains #
GET /v2/chains/{chainId}/teleporterMetrics/{metric} Get teleporter metrics by chain #
GET /v2/icm/timeseries Get ICM timeseries metrics #
GET /v2/icm/summary Get ICM summary metrics #
GET /v2/networks/{network}/metrics/{metric} Get staking metrics for a given subnet #

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/ava-labs-chain-metrics-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

ava-labs-chain-metrics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Chain Metrics API
  description: 'The Metrics API provides metrics and analytics of on-chain activity. The API is in Beta and may be subject to change.


    If you have feedback or feature requests for the API, please submit them here. Bug reports can be submitted here, and any potential security issues can be reported here.'
  version: 1.0.0
  contact: {}
servers:
- url: https://metrics.avax.network
tags:
- name: Chain Metrics
  description: Get network level staking and usage metrics.
paths:
  /v2/chains/{chainId}/metrics/{metric}:
    get:
      operationId: getEvmChainMetrics
      x-execution-weight: small
      x-speakeasy-group: metrics.chains
      x-speakeasy-name-override: getMetrics
      x-speakeasy-pagination:
        type: cursor
        inputs:
        - name: pageToken
          in: parameters
          type: cursor
        outputs:
          nextCursor: $.nextPageToken
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n  chainId: \"43114\",\n});\n\nasync function run() {\n  const result = await avalanche.metrics.chains.getMetrics({\n    metric: \"activeAddresses\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n    timeInterval: \"day\",\n    pageSize: 10,\n  });\n\n  for await (const page of result) {\n    console.log(page);\n  }\n}\n\nrun();"
      summary: Get metrics for EVM chains
      description: EVM chain metrics are available for all Avalanche L1s on _Mainnet_ and _Fuji_ (testnet).
      parameters:
      - name: metric
        required: true
        in: path
        description: Which chain level metric to fetch.
        example: activeAddresses
        schema:
          $ref: '#/components/schemas/ChainMetric'
      - name: startTimestamp
        required: false
        in: query
        description: Query param for retrieving items after a specific timestamp.
        example: 1689541049
        schema:
          minimum: 0
          type: integer
      - name: endTimestamp
        required: false
        in: query
        description: Query param for retrieving items before a specific timestamp.
        example: 1689800249
        schema:
          minimum: 0
          type: integer
      - name: timeInterval
        required: false
        in: query
        description: "Time interval granularity for data aggregation. Metrics\n    prefixed with \"cumulative\", \"max\", or \"avg\" only support timeInterval equal\n    to \"day\"."
        example: day
        schema:
          $ref: '#/components/schemas/TimeIntervalGranularity'
      - name: pageToken
        required: false
        in: query
        description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 2160.
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 2160
        example: '10'
      - name: chainId
        required: true
        in: path
        description: A supported EVM chain ID or one of "total", "mainnet", or "testnet". Use the `/chains` endpoint to get a list of supported chain IDs.
        example: '43114'
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
  /v2/chains/{chainId}/rollingWindowMetrics/{metric}:
    get:
      operationId: getEvmChainRollingWindowMetrics
      x-execution-weight: small
      x-speakeasy-group: metrics.chains
      x-speakeasy-name-override: getRollingWindowMetrics
      summary: Get rolling window metrics for EVM chains
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n  chainId: \"43114\",\n});\n\nasync function run() {\n  const result = await avalanche.metrics.chains.getRollingWindowMetrics({\n    metric: \"txCount\",\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: Gets the rolling window metrics for an EVM chain for the last hour, day, week, month, 90 days, year, and all time. Active addresses/active senders only support last hour, day, and week.
      parameters:
      - name: metric
        required: true
        in: path
        description: Which chain level metric to fetch for the rolling window.
        example: txCount
        schema:
          $ref: '#/components/schemas/ChainRollingWindowMetric'
      - name: chainId
        required: true
        in: path
        description: A supported EVM chain ID or one of "total", "mainnet", or "testnet". Use the `/chains` endpoint to get a list of supported chain IDs.
        example: '43114'
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RollingWindowMetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
  /v2/chains/{chainId}/teleporterMetrics/{metric}:
    get:
      operationId: getTeleporterMetricsByChain
      x-execution-weight: small
      x-speakeasy-group: metrics.chains
      x-speakeasy-name-override: getTeleporterMetrics
      description: Gets teleporter metrics for an EVM chain.
      deprecated: true
      parameters:
      - name: metric
        required: true
        in: path
        description: Which chain level teleporter metric to fetch.
        example: teleporterSourceTxnCount
        schema:
          $ref: '#/components/schemas/TeleporterMetric'
      - name: chainId
        required: true
        in: path
        description: A supported EVM chain ID or one of "total", "mainnet", or "testnet". Use the `/chains` endpoint to get a list of supported chain IDs.
        example: '43114'
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TeleporterChainMetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
      summary: Get teleporter metrics by chain
      x-summary-source: derived
  /v2/icm/timeseries:
    get:
      operationId: getICMTimeseries
      x-execution-weight: small
      x-speakeasy-group: metrics.chains
      x-speakeasy-name-override: getICMTimeseries
      summary: Get ICM timeseries metrics
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche();\n\nasync function run() {\n  const result = await avalanche.metrics.chains.getICMTimeseries({\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n    timeInterval: \"day\",\n    pageSize: 10,\n    groupBy: \"destBlockchainId\",\n    network: \"mainnet\",\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: 'Get historical ICM message counts with flexible grouping.


        Use filters (`srcBlockchainId`, `destBlockchainId`, `network`) to select data, and the `groupBy` parameter for aggregation level.


        ### Examples:


        - **Specific pair**: `?srcBlockchainId=...&destBlockchainId=...`


        - **From one source (aggregated)**: `?srcBlockchainId=...`


        - **From one source (by destination)**: `?srcBlockchainId=...&groupBy=destBlockchainId`


        - **To one destination (aggregated)**: `?destBlockchainId=...`


        - **To one destination (by source)**: `?destBlockchainId=...&groupBy=srcBlockchainId`


        - **Network total**: `?network=mainnet`


        - **Network breakdown**: `?network=mainnet&groupBy=srcBlockchainId,destBlockchainId`.'
      parameters:
      - name: startTimestamp
        required: false
        in: query
        description: Query param for retrieving items after a specific timestamp.
        example: 1689541049
        schema:
          minimum: 0
          type: integer
      - name: endTimestamp
        required: false
        in: query
        description: Query param for retrieving items before a specific timestamp.
        example: 1689800249
        schema:
          minimum: 0
          type: integer
      - name: srcBlockchainId
        required: false
        in: query
        description: Query param for retrieving items for a specific source (initiating) blockchain id.
        schema:
          type: string
      - name: destBlockchainId
        required: false
        in: query
        description: Query param for retrieving items for a specific destination (receiving) blockchain id.
        schema:
          type: string
      - name: timeInterval
        required: false
        in: query
        description: "Time interval granularity for data aggregation. Metrics\n    prefixed with \"cumulative\", \"max\", or \"avg\" only support timeInterval equal\n    to \"day\"."
        example: day
        schema:
          $ref: '#/components/schemas/TimeIntervalGranularity'
      - name: pageToken
        required: false
        in: query
        description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 2160.
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 2160
        example: '10'
      - name: groupBy
        required: false
        in: query
        description: Group results by srcBlockchainId, destBlockchainId, or both (comma-separated)
        example: destBlockchainId
        schema:
          enum:
          - srcBlockchainId
          - destBlockchainId
          - srcBlockchainId,destBlockchainId
          type: string
      - name: network
        required: false
        in: query
        description: Either mainnet or testnet/fuji.
        example: mainnet
        schema:
          $ref: '#/components/schemas/Network'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ICMMetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
  /v2/icm/summary:
    get:
      operationId: getICMSummary
      x-execution-weight: small
      x-speakeasy-group: metrics.chains
      x-speakeasy-name-override: getICMSummary
      summary: Get ICM summary metrics
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche();\n\nasync function run() {\n  const result = await avalanche.metrics.chains.getICMSummary({\n    groupBy: \"destBlockchainId\",\n    network: \"mainnet\",\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: 'Get rolling window ICM message counts (last hour, day, month, 90 days, year, all time).


        Use filters (`srcBlockchainId`, `destBlockchainId`, `network`) to select data, and the `groupBy` parameter for aggregation level.


        ### Examples:


        - **Specific pair**: `?srcBlockchainId=...&destBlockchainId=...`


        - **From one source (aggregated)**: `?srcBlockchainId=...`


        - **From one source (by destination)**: `?srcBlockchainId=...&groupBy=destBlockchainId`


        - **To one destination (aggregated)**: `?destBlockchainId=...`


        - **To one destination (by source)**: `?destBlockchainId=...&groupBy=srcBlockchainId`


        - **Network total**: `?network=mainnet`


        - **Network breakdown**: `?network=mainnet&groupBy=srcBlockchainId,destBlockchainId`.'
      parameters:
      - name: srcBlockchainId
        required: false
        in: query
        description: Query param for retrieving items for a specific source (initiating) blockchain id.
        schema:
          type: string
      - name: destBlockchainId
        required: false
        in: query
        description: Query param for retrieving items for a specific destination (receiving) blockchain id.
        schema:
          type: string
      - name: groupBy
        required: false
        in: query
        description: Group results by srcBlockchainId, destBlockchainId, or both (comma-separated)
        example: destBlockchainId
        schema:
          enum:
          - srcBlockchainId
          - destBlockchainId
          - srcBlockchainId,destBlockchainId
          type: string
      - name: network
        required: false
        in: query
        description: Either mainnet or testnet/fuji.
        example: mainnet
        schema:
          $ref: '#/components/schemas/Network'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ICMRollingWindowMetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
  /v2/networks/{network}/metrics/{metric}:
    get:
      operationId: getStakingMetrics
      x-execution-weight: small
      x-speakeasy-group: metrics.networks
      x-speakeasy-pagination:
        type: cursor
        inputs:
        - name: pageToken
          in: parameters
          type: cursor
        outputs:
          nextCursor: $.nextPageToken
      x-codeSamples:
      - lang: javascript
        label: JavaScript
        source: "import { Avalanche } from \"@avalanche-sdk/chainkit\";\n\nconst avalanche = new Avalanche({\n  network: \"mainnet\",\n});\n\nasync function run() {\n  const result = await avalanche.metrics.networks.getStakingMetrics({\n    metric: \"validatorCount\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n    pageSize: 10,\n  });\n\n  for await (const page of result) {\n    console.log(page);\n  }\n}\n\nrun();"
      summary: Get staking metrics for a given subnet
      description: Gets staking metrics for a given subnet.
      parameters:
      - name: metric
        required: true
        in: path
        description: Which network level metric to fetch.
        example: validatorCount
        schema:
          $ref: '#/components/schemas/NetworkMetric'
      - name: startTimestamp
        required: false
        in: query
        description: Query param for retrieving items after a specific timestamp.
        example: 1689541049
        schema:
          minimum: 0
          type: integer
      - name: endTimestamp
        required: false
        in: query
        description: Query param for retrieving items before a specific timestamp.
        example: 1689800249
        schema:
          minimum: 0
          type: integer
      - name: pageToken
        required: false
        in: query
        description: A page token, received from a previous list call. Provide this to retrieve the subsequent page.
        schema:
          type: string
      - name: pageSize
        required: false
        in: query
        description: The maximum number of items to return. The minimum page size is 1. The maximum pageSize is 2160.
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 2160
        example: '10'
      - name: network
        required: true
        in: path
        description: Either mainnet or testnet/fuji.
        example: mainnet
        schema:
          $ref: '#/components/schemas/Network'
      - name: subnetId
        required: false
        in: query
        description: The subnet ID to filter by. If not provided, then all subnets will be returned.
        example: 11111111111111111111111111111111LpoYY
        schema:
          default: 11111111111111111111111111111111LpoYY
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetricsApiResponse'
        '400':
          description: "Bad requests generally mean the client has passed invalid \n    or malformed parameters. Error messages in the response could help in \n    evaluating the error."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
        '401':
          description: "When a client attempts to access resources that require \n    authorization credentials but the client lacks proper authentication \n    in the request, the server responds with 401."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
        '403':
          description: "When a client attempts to access resources with valid\n    credentials but doesn't have the privilege to perform that action, \n    the server responds with 403."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
        '404':
          description: "The error is mostly returned when the client requests\n    with either mistyped URL, or the passed resource is moved or deleted, \n    or the resource doesn't exist."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
        '429':
          description: "This error is returned when the client has sent too many,\n    and has hit the rate limit."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
        '500':
          description: "The error is a generic server side error that is \n    returned for any uncaught and unexpected issues on the server side. \n    This should be very rare, and you may reach out to us if the problem \n    persists for a longer duration."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
        '502':
          description: "This is an internal error indicating invalid response \n      received by the client-facing proxy or gateway from the upstream server."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadGateway'
        '503':
          description: "The error is returned for certain routes on a particular\n    Subnet. This indicates an internal problem with our Subnet node, and may \n    not necessarily mean the Subnet is down or affected."
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceUnavailable'
      tags:
      - Chain Metrics
components:
  schemas:
    TooManyRequests:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
 

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ava-labs/refs/heads/main/openapi/ava-labs-chain-metrics-api-openapi.yml