Indian virtual phone number API for developers
What a virtual Indian phone number is on RingTrunk, a real 10-digit Indian mobile number delivered over SIP rather than a SIM, and how the REST API creates the trunk, attaches the number, sets forwarding and reads call records.
Updated 6 September 2026
In short: on RingTrunk a "virtual" Indian phone number is a real 10-digit Indian mobile number that lives on a SIP trunk instead of a SIM card, and everything about it, from attaching it to a trunk to forwarding it to a phone, is available through the REST API.
What "virtual number" means here
The number is a normal Indian mobile number. Anyone in India can dial it from any phone. What makes it virtual is where it terminates: not a handset, but the SIP trunk you point your software at. Calls to the number are delivered as SIP INVITEs to the origination URIs on your trunk, and calls from your software present the number as caller ID.
That is the difference between a virtual number product and a phone: nothing physical, no device to keep charged, and the same number can be moved between trunks by an API call.
What the API does with it
| Task | Call |
|---|---|
| Create the trunk that will carry the number | POST /api/v1/trunks |
| Attach the number to the trunk | POST /api/v1/trunks/{sid}/numbers with { "did": "9XXXXXXXXX" } |
| Choose where inbound calls are delivered | PUT /api/v1/trunks/{sid}/origination-uris |
| Forward the number to a real phone when nobody is there to answer | PATCH /api/v1/trunks/{sid}/numbers/{did} with forward_number |
| See every number on the account and where it is attached | GET /api/v1/numbers |
| Read call records for the number | GET /api/v1/calls |
Attaching does two things at once: the number becomes a caller ID the trunk may present, and incoming calls to it are routed down that trunk. Both are written together, so a number is never half-attached.
curl -X POST https://ringtrunk.com/api/v1/trunks/TRxxxxxxxxxxxxxxxx/numbers \
-H "X-API-Key: cw_live_your_key_here" \
-H "content-type: application/json" \
-d '{"did": "9XXXXXXXXX"}'Who uses it this way
Voice-agent teams that give each agent its own number, CRM and dialer products that hold a number per customer on separate trunks, and anyone who would rather script provisioning than click through a console. An account can hold many trunks, each with its own numbers and its own origination URIs, so one product can serve many customers without mixing their traffic.
Limits that apply to every number
Calls placed from the number go to Indian mobile destinations only. The caller ID must be a number attached to the trunk. Concurrent calls come from the channels bought with the number. See Placing calls and the full REST API reference.