---
title: "Get API credit pricing"
method: GET
path: "/api/v1/api-credits/pricing"
tags: ["Pricing"]
---

# Get API credit pricing

`GET /api/v1/api-credits/pricing`

## Request

- Base URL: `https://api.vaquill.ai`
- URL: `https://api.vaquill.ai/api/v1/api-credits/pricing`
- Auth: none required
- TypeScript: <https://skmtc.dev/vaquill/apis/vaquill-developer-api/docs/api/v1/api-credits/pricing/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns the credit-to-price conversion rate and the credit cost of every metered
endpoint in the requested jurisdiction, plus the free endpoints at 0. This is the
source the API bills from, so read it rather than hardcoding a price.

Public (no authentication) and rate-limited. 1 credit = $0.01 USD, billed in USD
from your API credit balance. Every row on this surface has `unit: "credit"`,
with `usdCost` carrying the dollar figure.

## Query parameters

- `region` 'US' | 'IN', nullable: Jurisdiction to price, `US` or `IN`. Defaults to the jurisdiction of the document you are reading, so a caller who does not set it gets the prices for the endpoints that document describes and nothing else. Passing the other jurisdiction is allowed and returns that jurisdiction's rows: the same credit balance and the same key, but `operationId`, `method` and `path` are read from the document you are reading, so a row that this document does not publish answers them `null`. Read the other document's own `/api-credits/pricing` for its join keys.

## Response `200`

Pricing matrix returned successfully

- ApiCreditPricingResponse: Pricing matrix. Credit rows are USD; page rows are counts of translation pages.
  - `dollarPerCredit` number, required: USD cost per 1 credit (0.01 means 1 credit = $0.01).
  - `minCredits` number, required: Minimum credits per purchase.
  - `maxCredits` number, required: Maximum credits per purchase.
  - `costs` ApiCreditCostResponse[], required: Per-endpoint costs. Read `unit` on each row for what `credits` counts.
    - `endpoint` string, required: API endpoint path in the pricing spelling: no API prefix, no path parameters.
    - `operation` string, required: Human-readable operation name.
    - `credits` number, required: Units consumed per call. Read `unit` to know what they are: API credits (1 credit = $0.01 USD) or translation pages.
    - `unit` string: What `credits` counts. `credit` is billed in USD from your API credit balance. `page` (the `/translation/*` endpoints) is billed in translation pages from a separate, separately bought pool. The two ledgers are separate and neither pays for the other, so never add the figures together.
    - `usdCost` number, required: Cost in USD per call. Meaningful only when `unit` is `credit`. It is 0 on a `page` row because translation pages are sold in INR only: a 0 there does not mean the call is free, and `credits` is the figure to budget from. Pack prices are on `GET /api/v1/in/translation/packs`.
    - `description` string, required: What the endpoint does.
    - `category` 'account' | 'acts' | 'alerts' | 'rulemaking' | 'session_laws' | 'statutes' | 'translation', required: Endpoint category.
    - `regions` string[]: Jurisdictions this endpoint serves: `US`, `IN`, or both.
    - `perUnit` string, nullable: Set when `credits` is the price of ONE item rather than of a call: `distinct citation`, `section returned`, `law served`, `page served`. A call then costs `credits` times the items it bills, so a flat-looking `credits: 2` with `perUnit: "distinct citation"` is 2 per distinct citation. Null means a flat price per call.
    - `minimumCredits` number, nullable: The least a call can cost when it does no billable work (every item missed, or nothing was extracted). Null means no cheaper outcome than `credits`.
    - `deprecated` boolean: True for an endpoint that is still live and still priced but no longer advertised. Do not build against it; the row names its successor.
    - `operationId` string, nullable: The `operationId` of this endpoint's primary operation in the OpenAPI document that publishes it, so a catalogue can join a price to a tool. Null for a row the serving document does not publish (another jurisdiction's, or a hidden deprecated route that never had a spec entry).
    - `method` string, nullable: HTTP method of the primary operation (`GET`, `POST`, ...).
    - `path` string, nullable: The real path of the primary operation, with its path parameters and the API prefix (`endpoint` is the pricing spelling without either).
    - `operations` ApiCreditOperationRef[]: Every operation this row prices. A row covers several operations when they share one normalized path and one price (the `GET` and `POST` of one resolver; the five `/watches` routes).
      - `method` string, required: HTTP method.
      - `path` string, required: Full path with the API prefix.
      - `operationId` string, required: The operation's `operationId`.
      - `deprecated` boolean: True when the operation is deprecated.

## Other responses

- `422`: Validation error: `detail` plus one `errors` entry per rejected field.
- `429`: Rate limit exceeded
- `500`: Internal error (`internal_error`, retryable). Any credits charged for the call are refunded; retry with backoff and quote `requestId` to support if it persists.

## Changes

- **2026-11-07** `340c0d24d0b6`: 17 info
  - added the non-success response with the status `500`
  - added the optional property `candidateCount` to the response with the `422` status
  - added the optional property `costs/items/deprecated` to the response with the `200` status
  - added the optional property `costs/items/method` to the response with the `200` status
  - …13 more

[Operation history](https://skmtc.dev/vaquill/apis/vaquill-developer-api/changes/api/v1/api-credits/pricing/get.md)

---

[API](https://skmtc.dev/vaquill/apis/vaquill-developer-api.md) - [All operations](https://skmtc.dev/vaquill/apis/vaquill-developer-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vaquill/apis/vaquill-developer-api/revisions/340c0d24d0b6?raw)
