# Quick Start

> Provision an Indian DID, register it for outbound over VoiceLink, connect your voice agent, and place a test call — end to end with real curl examples.

Source: https://edesy.in/docs/sip-trunk-for-ai-voice-agents/getting-started/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](https://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](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/getting-started/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.

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

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

```bash
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](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/api-reference/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](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/sip-termination-trunk)
- **WebSocket audio streaming** (custom agents) — [connect via WebSocket](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/websocket-streaming)
- **BYOC** (your own carrier) — [connect your trunk](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/connect/byoc)

## 5. Make a test outbound call

Once the number is carrier-registered, originate a call with it as the caller-ID over VoiceLink:

```bash
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](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/api-reference/calls).

## Next

- [Authentication](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/getting-started/authentication)
- [Phone Numbers](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/api-reference/phone-numbers) — carrier registration and inbound binding
- [API Reference](https://edesy.in/docs/sip-trunk-for-ai-voice-agents/api-reference)
