---
title: "Använd dina egna nummer (VoIP, API)"
description: "Anslut Twilio, Telnyx, SignalWire, Vonage, Plivo eller någon annan SIP-trunk via SIP, importera telefonnumren du redan äger och låt ThunderPhone-röstagenter besvara och ringa samtal med dem."
---

Godkända ThunderPhone-nummer kan ringa utgående samtal och köra kampanjer. Om
du föredrar att använda nummer du äger via din egen VoIP-leverantör går den här guiden
igenom anslutningsflödet: **testa autentiseringsuppgifter → skapa anslutning
→ importera nummer → verifiera**.

<Note>
  I dashboarden finns en guidad version av hela det här flödet under
  **Anslutningar → VoIP** (`/dashboard/voip-connections`): först en väg för att
  ansluta befintliga konton (Twilio och Telnyx med API-nyckel; SignalWire,
  Vonage, Plivo och alla andra trunkar via det manuella SIP-formuläret med
  leverantörsspecifika steg och en AI-generator för installationsguider), och
  därefter en guidad konfiguration som öppnar ett nytt Telnyx-konto.
</Note>

## Leverantörer som stöds

| Leverantör | `provider`-id | Anteckningar |
|----------|---------------|-------|
| Twilio | `twilio` | Account SID + Auth Token; en anslutning per Twilio-konto eller underkonto (se [Twilio-underkonton](#twilio-subaccounts)) |
| Telnyx | `telnyx` | API-nyckel; guidad onboarding tillgänglig (`setup_method: guided_telnyx`) |
| SignalWire | `signalwire` | Ingen inbyggd leverantörsanslutning; anslut den som `manual` med SignalWire SIP-förinställningen |
| Vonage | `vonage` | Ingen inbyggd leverantörsanslutning; anslut den som `manual` med Vonage SIP-förinställningen |
| Manuell SIP | `manual` | Valfri SIP-trunk, inklusive SignalWire, Vonage och Plivo. Om du börjar från en av dessa leverantörsrutor i instrumentpanelen är anslutningen fortfarande `manual` och lagrar valet i `sip_config.preset` (`signalwire`, `vonage` eller `plivo`) |

## 1. Testa autentiseringsuppgifter

Innan du skapar en sparad VoIP-anslutning kontrollerar du leverantörens
autentiseringsuppgifter för att bekräfta att de fungerar. Detta returnerar ett
`verification_evidence_id` som du skickar till steget för att skapa anslutningen, så att
autentiseringsuppgifterna inte debiteras två gånger för testning.

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

Om någon kontroll misslyckas blir svarets `status` `fail` och `checks`
visar vilket steg som misslyckades. Åtgärda konfigurationen hos leverantören
(trunktilldelning, IP-tillåtelselista, auktorisering för utgående samtal) och försök igen.

## 2. Skapa anslutningen

Skicka `verification_evidence_id` som du nyss fick:

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

Svaret är ett [VoipConnection-objekt](/api-reference/voip-connections#connection-object)
med `status="connected"`. Autentiseringsuppgifter och andra hemliga anslutningsvärden lagras på serversidan och
returneras aldrig i klartext vid efterföljande GET-anrop — för att rotera dem kör du ett nytt
`test` och PATCH med det nya underlaget.

### Twilio-underkonton

En Twilio-anslutning är knuten till det enda Twilio-konto vars
Account SID och Auth Token den innehåller. Twilio lagrar telefonnummer och SIP-
trunkar i varje underkonto, så en anslutning som skapats med huvudkontot endast
kan se huvudkontots egna nummer, och en befintlig anslutning kan inte senare
växlas till ett annat underkonto.

För att nå nummer i underkonton skapar du en anslutning per
underkonto. Instrumentpanelen gör detta åt dig: när du ansluter ett huvudkonto
med aktiva underkonton listar installationsdialogrutan dem, du
markerar dem du vill använda, och ThunderPhone skapar en anslutning (och en
SIP-trunk) i var och en. Samma flöde är tillgängligt via API:t:

```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 innehåller en rad per underkonto med `status` som
`created`, `skipped` (redan anslutet) eller `failed`, samt ett `error`
som du kan agera på. Raderna är oberoende, så ett fel i ett underkonto
blockerar aldrig de andra, och ett `discovery_id` är giltigt i 30
minuter så att en misslyckad rad enkelt kan försöka igen. Underkontots token
hämtas från Twilio vid identifiering och lagras i den nya anslutningen;
de returneras aldrig av API:et. Varje ny anslutning importerar och
verifierar sedan nummer på exakt samma sätt som en anslutning du skapade manuellt.
Lägg till `"enable_transfers": true` för att även aktivera samtalsöverföringar för varje
ny anslutnings SIP-trunk. Ett fel där rapporteras i anslutningens
`test_result.transfer_enable_error` och gör inte att raden misslyckas.

## 3. Lista och importera nummer

Granska numren som är synliga för dina autentiseringsuppgifter och som inte redan
finns i en ThunderPhone-organisation:

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

Importera sedan de du vill 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"]}'
```

Varje import blir en [telefonnummerresurs](/api-reference/phone-numbers)
i din organisation med `number_type="voip"` och `status="provisioning"`.

## 4. Verifiera varje importerat nummer

Importen registrerar numret som *tillgängligt*; att faktiskt dirigera samtal
via det kräver verifiering. För leverantörsanslutningar (Twilio,
Telnyx) kontrolleras leverantörens inloggningsuppgifter och SIP-nåbarhet på nytt.
För en **manuell SIP**-anslutning försöker ThunderPhone först med ett loopback-självsamtal:
ThunderPhone genomför ett kort testsamtal *från* numret, *via* din SIP-
trunk, *tillbaka till samma nummer*. Om det inte verifierar den inkommande vägen
faller det tillbaka på ett kort testsamtal *från* numret, *via* din SIP-trunk,
*till* ett ThunderPhone-nummer. Dessa tester kontrollerar trunkens användarnamn,
lösenord, transport, utgående dirigering och inkommande leverans. Din operatör
debiterar dessa samtal som alla andra.

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

Vid lyckat resultat ändras `voip_verification_status` till `verified` och
numret får `status="active"`. Ett nummer i ditt eget Telnyx-konto
fortsätter att ta emot inkommande samtal om testsamtalet misslyckas eller om
utgående samtal ännu inte har konfigurerats: det får `status="active"` med
`voip_verification_status` inställt på `unverified`, och svaret förklarar
varför. Vid fel anger svaret
vad som misslyckades — för en manuell trunk är det operatörens SIP-svar, till
exempel *"avvisade ThunderPhones autentiseringsuppgifter (SIP 401)"* eller *"kunde
inte dirigera ett samtal (SIP 404)"* — åtgärda det (autentiseringsuppgifter,
tillåtna käll-IP-adresser, en saknad trunk-tilldelning i leverantörens
instrumentpanel) och ring igen.

För en tillåtslistad manuell SIP-anslutning misslyckas testet av inkommande samtal också om
dessa tillåtna käll-IP-adresser skulle blockera ett verkligt inkommande samtal.

## 5. Tilldela agenter och ta emot ett samtal

När numret har verifierats tilldelar du röstagent för inkommande / utgående
samtal på samma sätt som för ett ThunderPhone-nummer. Se
[Hantera inkommande samtal](/sv/guides/handle-inbound-calls) och
[Ring utgående samtal](/sv/guides/place-outbound-calls).

## Roterande autentiseringsuppgifter

När en leverantörsnyckel roteras kör du test-och-uppdatera-flödet igen:

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

Anslutningen ligger kvar — du behöver inte importera numren på nytt.

---

## Nästa steg

<CardGroup cols={2}>
  <Card title="Referens för VoIP-anslutningar" icon="phone-volume" href="/api-reference/voip-connections">
    Varje fält i svaren för anslutning, bevis och import.
  </Card>
  <Card title="Referens för telefonnummer" icon="phone" href="/api-reference/phone-numbers">
    Tilldela agenter, överför mellan organisationer, frigör nummer.
  </Card>
  <Card title="Ring utgående samtal" icon="arrow-up-right" href="/sv/guides/place-outbound-calls">
    Nu när du äger numret kan du börja ringa utgående samtal.
  </Card>
</CardGroup>
