Calls
Limits and billing
Your workspace can run a fixed number of calls at once and pays for them from a prepaid balance, and this page explains both: concurrency, the queue, credits and how each one affects your calls.
Concurrency
The concurrency limit is how many calls your workspace may have live at the same time. A call is live while it is ringing or in-progress, and phone and browser calls both count.
| When the limit is reached | What happens |
|---|---|
| Outbound call | It waits in the queue and is dialled when a call ends. |
| Inbound call | It is rejected (the caller hears the line drop). |
| Browser call | It is refused with all N call slots are busy: try again when a call ends. |
Your limit comes from your plan, unless the Voxa team has set a different limit for your workspace. The plans Voxa starts with:
| Plan | Concurrent calls | Price per minute | Agents | Members |
|---|---|---|---|---|
| Starter (default) | 5 | ₹4.00 | 10 | 5 |
| Growth | 20 | ₹3.50 | 50 | 20 |
| Scale | 50 | ₹3.00 | no limit | no limit |
The Voxa team can change plans and prices; GET /api/v1/billing/plan returns yours.
Check your limit
curl https://voxa.abhinavyadav.in/api/v1/workspace/limits -H "X-API-Key: $VOXA_API_KEY"
{"concurrency_limit": 5, "active_calls": 2, "queued_calls": 14, "pending_request": null}
| Field | Meaning |
|---|---|
concurrency_limit | Calls you may have live at once. |
active_calls | Calls ringing or in-progress now. |
queued_calls | Outbound calls waiting in the queue. |
pending_request | Your open request for a higher limit, or null. |
Ask for a higher limit
In the console, open Limits and ask for a new limit with a reason. The Voxa team reviews it. You need the owner or admin role; API keys can’t send this request. You can ask for up to 100 concurrent calls, and have one request open at a time.
The queue
- Every outbound call is queued first, oldest first per workspace. See The queue.
- There is no limit on how many calls you can queue.
- A call waits while all slots are busy, while the agent’s calling hours are closed, or while the workspace is not active.
- A call still queued after 24 hours is canceled with
expired in queue. - Queued calls are not charged. Cancel one with
POST /api/v1/calls/{id}/hangup.
Credits
Voxa is prepaid. Your balance is in paise (100 paise = ₹1). New workspaces get welcome credits (₹500 by default).
How a call is charged
Calls are billed per second of duration_seconds, at your price per minute, rounded up to the next paisa:
cost_paise = ceil(duration_seconds × price_per_minute_paise / 60)
A 14.2-second call at ₹4.00 per minute costs ceil(14.2 × 400 / 60) = 95 paise. The charge is taken when the call ends and saved on the call as cost_paise.
- Charged: outbound, inbound and browser calls that connected, for the time the agent was live.
- Not charged: time in the queue, ringing, and calls that never connected (
no-answer,busy,canceled, orfailedbefore connecting).
What happens when credits run low
| Moment | Balance at or below ₹0 |
|---|---|
| Placing an outbound call | 402 out of credits: add credits in Billing |
| A queued call reaches the front | It fails with out of credits. |
| Inbound call | Rejected. |
| Browser call | Refused. |
During a call, Voxa caps its length at what your balance can pay for when it starts. If that is shorter than max_duration_seconds, the call ends when the money runs out, with hangup_reason: "credits ran out".
Each call’s cap is worked out from the balance when it starts. Several calls running at once can together take the balance below zero; new calls are then refused until you top up.
Check your balance
API keys can read the balance and the ledger:
curl https://voxa.abhinavyadav.in/api/v1/billing -H "X-API-Key: $VOXA_API_KEY"
{"credits_paise": 48210, "price_per_minute_paise": 400, "minutes_left": 120.5, "low_balance": false, "plan_name": "Starter"}
low_balance is true when fewer than 10 minutes are left at your price.
curl "https://voxa.abhinavyadav.in/api/v1/billing/ledger?limit=20" -H "X-API-Key: $VOXA_API_KEY"
{
"items": [
{"id": "9c2e...", "at": "2026-10-01T14:44:16.300000+05:30", "kind": "call", "amount_paise": -95, "balance_after_paise": 48210, "note": "Appointment reminder · 14 s", "call_id": "00b1d622a8f04f4f8f3a3c2d9e5b7a11", "payment_id": "", "by_name": "phone"}
],
"total": 212
}
Ledger kind is grant (welcome credits and other free credits), topup (a payment), call (a call’s charge, with its call_id) or adjustment (a change by the Voxa team).
Top up
Top-ups are made in the console under Billing, by the workspace owner. Choose a credit pack (larger packs include bonus credits) or a custom amount. Each payment has a GST invoice, listed by GET /api/v1/billing/invoices and downloadable as a PDF from GET /api/v1/billing/invoices/{id}/pdf.
Other limits
| Limit | Default |
|---|---|
| API requests per key | 120 per minute. See Rate limits. |
| Agents per workspace | From your plan. |
| Agent versions kept | 10 per agent. |
| Webhook endpoints | 20 per workspace. |
| Call length | max_duration_seconds, 30 to 3600 seconds per agent. |