Quick Start
This walkthrough takes you from zero to a placed outbound call on an Indian number. Replace vp_YOUR_API_KEY with your own key throughout.
1. Get your API key
Sign in to the portal at voice-app.edesy.in to create your tenant and generate an API key. Authenticate every request with a tenant API key (starts with vp_) or a session JWT. See Authentication.
Authorization: Bearer vp_YOUR_API_KEY
2. Provision an Indian number
Buying a number gives your tenant ownership — a DB row plus the upstream VoiceLink reseller order. It does not by itself wire the number into the telephony layer; that happens explicitly in step 3.
curl -X POST https://voice-api.edesy.in/v1/dids/purchase-live \
-H "Authorization: Bearer vp_YOUR_API_KEY" \
-H "Content-Type: application/json"
Then list your numbers to get the phone number ID (phone_number_id) — you use it as :id in the wiring calls:
curl -H "Authorization: Bearer vp_YOUR_API_KEY" \
https://voice-api.edesy.in/v1/phone-numbers
3. Register the number for outbound
Registering the number on the VoiceLink carrier creates the number's routing entry on the Edesy Voice Platform. This enables outbound caller-ID and is the prerequisite for inbound. The call is idempotent.
curl -X POST https://voice-api.edesy.in/v1/phone-numbers/$ID/carrier \
-H "Authorization: Bearer vp_YOUR_API_KEY"
The response reports the live telephony state, including outbound_capable: true. See Phone Numbers for the full payload and for binding inbound to your agent.
4. Connect your platform
Point your voice agent at Edesy using whichever model fits your stack:
- SIP termination trunk (Vapi, Retell, LiveKit) — connect via SIP
- WebSocket audio streaming (custom agents) — connect via WebSocket
- BYOC (your own carrier) — connect your trunk
5. Make a test outbound call
Once the number is carrier-registered, originate a call with it as the caller-ID over VoiceLink:
curl -X POST https://voice-api.edesy.in/v1/calls \
-H "Authorization: Bearer vp_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "917969002802",
"to": "919812345678",
"trunk": "VoiceLink"
}'
The from number must be registered (step 3), otherwise the platform rejects the caller-ID. Setting trunk to VoiceLink routes the call over the VoiceLink carrier rather than a default-carrier lookup.
Running a custom WebSocket agent instead? Use the streaming Calls API at
https://voice-api.edesy.in/v1/Accounts/{ACCOUNT_SID}/Calls— see Calls.
Next
- Authentication
- Phone Numbers — carrier registration and inbound binding
- API Reference