Ava Labs L1 Validator Metrics API

Get network level l1 validator metrics.

Operations 4

GET /v2/validators/metrics/{metric} Get given metric for all validators #
GET /v2/validation/{l1ValidationId}/metrics/{metric} Get metric values with given validationId and timestamp range #
GET /v2/validator/{nodeId}/metrics/{metric} Get metric values with given nodeId and timestamp range #
GET /v2/subnet/{subnetId}/metrics/{metric} Get metric values with given subnetId and timestamp range #

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-l1-validator-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 email required.

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

OpenAPI Specification

ava-labs-l1-validator-metrics-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: L1 Validator 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.</br></br>If you have feedback or feature requests for the API, please submit them <a href="https://portal.productboard.com/dndv9ahlkdfye4opdm8ksafi/tabs/4-glacier-api">here</a>. Bug reports can be submitted <a href="https://docs.google.com/forms/d/e/1FAIpQLSeJQrcp7QoNiqozMDKrVJGX5wpU827d3cVTgF8qa7t_J1Pb-g/viewform">here</a>, and any potential security issues can be reported <a href="https://hackenproof.com/avalanche">here</a>.
  version: 1.0.0
  contact: {}
servers:
- url: https://metrics.avax.network
tags:
- name: L1 Validator Metrics
  description: Get network level l1 validator metrics.
paths:
  /v2/validators/metrics/{metric}:
    get:
      operationId: getTotalL1ValidatorMetrics
      x-speakeasy-name-override: listMetrics
      x-speakeasy-group: metrics.l1Validators
      summary: Get given metric for all validators
      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.l1Validators.listMetrics({\n    metric: \"totalValidatorFeesDaily\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: Get given metric's value for all validators.
      parameters:
      - name: metric
        required: true
        in: path
        description: Which network level metric to fetch for L1 validator.
        example: totalValidatorFeesDaily
        schema:
          enum:
          - totalCumulativeFeesDaily
          - totalValidatorFeesDaily
          - totalPayingValidatorsDaily
          type: string
      - 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
      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:
      - L1 Validator Metrics
  /v2/validation/{l1ValidationId}/metrics/{metric}:
    get:
      operationId: getMetricsByValidationId
      x-speakeasy-name-override: getMetricsByValidationId
      x-speakeasy-group: metrics.l1Validators
      summary: Get metric values with given validationId and timestamp range
      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.l1Validators.getMetricsByValidationId({\n    l1ValidationId: \"2YYCZGHjqnbw1MzQ5fGrTp3SjqUu8y1J1xeW4yuhdXe4LoUVVG\",\n    metric: \"validationFeesDaily\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: Get given metric values for a given validationId with or without a timestamp range.
      parameters:
      - name: l1ValidationId
        required: true
        in: path
        description: The L1 Validator's validation ID to filter by
        example: 2YYCZGHjqnbw1MzQ5fGrTp3SjqUu8y1J1xeW4yuhdXe4LoUVVG
        schema:
          type: string
      - name: metric
        required: true
        in: path
        description: Which metric to fetch for given L1 validation ID.
        example: validationFeesDaily
        schema:
          enum:
          - validationCumulativeFeesDaily
          - validationFeesDaily
          type: string
      - 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
      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:
      - L1 Validator Metrics
  /v2/validator/{nodeId}/metrics/{metric}:
    get:
      operationId: getMetricsByNodeId
      x-speakeasy-name-override: getMetricsByNodeId
      x-speakeasy-group: metrics.l1Validators
      summary: Get metric values with given nodeId and timestamp range
      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.l1Validators.getMetricsByNodeId({\n    metric: \"perNodeDailyFeesPaid\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n    nodeId: \"NodeID-JQPadXEMWtRtJyXrisyDNWuXKSjSf9D36\",\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: Get given metric values for a given nodeId with or without a timestamp range.
      parameters:
      - name: metric
        required: true
        in: path
        description: Which metric to fetch for given L1 validator(node) ID.
        example: perNodeDailyFeesPaid
        schema:
          enum:
          - perNodeCumulativeFeesPaid
          - perNodeDailyFeesPaid
          type: string
      - 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: nodeId
        required: true
        in: path
        description: A primary network (P or X chain) nodeId.
        example: NodeID-JQPadXEMWtRtJyXrisyDNWuXKSjSf9D36
        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:
      - L1 Validator Metrics
  /v2/subnet/{subnetId}/metrics/{metric}:
    get:
      operationId: getMetricsBySubnetId
      x-speakeasy-name-override: getMetricsBySubnetId
      x-speakeasy-group: metrics.l1Validators
      summary: Get metric values with given subnetId and timestamp range
      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.l1Validators.getMetricsBySubnetId({\n    metric: \"perSubnetDailyFeesPaid\",\n    startTimestamp: 1689541049,\n    endTimestamp: 1689800249,\n    subnetId: \"eYwmVU67LmSfZb1RwqCMhBYkFyG8ftxn6jAwqzFmxC9STBWLC\",\n  });\n\n  console.log(result);\n}\n\nrun();"
      description: Get given metric values for a given subnetId with or without a timestamp range.
      parameters:
      - name: metric
        required: true
        in: path
        description: Which metric to fetch for given subnet ID.
        example: perSubnetDailyFeesPaid
        schema:
          enum:
          - perSubnetDailyFeesPaid
          - perSubnetCumulativeFeesPaid
          - perSubnetPayingValidators
          type: string
      - 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: subnetId
        required: true
        in: path
        description: The subnet ID to filter by.
        example: eYwmVU67LmSfZb1RwqCMhBYkFyG8ftxn6jAwqzFmxC9STBWLC
        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:
      - L1 Validator Metrics
components:
  schemas:
    Unauthorized:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 401
        error:
          type: string
          description: The type of error
          examples:
          - Unauthorized
      required:
      - message
      - statusCode
      - error
    ServiceUnavailable:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 503
        error:
          type: string
          description: The type of error
          examples:
          - Service Unavailable
      required:
      - message
      - statusCode
      - error
    BadGateway:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 502
        error:
          type: string
          description: The type of error
          examples:
          - Bad Gateway
      required:
      - message
      - statusCode
      - error
    MetricsValue:
      type: object
      properties:
        value:
          type: number
          description: Aggregated value for the current metrics.
        timestamp:
          type: number
          description: Unix Epoch timestamp for which metrics are aggregated. Depending on the interval of the metric this can be at the start of the relevant hour, day, month, year, etc.
      required:
      - value
      - timestamp
    BadRequest:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 400
        error:
          type: string
          description: The type of error
          examples:
          - Bad Request
      required:
      - message
      - statusCode
      - error
    NotFound:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 404
        error:
          type: string
          description: The type of error
          examples:
          - Not Found
      required:
      - message
      - statusCode
      - error
    Forbidden:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 403
        error:
          type: string
          description: The type of error
          examples:
          - Forbidden
      required:
      - message
      - statusCode
      - error
    MetricsApiResponse:
      type: object
      properties:
        nextPageToken:
          type: string
          description: A token, which can be sent as `pageToken` to retrieve the next page. If this field is omitted or empty, there are no subsequent pages.
        results:
          description: Array of current metrics values at different timestamps.
          type: array
          items:
            $ref: '#/components/schemas/MetricsValue'
      required:
      - results
    TooManyRequests:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 429
        error:
          type: string
          description: The type of error
          examples:
          - Too Many Requests
      required:
      - message
      - statusCode
      - error
    InternalServerError:
      type: object
      properties:
        message:
          description: The error message describing the reason for the exception
          oneOf:
          - type: string
          - type: array
            items:
              type: string
        statusCode:
          type: number
          description: The HTTP status code of the response
          examples:
          - 500
        error:
          type: string
          description: The type of error
          examples:
          - Internal Server Error
      required:
      - message
      - statusCode
      - error
x-speakeasy-globals:
  parameters:
  - $ref: '#/components/parameters/GlobalParamChainId'
  - $ref: '#/components/parameters/GlobalParamNetwork'
x-speakeasy-retries:
  strategy: backoff
  backoff:
    initialInterval: 500
    maxInterval: 60000
    maxElapsedTime: 120000
    exponent: 1.5
  statusCodes:
  - 5XX
  retryConnectionErrors: true
x-execution-weight-values:
  free: 1
  large: 50
  medium: 20
  none: 0
  small: 10
  xl: 100
  xxl: 200