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

# Użyj własnych numerów (VoIP, API)

> Połącz Twilio lub Telnyx — albo dowolny trunk SIP — i zaimportuj numery telefonów z istniejącego konta.

Numery demonstracyjne są wystarczające do prototypowania, ale ruch produkcyjny powinien
korzystać z numerów należących do Ciebie, obsługiwanych przez własnego dostawcę VoIP. Ten przewodnik przedstawia
trzyetapowy proces: **testowanie poświadczeń → utworzenie
połączenia → import numerów → weryfikacja**.

<Note>
  Panel zawiera wersję z przewodnikiem dla całego tego procesu w sekcji
  **Połączenia → VoIP** (`/dashboard/voip-connections`): konfigurację Telnyx
  z przewodnikiem obejmującą tworzenie konta i klucze API, ścieżkę
  połączenia istniejącego konta oraz ręczny formularz SIP z generatorem
  przewodnika konfiguracji AI.
</Note>

## Obsługiwani dostawcy

| Dostawca   | Identyfikator `provider` | Uwagi                                                                         |
| ---------- | ------------------------ | ----------------------------------------------------------------------------- |
| Twilio     | `twilio`                 | Klucz API + sekret                                                            |
| Telnyx     | `telnyx`                 | Klucz API; dostępne wdrożenie z przewodnikiem (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire`             | **Wkrótce** — obecnie połącz przez ręczny SIP                                 |
| Vonage     | `vonage`                 | **Wkrótce** — obecnie połącz przez ręczny SIP                                 |
| Ręczny SIP | `manual`                 | Dowolny trunk SIP — użyj własnej konfiguracji                                 |

## 1. Testowanie poświadczeń

Przed utworzeniem trwałego połączenia VoIP sprawdź poświadczenia
dostawcy, aby potwierdzić, że działają. Zwraca to
`verification_evidence_id`, który przekazujesz do kroku tworzenia, aby
poświadczenia nie zostały podwójnie obciążone za testowanie.

```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
  }
}
```

Jeśli którekolwiek sprawdzenie się nie powiedzie, wartość `status` w odpowiedzi będzie wynosić `fail`, a `checks`
pokaże, który etap zakończył się niepowodzeniem. Popraw konfigurację po stronie dostawcy (przypisanie
trunku, lista dozwolonych adresów IP, autoryzacja połączeń wychodzących) i spróbuj ponownie.

## 2. Utwórz połączenie

Przekaż otrzymany przed chwilą `verification_evidence_id`:

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

Odpowiedź to [obiekt VoipConnection](/api-reference/voip-connections#connection-object)
ze stanem `status="connected"`. Poświadczenia są przechowywane po stronie serwera i nigdy
nie są zwracane w postaci zwykłego tekstu przez kolejne żądania GET — aby je zmienić, wykonaj nowe
`test` i PATCH z nowym potwierdzeniem.

## 3. Wyświetl listę i zaimportuj numery

Sprawdź numery widoczne dla Twoich poświadczeń, które nie znajdują się jeszcze
w organizacji ThunderPhone:

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

Następnie zaimportuj wybrane numery:

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

Każdy import staje się [zasobem numeru telefonu](/api-reference/phone-numbers)
w Twojej organizacji z `source="voip"` i `status="provisioning"`.

## 4. Zweryfikuj każdy zaimportowany numer

Importowanie rejestruje numer jako *dostępny*; faktyczne kierowanie przez niego połączeń
wymaga weryfikacji w obie strony (kontrola połączenia przychodzącego +
test autoryzacji połączeń wychodzących).

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

Po powodzeniu `voip_verification_status` zmienia się na `verified`, a
numer otrzymuje `status="active"`. W przypadku niepowodzenia odpowiedź określa,
co nie zadziałało — popraw to (często jest to brak przypisania trunku w
panelu dostawcy) i wywołaj ponownie.

## 5. Przypisz agentów i wykonaj połączenie

Po zweryfikowaniu numeru przypisujesz agentów połączeń przychodzących / wychodzących
tak samo jak do numeru demonstracyjnego. Zobacz
[Obsługa połączeń przychodzących](/pl/guides/handle-inbound-calls) i
[Wykonywanie połączeń wychodzących](/pl/guides/place-outbound-calls).

## Rotacja danych uwierzytelniających

Gdy klucz dostawcy zostanie zmieniony, ponownie wykonaj proces testowania, a następnie aktualizacji:

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

Połączenie pozostaje na miejscu — nie musisz ponownie importować numerów.

***

## Kolejne kroki

<CardGroup cols={2}>
  <Card title="Dokumentacja połączeń VoIP" icon="phone-volume" href="/api-reference/voip-connections">
    Każde pole w odpowiedziach dotyczących połączenia, dowodów i importu.
  </Card>

  <Card title="Dokumentacja numerów telefonów" icon="phone" href="/api-reference/phone-numbers">
    Przypisuj agentów, przenoś między organizacjami, zwalniaj numery.
  </Card>

  <Card title="Wykonywanie połączeń wychodzących" icon="arrow-up-right" href="/pl/guides/place-outbound-calls">
    Teraz, gdy masz numer, zacznij wykonywać połączenia wychodzące.
  </Card>
</CardGroup>
