Quickstart
Create a key, an agent, a call and a webhook in five minutes. Start here.
Agents
The reusable configuration a call runs. Reference.
Tools
Connect your APIs before, during, and after calls, with synchronous or background execution. Guide.
Calls
Place, inspect and abort outbound calls; read transcripts and recordings. Reference.
Campaigns
Dial a whole list with calling windows, retries, budgets and reports. Reference.
Do-not-call
Your suppression list. We check it at dial time. Reference.
Webhooks
Signed lifecycle events. Guide.
Live events
Show any call while it runs, phone calls included. Guide.
Realtime API
Point an OpenAI Realtime client, such as Pipecat, at Mirai and keep your pipeline. Guide.
API reference
Every endpoint, with examples you can send from the page and a Postman collection. Reference.
Authentication
Every request carries one header:sk_live_ followed by 32 hex characters. It is scoped to one
workspace. A key created after your company goes live carries your plan’s
tier: T5 (pay as you go) unless you have committed to T3 or
T1. You create, rotate and revoke keys yourself in the
console under Developers.
If you run many brands as sub-workspaces, the same key
also reaches each of them: add a Mirai-Workspace header with the brand’s
sub-workspace id or your external_id for it.
We store only the SHA-256 of your key, so we cannot recover a lost key. Rotate
it instead. Never ship a secret key to a browser or a mobile app.
Conventions
JSON only. SendContent-Type: application/json on every request with a
body. Responses are always JSON, including errors.
IDs are minted by the server and prefixed by resource type. Treat them as
opaque strings and don’t parse them.
Errors normally use the envelope below. Tool validation
returns a list of field errors. See the full error reference.
2026-07-26T09:14:02Z.
Money is in INR. cost.amount_inr, balance_inr and amount_inr are numbers,
not strings. The one exception is campaigns, whose
budget_paise and spent_paise are integer paise (100 paise = ₹1). No
object mixes the two units.
Phone numbers are E.164 with the leading +: +919876543210.
Pagination
List endpoints takelimit and cursor and return a cursor-paginated envelope.
next_cursor back as cursor to get the following page. Stop when
has_more is false. Default limit is 20, maximum 100.
The cursor is an opaque string. Send it back exactly as you received it, and
don’t build or decode one yourself; its shape can change between releases.
Lists are newest first by created_at. A call list shows inbound and
outbound calls together in that order.
Idempotency
POST /v2/calls accepts an Idempotency-Key header. If you reuse a key, you get
the original response back instead of a second phone call. We hold keys for 24
hours.
Incoming calls and phone numbers
To receive inbound calls, buy a dedicated number through Mirai from Phone numbers → Add a number, or connect your own supported telco number. Then assign a published agent and activate incoming calls. Buying through Mirai does not require your own Plivo account. BYO currently supports Plivo; both options support Indian +91 numbers. The purchase flow shows available rentals, business verification requirements, and renewal terms. Follow the inbound calling cookbook for console and API setup.Not built yet
These are the known gaps, so you can check them before you start building:- Knowledge base / RAG. For function calling, use v2 tools.
- Wallet top-up over the API. Add credit from the Billing page of the console instead.
- OAuth or user-scoped tokens. Secret keys only.