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

# Get your India API credit balance

> Returns the credits this API key's account can spend right now.

**Free.** Never charged, so it is safe to poll for low-balance alerting or to
pre-flight a batch job.

**Authentication:** any valid `vq_key_` key. No particular scope is required.

Credits are account-wide and are **not** split by jurisdiction: the same balance
funds the India legislation endpoints and the United States primary-law
endpoints, from one ledger. This route and the United States
`GET /api/v1/credits/balance` therefore report the same number, and spending on
either surface moves both.

Read `bySource` before assuming a balance is durable: `subscription` credits are
use-it-or-lose-it at the period end, while `payg` credits you purchased persist
and burn last. `nextExpiry` tells you what is about to be forfeited and when.

## Example

```bash
curl https://api.vaquill.ai/api/v1/in/credits/balance \
  -H "Authorization: Bearer $VAQUILL_API_KEY"
```



## OpenAPI

````yaml https://api.vaquill.ai/in/openapi.json get /api/v1/in/credits/balance
openapi: 3.1.0
info:
  title: Vaquill India API
  description: >-
    Public API for Indian primary law: Central and State Acts, the instruments
    of the principal regulators, and their individual sections.


    **Authentication**: Pass your API key as `Authorization: Bearer vq_key_...`
    (preferred) or in the `X-API-Key` header. The `api_key` query parameter also
    works where a header cannot be set, but a URL ends up in logs and browser
    history. Sending two different keys in one request is rejected with a 401.
    The same key works against the US API; the two share one credit balance.


    **Credits**: Each call costs API credits. See `GET
    /api/v1/api-credits/pricing` for the full pricing matrix.


    ## Coverage


    Central, State and Union Territory enactments, addressable down to the
    individual section, plus the instruments of the principal regulators.
    Regulators covered include SEBI, RBI, MCA, IRDAI, TRAI, DGFT, MOEFCC and
    CPCB.


    `GET /acts/filters` is free and returns the live section count behind every
    `category`, `state` and `department` value, so read volumes from there
    rather than from this page.


    `sourceUrl` points at the publisher's own document where we hold a live one,
    and is `null` otherwise. India Code migrated hosts in August 2026 and
    re-minted its identifiers, so links into the old site no longer resolve; we
    return nothing rather than a link that 404s. `pdfUrl` and `textUrl` are
    served from our own mirror and are unaffected.


    ## Scope


    This document describes the **India** surface only. US statutes are a
    separate document at `/external/openapi.json`, so an MCP client configured
    here sees Indian tools and nothing else.
  version: 1.0.0
  contact:
    name: Vaquill API Support
    url: https://www.vaquill.ai
    email: support@vaquill.ai
  license:
    name: Proprietary
    url: https://www.vaquill.ai/terms
  termsOfService: https://www.vaquill.ai/terms
servers:
  - url: https://api.vaquill.ai
    description: Production
security:
  - ApiKeyAuth: []
  - ApiKeyHeader: []
  - ApiKeyQuery: []
paths:
  /api/v1/in/credits/balance:
    get:
      tags:
        - India Credits
      summary: Get your India API credit balance
      description: >-
        Returns the credits this API key's account can spend right now.


        **Free.** Never charged, so it is safe to poll for low-balance alerting
        or to

        pre-flight a batch job.


        **Authentication:** any valid `vq_key_` key. No particular scope is
        required.


        Credits are account-wide and are **not** split by jurisdiction: the same
        balance

        funds the India legislation endpoints and the United States primary-law

        endpoints, from one ledger. This route and the United States

        `GET /api/v1/credits/balance` therefore report the same number, and
        spending on

        either surface moves both.


        Read `bySource` before assuming a balance is durable: `subscription`
        credits are

        use-it-or-lose-it at the period end, while `payg` credits you purchased
        persist

        and burn last. `nextExpiry` tells you what is about to be forfeited and
        when.


        ## Example


        ```bash

        curl https://api.vaquill.ai/api/v1/in/credits/balance \
          -H "Authorization: Bearer $VAQUILL_API_KEY"
        ```
      operationId: get_india_credit_balance_api_v1_in_credits_balance_get
      responses:
        '200':
          description: Current spendable balance for the calling key's account.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExternalCreditBalanceResponse'
              example:
                creditsRemaining: 103039
                usdRemaining: 1030.39
                bySource:
                  - source: comp
                    credits: 20000
                  - source: payg
                    credits: 64699
                  - source: subscription
                    credits: 18340
                nextExpiry:
                  at: '2026-10-12T13:56:31Z'
                  credits: 18340
                plan: business
                totalPurchased: 143960
                totalConsumed: 48471
                rateLimit:
                  perMinute: 150
                  perHour: 2500
                  perDay: 10000
                asOf: '2026-09-19T12:34:56Z'
        '401':
          description: >-
            Missing, malformed or unrecognised API key. Note this endpoint
            accepts ONLY a `vq_key_` API key; a dashboard session token is
            rejected here.
          content:
            application/json:
              example:
                detail: Invalid token
        '429':
          description: >-
            Request-rate ceiling exceeded. Retry after the `Retry-After` header.
            Being throttled says nothing about your balance.
          content:
            application/json:
              example:
                detail: Rate limit exceeded. Try again in 42 seconds.
components:
  schemas:
    ExternalCreditBalanceResponse:
      properties:
        creditsRemaining:
          type: number
          title: Creditsremaining
          description: >-
            Credits you can actually spend right now. Deliberately the same
            field name that metered responses return, so one name means one
            thing across the API.


            Derived from your live credit buckets under the same expiry rule the
            billing path applies, so it never promises credits a call would
            refuse to spend.
          examples:
            - 103039
        usdRemaining:
          type: number
          title: Usdremaining
          description: >-
            `creditsRemaining` in USD, at the published conversion rate (1
            credit = $0.01). Provided so you do not have to hardcode the rate;
            `GET /api/v1/api-credits/pricing` is its source of truth.
          examples:
            - 1030.39
        bySource:
          items:
            $ref: '#/components/schemas/CreditSourceBreakdown'
          type: array
          title: Bysource
          description: >-
            `creditsRemaining` split by funding source, and it always sums to
            it. Worth reading because the sources do not behave alike:
            `subscription` credits are use-it-or-lose-it at the period end,
            while `payg` credits you bought are durable and burn last.
        nextExpiry:
          anyOf:
            - $ref: '#/components/schemas/CreditExpiry'
            - type: 'null'
          description: >-
            The soonest expiry across your credits, or `null` if none of them
            expire. Poll this to avoid silently forfeiting an allowance.
        plan:
          anyOf:
            - type: string
            - type: 'null'
          title: Plan
          description: >-
            Active API subscription tier, or `null` on pay-as-you-go. Also
            determines your rate-limit multiplier. Briefly cached, so a
            subscription change made seconds ago may not be reflected yet;
            `creditsRemaining` is always live.
          examples:
            - business
        totalPurchased:
          type: number
          title: Totalpurchased
          description: Lifetime credits added to this account.
          examples:
            - 150000
        totalConsumed:
          type: number
          title: Totalconsumed
          description: Lifetime credits spent by this account.
          examples:
            - 46961
        rateLimit:
          anyOf:
            - $ref: '#/components/schemas/CreditRateLimit'
            - type: 'null'
          description: >-
            How fast this key may call, as opposed to how much it may spend. The
            two ceilings are independent: holding credits does not exempt you
            from these, and staying under these does not pay for a call.


            These are the ceilings themselves, with your plan already applied,
            so you can size a client BEFORE issuing a request. The
            `X-RateLimit-*` headers on every response report the same ceilings
            plus your live headroom, and the two agree.
        asOf:
          type: string
          format: date-time
          title: Asof
          description: >-
            When this balance was computed. The value is live, not cached, so
            this is the instant the buckets were read.
      type: object
      required:
        - creditsRemaining
        - usdRemaining
        - totalPurchased
        - totalConsumed
        - asOf
      title: ExternalCreditBalanceResponse
      description: Spendable credit balance for the calling API key's account.
    CreditSourceBreakdown:
      properties:
        source:
          type: string
          title: Source
          description: >-
            Where the credits came from. `bonus` (signup grant), `subscription`
            (plan allowance, use-it-or-lose-it), `payg` (purchased packs) and
            `comp` (complimentary) exist today, and this list is not closed:
            read the values rather than matching on a fixed set.
          examples:
            - payg
        credits:
          type: number
          title: Credits
          description: Credits remaining in this source. 1 credit = $0.01.
          examples:
            - 1030.43
      type: object
      required:
        - source
        - credits
      title: CreditSourceBreakdown
      description: Live credits held under one funding source.
    CreditExpiry:
      properties:
        at:
          type: string
          format: date-time
          title: At
          description: UTC instant at which the next credits expire.
          examples:
            - '2026-10-01T00:00:00Z'
        credits:
          type: number
          title: Credits
          description: >-
            Credits that expire at that instant. They stop being spendable
            immediately at `at`, not when the nightly sweep records it.
          examples:
            - 500
      type: object
      required:
        - at
        - credits
      title: CreditExpiry
      description: The soonest expiry, and what dies with it.
    CreditRateLimit:
      properties:
        perMinute:
          type: integer
          title: Perminute
          description: >-
            Requests allowed per minute on this key, plan multiplier already
            applied.
          examples:
            - 150
        perHour:
          type: integer
          title: Perhour
          description: Requests allowed per hour on this key.
          examples:
            - 2000
        perDay:
          type: integer
          title: Perday
          description: Requests allowed per day on this key.
          examples:
            - 10000
      type: object
      required:
        - perMinute
        - perHour
        - perDay
      title: CreditRateLimit
      description: >-
        Request-rate ceilings in force for the calling key.


        A SECOND, independent ceiling alongside credits, and the two are
        unrelated:

        you can hold credits and still be throttled, or sit far under these
        limits

        and be refused for an empty balance.
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: vq_key_*
      description: >-
        API key issued from the developer dashboard. Pass as `Authorization:
        Bearer vq_key_...` (preferred).
    ApiKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
      description: >-
        The same API key as a bare header value: `X-API-Key: vq_key_...`.
        Equivalent to the Bearer form.
    ApiKeyQuery:
      type: apiKey
      in: query
      name: api_key
      description: >-
        The same API key as a query parameter: `?api_key=vq_key_...`. Use only
        where you cannot set a header. A URL can end up in proxy and server
        logs, browser history and shared links, so prefer either header form,
        and rotate a key that has leaked.

````

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