t1 transactional
tier, and it is the only tier live today.
t3 and t5 are published so you can plan against them. Requesting one today
returns 501 tier_unavailable — see when they arrive.
Feature matrix
What the tier buys is not a discount, it is what the call can do.
Every call is opened. On every tier, each completed call gets an AI summary
and a QA score — 100% of calls, not a sample. Warm transfer to a human is part
of the same lattice: any tier can hand a caller to a person. See the
roadmap for rollout status of both on
t1.
Read the ❌ as a contract. A ❌ is not “degraded”, it is “absent”. On t1
there is no node-graph runtime and no IVR navigation — the call is one prompt,
start to finish. That simplicity is what makes ₹1 possible.
Picking a tier
t1— one job, under two minutes, no branching. Order confirmations, delivery windows, appointment reminders, OTP-adjacent notifications, “are you still interested?”. If you can write the whole call as one prompt and it ends when the customer says yes or no, this is your tier.t3— the call has structure (stages, rails, an IVR to get past) or you want a premium voice with automatic fallback.t5— you want to author the flow yourself, node by node, and version it like code.
What a minute costs
Billing is per-minute blocks, rounded up, with a one-minute minimum. The minute is the billing unit, not just the price: a call is not prorated to the second, and a part-minute is a whole minute.Metering
duration_secs on the call object is the true
media duration in seconds. The charge is that duration rounded up to the
next whole minute, never fewer than one, times the tier rate. A call that
never connected is not billed at all — see the table below.
cost.amount_inr on the call object and the
debit row in the ledger are authoritative. Use
the formula to forecast, not to reconcile.
What is and is not billable
The rule underneath: if media went live, you pay for it. A voicemail
consumed a real dial, real TTS and real minutes of carrier time, so it is
billed. A call our own pipeline broke is not.
Forecasting a month
Take your answer rate and your mean answered-call duration: Round each answered call up to a whole minute first, then multiply. Averaging the seconds and dividing by 60 will under-forecast, because the rounding happens per call and never cancels out.t1:
duration_secs,
not the mean — a cluster sitting just past 60 or just past 120 is the cheapest
thing you will ever fix, and a prompt that caps reply length is usually what
moves it.
Wallet
Billing is prepaid against one INR wallet per workspace.- Debits happen at call end, one ledger row per billable call, carrying the
call_id. - Top-ups are not self-serve yet — see the roadmap. Your Mirai contact credits the workspace; it lands within minutes and applies immediately.
- The ledger is the source of truth for reconciliation:
GET /v2/wallet/transactions.
At zero balance
Before dialling, we check the wallet can cover at least one minute at the call’s tier. If it cannot:402 Payment Required
- No phone rings. No charge. No call object is created.
- The
Idempotency-Keyis not consumed — retry with the same key after topping up. - Calls already in flight are not killed. A call that started with credit runs to its natural end and then debits. Your balance can therefore dip below what the pre-dial check implied during a busy minute.
402 mid-campaign is an expensive way to find out.
- Python
- Node.js
Setting the tier
Your key carries a default tier. Every call inherits it unless you override:cost.per_min_inr, so
you can always see which rate card a given call was billed under.
Coming soon
t3 and t5 are in the contract but not in production. Today:
501 Not Implemented
t3 in August 2026, t5 with node graphs in
Q4 2026 — see the roadmap for the full list, and ask
your account contact to confirm before you plan a launch around them.