---
title: "Bruk dine egne numre (VoIP, API)"
description: "Koble til Twilio eller Telnyx, eller SignalWire, Vonage, Plivo og enhver annen SIP-trunk via SIP, importer telefonnumrene du allerede eier, og la ThunderPhone-stemmeagenter besvare og foreta samtaler med dem."
---

Godkjente ThunderPhone-numre kan ringe utgående samtaler og kjøre kampanjer. Hvis
du foretrekker å bruke numre du eier gjennom din egen VoIP-leverandør, veileder denne guiden
deg gjennom tilkoblingsflyten: **test legitimasjon → opprett tilkobling
→ importer numre → verifiser**.

<Note>
  Dashbordet har en veiledet versjon av hele denne prosessen under
  **Tilkoblinger → VoIP** (`/dashboard/voip-connections`): først en
  koble til eksisterende-løsning (Twilio og Telnyx med API-nøkkel; SignalWire,
  Vonage, Plivo og enhver annen trunk via det manuelle SIP-skjemaet med
  leverandørspesifikke trinn og en KI-generator for oppsettsveiledninger), og
  deretter et veiledet oppsett som åpner en ny Telnyx-konto.
</Note>

## Støttede leverandører

| Leverandør | `provider`-ID | Merknader |
|----------|---------------|-------|
| Twilio | `twilio` | Account SID + Auth Token; én tilkobling per Twilio-konto eller underkonto (se [Twilio-underkontoer](#twilio-subaccounts)) |
| Telnyx | `telnyx` | API-nøkkel; veiledet oppsett tilgjengelig (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire` | Ingen innebygd leverandørtilkobling; koble den til som `manual` med SignalWire SIP-forhåndsinnstillingen |
| Vonage | `vonage` | Ingen innebygd leverandørtilkobling; koble den til som `manual` med Vonage SIP-forhåndsinnstillingen |
| Manuell SIP | `manual` | Enhver SIP-trunk, inkludert SignalWire, Vonage og Plivo. Hvis du starter fra en av disse leverandørflisene i dashbordet, er tilkoblingen fortsatt `manual` og lagrer valget i `sip_config.preset` (`signalwire`, `vonage` eller `plivo`) |

## 1. Test legitimasjon

Før du oppretter en lagret VoIP-tilkobling, test leverandørens
legitimasjon for å bekrefte at den fungerer. Dette returnerer en
`verification_evidence_id` som du sender til opprettelsestrinnet, slik at
legitimasjonen ikke blir belastet to ganger for testing.

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

Hvis en kontroll feiler, blir responsens `status` `fail`, og `checks`
viser hvilket trinn som feilet. Rett opp konfigurasjonen hos leverandøren (tildeling av
trunk, IP-tillatelsesliste, autorisasjon for utgående samtaler), og prøv på nytt.

## 2. Opprett tilkoblingen

Send `verification_evidence_id` du nettopp fikk:

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

Responsen er et [VoipConnection-objekt](/api-reference/voip-connections#connection-object)
med `status="connected"`. Legitimasjon lagres på serversiden og returneres aldri
i klartekst av påfølgende GET-kall — for å rotere den, kjør en ny
`test` og PATCH med den nye dokumentasjonen.

### Twilio-underkontoer

En Twilio-tilkobling er knyttet til den ene Twilio-kontoen den har
Account SID og Auth Token for. Twilio lagrer telefonnumre og SIP-trunker
i hver underkonto, så en tilkobling som er opprettet med hovedkontoen,
bare ser hovedkontoens egne numre, og en eksisterende tilkobling kan
ikke senere byttes til en annen underkonto.

For å få tilgang til numre i underkontoer oppretter du én tilkobling per
underkonto. Kontrollpanelet gjør dette for deg: Når du kobler til en
foreldrekonto med aktive underkontoer, viser oppsettsdialogen dem. Du krysser
av for dem du vil ha, og ThunderPhone oppretter en tilkobling (og en
SIP-trunk) i hver av dem. Den samme flyten er tilgjengelig via API-et:

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

Svaret inneholder én rad per underkonto med `status` lik
`created`, `skipped` (allerede tilkoblet) eller `failed`, samt en `error`
du kan handle på. Radene er uavhengige, så en feil i én underkonto
blokkerer aldri de andre, og en `discovery_id` er gyldig i 30
minutter, slik at en mislykket rad enkelt kan prøves på nytt. Tokenene for underkontoer
leses fra Twilio på oppdagelsestidspunktet og lagres i den nye tilkoblingen;
de returneres aldri av API-et. Hver nye tilkobling importerer og
verifiserer deretter numre på nøyaktig samme måte som en tilkobling du opprettet manuelt.
Legg til `"enable_transfers": true` for også å aktivere viderekobling av samtaler for hver
nye tilkoblings SIP-trunk; en feil der rapporteres i den
tilkoblingens `test_result.transfer_enable_error` og gjør ikke at raden mislykkes.

## 3. List opp og importer numre

Se gjennom numrene som er synlige for legitimasjonen din, og som ikke allerede
er i en ThunderPhone-organisasjon:

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

Importer deretter dem du vil ha:

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

Hver import blir en [telefonnummerressurs](/api-reference/phone-numbers)
i organisasjonen din med `number_type="voip"` og `status="provisioning"`.

## 4. Verifiser hvert importerte nummer

Import registrerer nummeret som *tilgjengelig*; for å faktisk rute samtaler
gjennom det kreves verifisering. For leverandørtilkoblinger (Twilio,
Telnyx) kontrolleres leverandørlegitimasjonen og SIP-tilgjengeligheten på nytt.
For en **manuell SIP**-tilkobling prøves først et selvoppringingsanrop i sløyfe:
ThunderPhone foretar et kort testanrop *fra* nummeret, *via* SIP-
trunken din, *tilbake til samme nummer*. Hvis det ikke verifiserer den innkommende ruten,
faller systemet tilbake til et kort testanrop *fra* nummeret, *via* SIP-trunken din,
*til* et ThunderPhone-nummer. Disse testene kontrollerer trunkens brukernavn,
passord, transport, utgående ruting og innkommende levering. Operatøren din
fakturerer disse samtalene som alle andre.

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

Ved vellykket verifisering endres `voip_verification_status` til `verified`, og
nummeret får `status="active"`. Et nummer i din egen Telnyx-konto
fortsetter å motta innkommende anrop når testanropet mislykkes eller utgående anrop
ikke er satt opp ennå: det får `status="active"` med `voip_verification_status`
satt til `unverified`, og svaret oppgir hvorfor. Ved feil forklarer svaret
hva som mislyktes — for en manuell trunk er det leverandørens SIP-svar, for
eksempel *"avviste ThunderPhones påloggingsopplysninger (SIP 401)"* eller *"kunne
ikke rute et anrop (SIP 404)"* — korriger det (påloggingsopplysninger, tillatte
kilde-IP-er, en manglende trunktilordning i leverandørens kontrollpanel) og prøv igjen.

For en manuell SIP-tilkobling med tillatelsesliste mislykkes testen for innkommende samtaler også hvis
disse tillatte kilde-IP-adressene ville blokkert en reell innkommende samtale.

## 5. Tilordne agenter og ta imot et anrop

Når nummeret er verifisert, tilordner du stemmeagenter for innkommende og
utgående samtaler på samme måte som for et ThunderPhone-nummer. Se
[Håndter innkommende samtaler](/nb/guides/handle-inbound-calls) og
[Foreta utgående samtaler](/nb/guides/place-outbound-calls).

## Roterende påloggingsopplysninger

Når en leverandørnøkkel roteres, kjører du test-deretter-oppdater-flyten på nytt:

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

Tilkoblingen forblir på plass — du trenger ikke importere numrene på nytt.

---

## Neste trinn

<CardGroup cols={2}>
  <Card title="Referanse for VoIP-tilkoblinger" icon="phone-volume" href="/api-reference/voip-connections">
    Alle felt i svarene for tilkobling, bevis og import.
  </Card>
  <Card title="Referanse for telefonnumre" icon="phone" href="/api-reference/phone-numbers">
    Tilordne agenter, overfør mellom organisasjoner, frigjør numre.
  </Card>
  <Card title="Foreta utgående samtaler" icon="arrow-up-right" href="/nb/guides/place-outbound-calls">
    Nå som du eier nummeret, kan du begynne å ringe ut.
  </Card>
</CardGroup>
