Quick Start

Place your first outbound call with the Edesy Voice API in about five minutes using cURL - one request that speaks a message, plus a status callback.

1 min read

Once you have a number and an API key, your first call is one cURL request: send from, to and text, and Edesy calls the number and speaks the text. This page takes about five minutes. Buying a number needs approved KYC first, which takes about 24 hours, so start that early.

Before you start#

You need How to get it
An Edesy number you own (the from) Numbers page in voice-app.edesy.in. See Search and Buy
Wallet balance Billing page. Calls are refused with 402 when the wallet is too low
An API key (sk_...) API Keys page. See Authentication
export EDESY_KEY="sk_your_api_key_here"

1. Place a call that speaks a message#

curl -X POST https://voice-api.edesy.in/v1/calls \
  -H "Authorization: Bearer $EDESY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+9180XXXXXXXX",
    "to":   "+9198XXXXXXXX",
    "text": "Hello! This is a test call from Edesy. Goodbye."
  }'

Response 201:

{
  "data": {
    "call_sid": "CA_6f1c2d3e-0000-4000-8000-000000000000",
    "sid": "CA_6f1c2d3e-0000-4000-8000-000000000000",
    "account_sid": "2b7e0a1c-0000-4000-8000-000000000000",
    "from": "+9180XXXXXXXX",
    "to": "+9198XXXXXXXX",
    "direction": "outbound-api",
    "status": "queued",
    "created_at": "2026-10-28T09:30:00Z"
  },
  "meta": { "request_id": "req_...", "timestamp": "2026-10-28T09:30:00Z" }
}

Your phone rings. When you answer, you hear the text. For Hindi, add "language": "hi-IN" and write the text in Hindi.

2. Check the call#

curl https://voice-api.edesy.in/v1/calls/CA_6f1c2d3e-0000-4000-8000-000000000000 \
  -H "Authorization: Bearer $EDESY_KEY"

After the call ends the response includes status, duration (seconds), price, hangup_cause, sip_response_code and call_outcome. See Call Events and Outcomes.

3. Get status callbacks#

Add status_callback to receive each lifecycle change on your server:

curl -X POST https://voice-api.edesy.in/v1/calls \
  -H "Authorization: Bearer $EDESY_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "+9180XXXXXXXX",
    "to":   "+9198XXXXXXXX",
    "text": "Your order has been shipped.",
    "status_callback": "https://example.com/edesy/status",
    "custom_parameters": { "order_id": "ORD-1042" }
  }'

Your endpoint receives a JSON POST with CallSid, CallStatus, Duration, HangupReason, CallOutcome and your custom_parameters under Custom. See Status Callbacks.

Next steps#

Was this page helpful?