# 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.

Source: https://edesy.in/docs/voice-api/getting-started/quick-start

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](https://voice-app.edesy.in). See [Search and Buy](https://edesy.in/docs/voice-api/phone-numbers/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](https://edesy.in/docs/voice-api/getting-started/authentication) |

```bash
export EDESY_KEY="sk_your_api_key_here"
```

## 1. Place a call that speaks a message

```bash
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`:

```json
{
  "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

```bash
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](https://edesy.in/docs/voice-api/calls/call-events-and-outcomes).

## 3. Get status callbacks

Add `status_callback` to receive each lifecycle change on your server:

```bash
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](https://edesy.in/docs/voice-api/calls/status-callbacks).

## Next steps

- Control the call from your server with an answer URL that returns VoiceML: [Make a Call](https://edesy.in/docs/voice-api/calls/make-a-call) and [VoiceML Reference](https://edesy.in/docs/voice-api/calls/voiceml).
- Connect an AI bot: [Media Streams](https://edesy.in/docs/voice-api/streaming/media-streams) or [Conversation Relay](https://edesy.in/docs/voice-api/streaming/conversation-relay).
- Answer inbound calls: [Inbound Routing](https://edesy.in/docs/voice-api/phone-numbers/inbound-routing).
