---
title: "Підключайте власні номери (VoIP, API)"
description: "Підключіть Twilio, Telnyx, SignalWire, Vonage, Plivo або будь-який інший SIP-транк через SIP, імпортуйте номери телефонів, якими ви вже володієте, і дозвольте агентам ThunderPhone відповідати на дзвінки та здійснювати їх із цих номерів."
---

Схвалені номери ThunderPhone можуть здійснювати вихідні дзвінки та запускати кампанії. Якщо
ви надаєте перевагу використанню власних номерів через власного VoIP-провайдера, цей посібник
проведе вас через процес підключення: **перевірте облікові дані → створіть підключення
→ імпортуйте номери → підтвердьте**.

<Note>
  У панелі керування доступна покрокова версія всього цього процесу в розділі
  **Підключення → VoIP** (`/dashboard/voip-connections`): спочатку шлях
  підключення наявного провайдера (Twilio і Telnyx за ключем API; SignalWire,
  Vonage, Plivo та будь-який інший транк через ручну форму SIP із
  кроками для конкретного провайдера та генератором посібника з налаштування ШІ), а потім
  покрокове налаштування, яке відкриває новий обліковий запис Telnyx.
</Note>

## Підтримувані провайдери

| Провайдер | ідентифікатор `provider` | Примітки |
|----------|---------------|-------|
| Twilio | `twilio` | SID облікового запису + Auth Token; одне підключення на обліковий запис або субобліковий запис Twilio (див. [субоблікові записи Twilio](#twilio-subaccounts)) |
| Telnyx | `telnyx` | Ключ API; доступне кероване налаштування (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire` | Немає нативного підключення провайдера; підключіть як `manual` із попереднім налаштуванням SignalWire SIP |
| Vonage | `vonage` | Немає нативного підключення провайдера; підключіть як `manual` із попереднім налаштуванням Vonage SIP |
| Ручне SIP-підключення | `manual` | Будь-який SIP-транк, зокрема SignalWire, Vonage і Plivo. Якщо почати з однієї з плиток цих провайдерів на панелі керування, підключення все одно буде `manual` і збереже вибір у `sip_config.preset` (`signalwire`, `vonage` або `plivo`) |

## 1. Перевірте облікові дані

Перш ніж створювати постійне VoIP-підключення, перевірте облікові дані
провайдера, щоб підтвердити їхню працездатність. У відповідь повертається
`verification_evidence_id`, який потрібно передати на етапі створення, щоб
за перевірку облікових даних не стягувалася плата двічі.

```bash
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
{
  "status": "pass",
  "verification_evidence_id": "b9a2...",
  "suggested_connection_name": "Telnyx: Acme Main (+15550001234)",
  "checks": {
    "credentials_valid": true,
    "inbound_reachable": true,
    "outbound_authorized": true
  }
}
```

Якщо будь-яка перевірка не пройде, значення `status` у відповіді буде `fail`, а `checks`
покаже, на якому етапі сталася помилка. Виправте конфігурацію на боці провайдера
(призначення транка, список дозволених IP-адрес, авторизація вихідних дзвінків) і повторіть спробу.

## 2. Створіть підключення

Передайте щойно отриманий `verification_evidence_id`:

```bash
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..."
  }'
```

Відповідь містить [об’єкт VoipConnection](/api-reference/voip-connections#connection-object)
зі значенням `status="connected"`. Облікові дані зберігаються на сервері й ніколи
не повертаються у відкритому вигляді в подальших GET-запитах — щоб оновити їх, виконайте новий
`test` і PATCH із новими даними перевірки.

### Субакаунти Twilio

Підключення Twilio прив’язане до одного облікового запису Twilio, чиї
Account SID та Auth Token воно містить. Twilio зберігає номери телефонів і SIP
транки в межах кожного субакаунта, тому підключення, створене за допомогою
батьківського облікового запису, бачить лише власні номери батьківського облікового запису, а наявне
підключення не можна пізніше перемкнути на інший субакаунт.

Щоб отримати доступ до номерів у субакаунтах, створіть по одному підключенню для кожного
субакаунта. Панель керування зробить це за вас: коли ви підключаєте батьківський
акаунт з активними субакаунтами, у діалоговому вікні налаштування відображається їх список, ви
позначаєте потрібні, і ThunderPhone створює підключення (і
SIP-транк) у кожному з них. Такий самий процес доступний через API:

```bash
# Discover active subaccounts visible to the parent credentials
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"credentials": {"accountSid": "ACparent...", "authToken": "..."}}'
```

```json Response
{
  "discovery_id": "7c1e...",
  "parent": { "sid": "ACparent...", "friendly_name": "Acme" },
  "subaccounts": [
    { "sid": "ACsupport...", "friendly_name": "Acme Support", "already_connected": false, "connection_id": null },
    { "sid": "ACsales...",   "friendly_name": "Acme Sales",   "already_connected": true,  "connection_id": 5 }
  ]
}
```

```bash
# Create a connection for each selected subaccount
curl -X POST https://api.thunderphone.com/v1/voip-connections/twilio/subaccounts/connect \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"discovery_id": "7c1e...", "subaccount_sids": ["ACsupport..."]}'
```

Відповідь містить по одному рядку для кожного субакаунта зі значенням `status`
`created`, `skipped` (уже підключено) або `failed`, а також `error`,
яку можна опрацювати. Рядки незалежні, тому збій в одному субакаунті
ніколи не блокує інші, а `discovery_id` залишається дійсним протягом 30
хвилин, тож рядок зі збоєм можна просто повторити. Токени субакаунтів
зчитуються з Twilio під час виявлення та зберігаються в новому підключенні;
вони ніколи не повертаються API. Кожне нове підключення потім імпортує
та перевіряє номери так само, як підключення, створене вручну.
Додайте `"enable_transfers": true`, щоб також увімкнути переадресацію викликів для SIP-транку
кожного нового підключення; збій під час цього буде зазначено в
`test_result.transfer_enable_error` цього підключення та не призведе до збою рядка.

## 3. Перегляньте та імпортуйте номери

Перегляньте номери, доступні вашим обліковим даним, які ще не належать
організації ThunderPhone:

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

Потім імпортуйте потрібні:

```bash
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"]}'
```

Кожен імпорт стає [ресурсом телефонного номера](/api-reference/phone-numbers)
у вашій організації з `number_type="voip"` і `status="provisioning"`.

## 4. Перевірте кожен імпортований номер

Імпорт реєструє номер як *доступний*; фактична маршрутизація викликів
через нього потребує верифікації. Для підключень до провайдерів (Twilio,
Telnyx) вона повторно перевіряє облікові дані провайдера та доступність SIP.
Для підключення **ручного SIP** спочатку виконується петльовий самовиклик:
ThunderPhone здійснює короткий тестовий виклик *з* номера, *через* вашу SIP-лінію
*назад на той самий номер*. Якщо це не перевіряє вхідний маршрут, система
переходить до короткого тестового виклику *з* номера, *через* вашу SIP-лінію,
*на* номер ThunderPhone. Ці тести перевіряють ім’я користувача лінії,
пароль, транспорт, вихідну маршрутизацію та доставку вхідних викликів. Ваш оператор
тарифікує ці виклики так само, як і будь-які інші.

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

У разі успіху `voip_verification_status` змінюється на `verified`, а номер отримує `status="active"`. Номер у вашому обліковому записі Telnyx і надалі приймає вхідні дзвінки, якщо його тестовий виклик не вдався або вихідні дзвінки ще не налаштовано: він отримує `status="active"` зі значенням `voip_verification_status`
`unverified`, а відповідь пояснює причину. У разі невдачі відповідь детально вказує,
що саме не спрацювало — для ручного транку це SIP-відповідь оператора, наприклад *«відхилено облікові дані ThunderPhone (SIP 401)»* або *«не вдалося маршрутизувати дзвінок (SIP 404)»* — виправте проблему (облікові дані, дозволені IP-адреси джерела, відсутнє призначення транку в панелі керування провайдера) і повторіть виклик.

Для ручного SIP-підключення зі списком дозволених адрес тест вхідного виклику також не проходить, якщо
ці дозволені IP-адреси джерел блокуватимуть реальний вхідний виклик.

## 5. Призначте агентів і прийміть дзвінок

Після перевірки номера призначайте агентів для вхідних і вихідних дзвінків
так само, як для номера ThunderPhone. Дивіться
[Обробка вхідних дзвінків](/uk/guides/handle-inbound-calls) і
[Здійснення вихідних дзвінків](/uk/guides/place-outbound-calls).

## Оновлення облікових даних

Коли ключ провайдера змінюється, повторіть послідовність тестування та оновлення:

```bash
# 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"
  }'
```

Підключення залишається без змін — повторно імпортувати номери не потрібно.

---

## Наступні кроки

<CardGroup cols={2}>
  <Card title="Довідник підключень VoIP" icon="phone-volume" href="/api-reference/voip-connections">
    Усі поля у відповідях про підключення, підтвердження та імпорт.
  </Card>
  <Card title="Довідник телефонних номерів" icon="phone" href="/api-reference/phone-numbers">
    Призначайте агентів, передавайте між організаціями, вивільняйте номери.
  </Card>
  <Card title="Здійснення вихідних дзвінків" icon="arrow-up-right" href="/uk/guides/place-outbound-calls">
    Тепер, коли номер належить вам, почніть здійснювати вихідні дзвінки.
  </Card>
</CardGroup>
