> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thunderphone.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bawa nomor Anda sendiri (VoIP, API)

> Hubungkan Twilio atau Telnyx — atau trunk SIP apa pun — dan impor nomor telepon dari akun Anda yang sudah ada.

Nomor demo cocok untuk pembuatan prototipe, tetapi trafik produksi harus
menggunakan nomor yang Anda miliki melalui penyedia VoIP Anda sendiri. Panduan ini menjelaskan
alur tiga langkah: **uji kredensial → buat
koneksi → impor nomor → verifikasi**.

<Note>
  Dasbor memiliki versi terpandu untuk seluruh alur ini di
  **Koneksi → VoIP** (`/dashboard/voip-connections`): penyiapan terpandu Telnyx
  yang memandu pembuatan akun dan kunci API, jalur untuk
  menghubungkan akun yang sudah ada, serta formulir SIP manual dengan generator
  panduan penyiapan AI.
</Note>

## Penyedia yang didukung

| Penyedia   | id `provider` | Catatan                                                                 |
| ---------- | ------------- | ----------------------------------------------------------------------- |
| Twilio     | `twilio`      | Kunci API + rahasia                                                     |
| Telnyx     | `telnyx`      | Kunci API; onboarding terpandu tersedia (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire`  | **Segera hadir** — hubungkan melalui SIP Manual saat ini                |
| Vonage     | `vonage`      | **Segera hadir** — hubungkan melalui SIP Manual saat ini                |
| SIP Manual | `manual`      | Trunk SIP apa pun — gunakan konfigurasi Anda sendiri                    |

## 1. Uji kredensial

Sebelum membuat koneksi VoIP yang tersimpan, periksa kredensial
penyedia untuk mengonfirmasi bahwa kredensial tersebut berfungsi. Langkah ini mengembalikan
`verification_evidence_id` yang Anda teruskan ke langkah pembuatan agar
kredensial tidak dikenai biaya dua kali untuk pengujian.

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/voip-connections/test \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "provider":    "telnyx",
    "credentials": { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":  { "domain": "acme.sip.telnyx.com" }
  }'
```

```json Response theme={null}
{
  "status": "pass",
  "verification_evidence_id": "b9a2...",
  "suggested_connection_name": "Telnyx: Acme Main (+15550001234)",
  "checks": {
    "credentials_valid": true,
    "inbound_reachable": true,
    "outbound_authorized": true
  }
}
```

Jika salah satu pemeriksaan gagal, `status` respons akan menjadi `fail` dan `checks` akan
menunjukkan langkah yang bermasalah. Perbaiki konfigurasi di sisi penyedia (penetapan trunk,
daftar izin IP, otorisasi panggilan keluar), lalu coba lagi.

## 2. Buat koneksi

Teruskan `verification_evidence_id` yang baru saja Anda dapatkan:

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/voip-connections \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":         "Acme Telnyx Main",
    "provider":     "telnyx",
    "setup_method": "api_key",
    "credentials":  { "apiKey": "KEY...", "connectionId": "123456" },
    "sip_config":   { "domain": "acme.sip.telnyx.com" },
    "verification_evidence_id": "b9a2..."
  }'
```

Responsnya adalah [objek VoipConnection](/api-reference/voip-connections#connection-object)
dengan `status="connected"`. Kredensial disimpan di sisi server dan tidak pernah
dikembalikan dalam teks biasa oleh GET berikutnya — untuk merotasi, jalankan
`test` baru dan PATCH dengan bukti baru.

## 3. Cantumkan dan impor nomor

Periksa nomor yang terlihat oleh kredensial Anda dan belum ada
di organisasi ThunderPhone:

```bash theme={null}
curl https://api.thunderphone.com/v1/voip-connections/5/available-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Kemudian impor nomor yang Anda inginkan:

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/voip-connections/5/import-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"numbers": ["+15550001234", "+15550009999"]}'
```

Setiap impor menjadi [sumber daya nomor telepon](/api-reference/phone-numbers)
di organisasi Anda dengan `source="voip"` dan `status="provisioning"`.

## 4. Verifikasi setiap nomor yang diimpor

Pengimporan mendaftarkan nomor sebagai *tersedia*; untuk benar-benar merutekan panggilan
melaluinya, diperlukan verifikasi pulang-pergi (pemeriksaan panggilan masuk +
uji otorisasi panggilan keluar).

```bash theme={null}
curl -X POST https://api.thunderphone.com/v1/phone-numbers/{id}/verify-voip \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Jika berhasil, `voip_verification_status` berubah menjadi `verified` dan
nomor memasuki `status="active"`. Jika gagal, respons menjelaskan
apa yang gagal — perbaiki (sering kali penetapan trunk yang belum ada di
dasbor penyedia) lalu panggil kembali.

## 5. Tetapkan agen dan terima panggilan

Setelah nomor diverifikasi, Anda menetapkan agen panggilan masuk / keluar dengan
cara yang sama seperti nomor demo. Lihat
[Tangani panggilan masuk](/id/guides/handle-inbound-calls) dan
[Lakukan panggilan keluar](/id/guides/place-outbound-calls).

## Merotasi kredensial

Saat kunci penyedia dirotasi, jalankan kembali alur uji-lalu-perbarui:

```bash theme={null}
# 1. Test the new credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/test ...

# 2. PATCH the connection with the new evidence
curl -X PATCH https://api.thunderphone.com/v1/voip-connections/{id} \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "credentials": { "apiKey": "NEW_KEY..." },
    "verification_evidence_id": "fresh-evidence-id"
  }'
```

Koneksi tetap tersedia — Anda tidak perlu mengimpor ulang nomor.

***

## Langkah selanjutnya

<CardGroup cols={2}>
  <Card title="Referensi koneksi VoIP" icon="phone-volume" href="/api-reference/voip-connections">
    Setiap kolom pada respons koneksi, bukti, dan impor.
  </Card>

  <Card title="Referensi nomor telepon" icon="phone" href="/api-reference/phone-numbers">
    Tetapkan agen, transfer antarorganisasi, lepaskan nomor.
  </Card>

  <Card title="Lakukan panggilan keluar" icon="arrow-up-right" href="/id/guides/place-outbound-calls">
    Setelah Anda memiliki nomor tersebut, mulai lakukan panggilan keluar.
  </Card>
</CardGroup>
