> ## Documentation Index
> Fetch the complete documentation index at: https://docs.limitguard.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Usage

> Check current API key usage, the tier's real rate limits and prepaid balance.

Send X-API-Key header to identify the key. Free endpoint (no x402 cost).
`balance_usd` is the prepaid balance each priced call is debited from.
`rate_limit_per_minute`/`rate_limit_per_day` are the caps that actually
throttle calls (app.middleware.rate_limit.TIER_RATE_LIMITS); monthly_* is
a separate, looser abuse ceiling kept for backward compatibility.
With TIER_SUBSCRIPTION_ENABLED, `tier_expires_at`/`tier_queue` are the
active Growth/Pro term and the terms queued behind it (null otherwise).
`watch_recheck_credits` is the scheduled re-checks the key's Growth/Pro
purchases bought and it has not spent yet.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/keys/usage
openapi: 3.1.0
info:
  title: Limitguard.ai
  description: >-
    Lead validation API: the company behind each lead checked against the NL and
    BE business registers, EU VAT and sanctions lists, plus company, KYB and
    agent wallet checks for developers and AI agents
  version: 0.1.0
servers:
  - url: https://api.limitguard.ai
security: []
paths:
  /v1/keys/usage:
    get:
      summary: Get Usage
      description: >-
        Check current API key usage, the tier's real rate limits and prepaid
        balance.


        Send X-API-Key header to identify the key. Free endpoint (no x402 cost).

        `balance_usd` is the prepaid balance each priced call is debited from.

        `rate_limit_per_minute`/`rate_limit_per_day` are the caps that actually

        throttle calls (app.middleware.rate_limit.TIER_RATE_LIMITS); monthly_*
        is

        a separate, looser abuse ceiling kept for backward compatibility.

        With TIER_SUBSCRIPTION_ENABLED, `tier_expires_at`/`tier_queue` are the

        active Growth/Pro term and the terms queued behind it (null otherwise).

        `watch_recheck_credits` is the scheduled re-checks the key's Growth/Pro

        purchases bought and it has not spent yet.
      operationId: get_usage_v1_keys_usage_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/KeyUsageResponse'
      security:
        - APIKeyHeader: []
components:
  schemas:
    KeyUsageResponse:
      properties:
        key_id:
          type: string
          title: Key Id
          description: Key identifier (SHA-256 hash prefix)
        tier:
          type: string
          title: Tier
          description: Current pricing tier
        rate_limit_per_minute:
          type: integer
          title: Rate Limit Per Minute
          description: 'Real enforced burst cap: max requests per minute for this tier'
        rate_limit_per_day:
          type: integer
          title: Rate Limit Per Day
          description: 'Real enforced cap: max requests per rolling 24h for this tier'
        monthly_usage:
          type: integer
          title: Monthly Usage
          description: >-
            Requests this key made in the current calendar month (UTC), counted
            against monthly_limit.
        monthly_limit:
          type: integer
          title: Monthly Limit
          description: >-
            Monthly request ceiling for this tier: an abuse cap enforced on key
            calls (429 when reached, resets on the first of the month UTC), not
            a number of prepaid calls. Calls paid per call with x402 are never
            refused by it.
        remaining:
          type: integer
          title: Remaining
          description: Requests left before the monthly ceiling this calendar month
        usage_percent:
          type: number
          title: Usage Percent
          description: Percentage of the monthly ceiling used this calendar month (0-100)
        balance_usd:
          type: number
          title: Balance Usd
          description: >-
            Prepaid balance in USD; each priced call is debited at the price in
            the pricing table
          default: 0
        tier_expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Tier Expires At
          description: >-
            When the active Growth/Pro term ends (null without a term, or with
            TIER_SUBSCRIPTION_ENABLED off). The key then moves to the first
            queued term, or back to the tier it had before
        tier_queue:
          anyOf:
            - items:
                $ref: '#/components/schemas/QueuedTerm'
              type: array
            - type: 'null'
          title: Tier Queue
          description: >-
            Terms bought during a higher active term (Growth during Pro), oldest
            first, each with the time it starts (null when there are none)
        watch_recheck_credits:
          anyOf:
            - type: integer
            - type: 'null'
          title: Watch Recheck Credits
          description: >-
            Scheduled change-monitoring re-checks left, bought one-time by
            Growth and Pro purchases (one per re-check of one watched entry);
            null when the key never bought any
      type: object
      required:
        - key_id
        - tier
        - rate_limit_per_minute
        - rate_limit_per_day
        - monthly_usage
        - monthly_limit
        - remaining
        - usage_percent
      title: KeyUsageResponse
      description: >-
        Response showing current API key usage, the tier's real enforced rate

        limits, and prepaid balance.


        A later change moved pricing to a prepaid balance debited per call; the
        limits that

        actually throttle a caller day-to-day are the per-minute burst cap and
        the

        rolling 24h cap (app.middleware.rate_limit.TIER_RATE_LIMITS) -- not the

        monthly_* fields below, which are a separate, much looser abuse ceiling

        that a steady low-rate caller could in principle still cross once a
        month

        even while always under the per-minute/per-day caps.
    QueuedTerm:
      properties:
        tier:
          type: string
          title: Tier
          description: Tier the key moves to when this term starts
        starts_at:
          type: string
          format: date-time
          title: Starts At
          description: When this term starts (the term ahead of it ends)
      type: object
      required:
        - tier
        - starts_at
      title: QueuedTerm
      description: A lower-tier term bought during a higher active term, waiting its turn.
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.