---
title: "Donesite vlastite brojeve (VoIP, API)"
description: "Povežite Twilio ili Telnyx — ili bilo koji SIP trunk — uvezite telefonske brojeve koje već posjedujete i omogućite glasovnim agentima ThunderPhonea da odgovaraju na pozive i upućuju pozive putem njih."
---

ThunderPhone brojevi pokrivaju dolazne pozive, ali za odlazne pozive i
kampanje potrebni su vam brojevi koje imate kod vlastitog VoIP pružatelja. Ovaj vas vodič vodi
kroz tijek u tri koraka: **testirajte vjerodajnice → izradite
vezu → uvezite brojeve → potvrdite**.

<Note>
  Nadzorna ploča ima vođenu verziju cijelog ovog tijeka u odjeljku
  **Veze → VoIP** (`/dashboard/voip-connections`): vođeno postavljanje za Telnyx
  koje vas vodi kroz izradu računa i API ključeve, put za
  povezivanje postojećeg računa te ručni SIP obrazac s generatorom
  vodiča za postavljanje AI-ja.
</Note>

## Podržani pružatelji

| Pružatelj | `provider` id | Napomene |
|----------|---------------|-------|
| Twilio | `twilio` | SID računa + autentifikacijski token; jedna veza po Twilio računu ili podračunu (pogledajte [Twilio podračune](#twilio-subaccounts)) |
| Telnyx | `telnyx` | API ključ; dostupno je vođeno uvođenje (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire` | **Uskoro** — danas se povežite putem ručnog SIP-a |
| Vonage | `vonage` | **Uskoro** — danas se povežite putem ručnog SIP-a |
| Ručni SIP | `manual` | Bilo koji SIP trunk — upotrijebite vlastitu konfiguraciju |

## 1. Testirajte vjerodajnice

Prije izrade trajno spremljene VoIP veze provjerite vjerodajnice
pružatelja kako biste potvrdili da rade. Time se vraća
`verification_evidence_id` koji prosljeđujete koraku izrade kako se
vjerodajnice ne bi dvostruko naplatile za testiranje.

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

Ako bilo koja provjera ne uspije, `status` odgovora bit će `fail`, a `checks` će
prikazati koji korak nije uspio. Ispravite konfiguraciju na strani pružatelja (dodjelu
trunka, popis dopuštenih IP adresa, autorizaciju odlaznih poziva) i pokušajte ponovno.

## 2. Stvorite vezu

Proslijedite `verification_evidence_id` koji ste upravo dobili:

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

Odgovor je objekt [VoipConnection](/api-reference/voip-connections#connection-object)
sa `status="connected"`. Vjerodajnice se pohranjuju na poslužitelju i nikada se
ne vraćaju u običnom tekstu u naknadnim GET zahtjevima — za rotaciju pokrenite novi
`test` i izvršite PATCH s novim dokazom.

### Twilio podračuni

Twilio veza povezana je s jednim Twilio računom čiji
Account SID i Auth Token sadrži. Twilio čuva telefonske brojeve i SIP
trunkove unutar svakog podračuna, pa veza uspostavljena s nadređenim
računom vidi samo vlastite brojeve nadređenog računa, a postojeća
veza ne može se kasnije prebaciti na drugi podračun (ažuriranje se
odbija jer se SIP trunk veze nalazi na izvornom računu).

Za pristup brojevima na podračunima stvorite jednu vezu po
podračunu. Nadzorna ploča to radi umjesto Vas: kada povežete nadređeni
račun s aktivnim podračunima, dijalog za postavljanje ih prikazuje, označite
one koje želite, a ThunderPhone stvara vezu (i
SIP trunk) u svakom od njih. Isti je tijek dostupan putem API-ja:

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

Odgovor sadrži jedan redak po podračunu sa `status` vrijednosti
`created`, `skipped` (već povezano) ili `failed`, uz `error`
prema kojoj možete postupiti. Redci su neovisni, pa neuspjeh na jednom podračunu
nikada ne blokira ostale, a `discovery_id` ostaje valjan 30
minuta, tako da možete jednostavno ponovno pokušati neuspjeli redak. Tokeni podračuna
čitaju se iz Twilioa tijekom otkrivanja i pohranjuju na novoj vezi;
API ih nikada ne vraća. Svaka nova veza zatim uvozi
i potvrđuje brojeve jednako kao veza koju ste stvorili ručno.

## 3. Prikažite i uvezite brojeve

Pregledajte brojeve vidljive Vašim vjerodajnicama koji još nisu
u ThunderPhone organizaciji:

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

Zatim uvezite one koje želite:

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

Svaki uvoz postaje [resurs telefonskog broja](/api-reference/phone-numbers)
u Vašoj organizaciji s `source="voip"` i `status="provisioning"`.

## 4. Potvrdite svaki uvezeni broj

Uvoz registrira broj kao *dostupan*; stvarno usmjeravanje poziva
putem njega zahtijeva potvrdu. Za veze s pružateljima usluga (Twilio,
Telnyx) to ponovno provjerava vjerodajnice pružatelja usluga i SIP dostupnost.
Za **ručno SIP** povezivanje uspostavlja kratki probni poziv (nekoliko
sekundi, automatski prekinut) *s* broja, *putem* vašeg SIP
trunka, *na* ThunderPhone broj — tako se stvarno potvrđuju korisničko ime,
lozinka, transport i odlazno usmjeravanje trunka. Vaš operater taj
poziv naplaćuje kao i svaki drugi.

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

Pri uspjehu se `voip_verification_status` mijenja u `verified`, a
broj prelazi u `status="active"`. Pri neuspjehu odgovor navodi
što nije uspjelo — za ručni trunk to je SIP odgovor operatera, na
primjer *"odbio je vjerodajnice za ThunderPhone (SIP 401)"* ili *"nije
moguće usmjeriti poziv (SIP 404)"* — ispravite problem (vjerodajnice,
dopuštene izvorne IP adrese, nedostajuću dodjelu trunka na nadzornoj ploči pružatelja usluga) i ponovno
pozovite.

## 5. Dodijelite agente i primite poziv

Nakon potvrde broja, dodjeljujete agente za dolazne / odlazne pozive na
isti način kao za ThunderPhone broj. Pogledajte
[Obrada dolaznih poziva](/hr/guides/handle-inbound-calls) i
[Upućivanje odlaznih poziva](/hr/guides/place-outbound-calls).

## Rotiranje vjerodajnica

Kada se ključ pružatelja usluga rotira, ponovno pokrenite postupak testiranja pa ažuriranja:

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

Veza ostaje na mjestu — nema potrebe ponovno uvoziti brojeve.

---

## Sljedeći koraci

<CardGroup cols={2}>
  <Card title="Referenca za VoIP veze" icon="phone-volume" href="/api-reference/voip-connections">
    Svako polje u odgovorima za vezu, dokaz i uvoz.
  </Card>
  <Card title="Referenca za telefonske brojeve" icon="phone" href="/api-reference/phone-numbers">
    Dodijelite agente, prenesite između organizacija, oslobodite brojeve.
  </Card>
  <Card title="Upućivanje odlaznih poziva" icon="arrow-up-right" href="/hr/guides/place-outbound-calls">
    Sada kada posjedujete broj, počnite upućivati odlazne pozive.
  </Card>
</CardGroup>
