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.