Billing

Pricing scales with usage. Chat completions are billed per token; specialized tool calls (document analysis, compliance checks, and future tools) are billed per-call based on complexity, reflecting the retrieval, citation grounding, and jurisdiction logic layered on top of the base model.

Free

Free trial credits

20 req/min

Try every /v1 endpoint

No credit card required

Great for prototyping

Most Popular

Pay-as-you-go

$8 / $32 per MTok (chat)

100 req/min

Chat completions: $8/MTok in, $32/MTok out

Document analysis: $0.15–$1.50/call by complexity

10% off past $500/mo, 20% off past $2,000/mo

Enterprise

Custom

2,000+ req/min

Dedicated capacity + SLA

Custom rate limits

Invoiced monthly, dedicated support

How usage is metered today

Every call is logged (endpoint, status, credits, duration) against your account. The wallet endpoints below are live today — you can already query your balance and budget programmatically. A dedicated “Usage & Billing” panel surfacing the same data directly in the Developer Console is on the roadmap.

Prepaid wallet

Each signed-in developer has a prepaid USD wallet. Every metered call deducts real cost-equivalent balance; calls are blocked with 402 Payment Required once your balance reaches zero. You can set a monthly budget cap to get alerted at 80% and 100% of spend, and top up manually or via Razorpay.

GET/api/v2/developer/wallet

Get your current balance, monthly spend, and budget status.

Response body

{
  "user_id": "usr_123",
  "balance_usd": 42.5,
  "currency": "USD",
  "monthly_budget_usd": 100,
  "alert_80_sent_at": null,
  "alert_100_sent_at": null,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-02-10T12:00:00Z",
  "monthly_spend_usd": 12.3,
  "budget_pct_used": 12.3,
  "budget_alert_80": false,
  "budget_alert_100": false
}
POST/api/v2/developer/wallet/topup

Top up your balance — manual (test/admin) or via Razorpay.

Request body

{
  "amount_usd": 50,
  "method": "razorpay"
}

Response body

{
  "status": "pending_payment",
  "order_id": "order_Hj8x...",
  "amount": 5000,
  "currency": "INR",
  "amount_usd": 50,
  "razorpay_key": "rzp_live_..."
}
POST/api/v2/developer/wallet/topup/verify

Verify a Razorpay payment and credit the wallet. Idempotent on order_id.

Request body

{
  "order_id": "order_Hj8x...",
  "razorpay_payment_id": "pay_Hj9y...",
  "razorpay_signature": "3f2504e0...",
  "amount_usd": 50
}

Response body

{
  "user_id": "usr_123",
  "balance_usd": 42.5,
  "currency": "USD",
  "monthly_budget_usd": 100,
  "alert_80_sent_at": null,
  "alert_100_sent_at": null,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-02-10T12:00:00Z",
  "monthly_spend_usd": 12.3,
  "budget_pct_used": 12.3,
  "budget_alert_80": false,
  "budget_alert_100": false
}
POST/api/v2/developer/wallet/budget

Set (or clear, with null) your monthly usage budget cap for 80%/100% alerts.

Request body

{
  "monthly_budget_usd": 100
}

Response body

{
  "user_id": "usr_123",
  "balance_usd": 42.5,
  "currency": "USD",
  "monthly_budget_usd": 100,
  "alert_80_sent_at": null,
  "alert_100_sent_at": null,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-02-10T12:00:00Z",
  "monthly_spend_usd": 12.3,
  "budget_pct_used": 12.3,
  "budget_alert_80": false,
  "budget_alert_100": false
}

Insufficient balance (402)

When a metered call would take your balance below zero, the API returns 402 Payment Requiredwith the amount you're short by:

402 Payment Required

{
  "error": {
    "type": "insufficient_balance",
    "message": "Wallet balance is insufficient to complete this request.",
    "balance_usd": 0,
    "required_usd": 0.15
  }
}

Enterprise invoicing

Enterprise-tier keys are auto-postpaid — they never receive a 402; usage is recorded to your ledger as an invoice_pending event and billed on your monthly invoice instead of deducting from a prepaid wallet.