Tone docs

Tone API

The +91 phone-number API for AI agents — provision Indian numbers, run TRAI-compliant voice calls, and keep the evidence.

Tone gives an AI agent an Indian phone number.

It provisions +91 numbers over an API, places and receives voice calls on them in twelve Indian languages, and runs the TRAI compliance every one of those calls is subject to — the calling windows, the Do-Not-Call checks, the consent ledger and the audit trail that proves you did it.

It is a developer product, not a hosted chatbot builder. You bring the conversation; Tone supplies the number, the carrier path, and the regulation around the call.

Three ways to use it

You do not pick one at signup. These are packaging, not account types — a single organization can run all three at once, because the choice lives on each phone number rather than on your account.

TelephonyComplianceThe voice agentRate
Full stackToneToneTone₹6.00/min + rental
Bring your own voiceToneToneYou₹2.50/min + rental
Compliance onlyYouToneYouper verdict
  • Full stack — you write a prompt, pick a voice, and Tone runs the whole call. Start here if you want a working call in five minutes.
  • Bring your own voice stack — you already have an agent. Tone hands you the audio over a WebSocket and stays out of the conversation.
  • Compliance as an API — you already have a carrier. Tone answers "may I legally dial this number right now?" and keeps the evidence that you asked.

Start here

What you should know before you build

/v1 is a promise, not a version number. Changes are additive only. New endpoints, new optional request fields, new response fields and new enum members can appear at any time and are not breaking. Nothing you receive today will be removed, renamed or retyped. There is no plan for a /v2.

Treat every enum as open. Fields listing what exists today are telling you what exists today, not what can ever arrive. Handle an unrecognised value rather than throwing — that is the other half of the additive-only promise, and a client that throws turns our compatible change into your outage.

Branch on error.code, never on error.message. Codes are contract; messages are written for humans and get reworded. See Conventions for the envelope both share.

Test mode is free and complete. A tone_test_ key works from the moment you sign up — before KYC, before a DLT registration, before you have put any money in. It runs the same compliance gate, writes the same call records and sends the same webhooks with the same signatures. Going live is a key swap.

Was this page helpful?

On this page