Skip to main content

Concurrency

Concurrency is the number of simultaneous active calls your account can run. Check your current concurrency in GET /user/me:
{
  "concurrency": { "max": 10, "current": 3 }
}
To increase your concurrency limit, contact support@bolna.ai or upgrade your plan. See Outbound Calling Concurrency for scheduling behavior when the limit is reached.

Rate limits

The API is rate-limited per account. If you exceed the limit you receive HTTP 429. Apply exponential backoff and retry:
import time

def call_with_backoff(fn, max_retries=5):
    for i in range(max_retries):
        status, data = fn()
        if status != 429:
            return status, data
        time.sleep(2 ** i)
    raise Exception("Rate limit exceeded after retries")

Batch limits

LimitValue
Minimum scheduled_at lead time2 minutes
Start roundingRounds up to next 10-minute mark
scheduled_at formatISO 8601 with numeric offset (e.g. +00:00) — Z suffix rejected
Maximum CSV rowsContact support for high-volume batches

CSV requirements

FieldRule
contact_number columnRequired — E.164 format (e.g. +919876543210)
Additional columnsOptional — become {variable} substitutions in prompt
File typeCSV (text/csv)
EncodingUTF-8

Webhook delivery

PropertyValue
Source IP13.203.39.153 — whitelist this on your server
Events per callMultiple (status changes: queued → in-progress → call-disconnected → completed)
Expected responseHTTP 200 — return fast; Bolna retries on non-2xx or timeout

Wallet & balance

Calls require wallet credits. A balance-low execution status means the call was not placed due to insufficient balance. Top up from the dashboard or contact support for invoice billing.