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

# Gebruik je eigen nummers (VoIP, API)

> Koppel Twilio of Telnyx — of een willekeurige SIP-trunk — en importeer telefoonnummers uit je bestaande account.

Demonummers zijn prima voor prototyping, maar productieoproepen moeten
nummers gebruiken die je via je eigen VoIP-provider bezit. Deze gids leidt
je door de workflow in drie stappen: **inloggegevens testen → verbinding
maken → nummers importeren → verifiëren**.

<Note>
  Het dashboard heeft een begeleide versie van deze volledige workflow onder
  **Verbindingen → VoIP** (`/dashboard/voip-connections`): een begeleide
  Telnyx-configuratie die je door het aanmaken van een account en API-sleutels
  leidt, een optie om een bestaand account te verbinden en een handmatig
  SIP-formulier met een AI-generator voor configuratiehandleidingen.
</Note>

## Ondersteunde providers

| Provider       | `provider` id | Opmerkingen                                                                   |
| -------------- | ------------- | ----------------------------------------------------------------------------- |
| Twilio         | `twilio`      | API-sleutel + geheim                                                          |
| Telnyx         | `telnyx`      | API-sleutel; begeleide onboarding beschikbaar (`setup_method: guided_telnyx`) |
| SignalWire     | `signalwire`  | **Binnenkort beschikbaar** — verbind vandaag via Handmatige SIP               |
| Vonage         | `vonage`      | **Binnenkort beschikbaar** — verbind vandaag via Handmatige SIP               |
| Handmatige SIP | `manual`      | Elke SIP-trunk — gebruik je eigen configuratie                                |

## 1. Inloggegevens testen

Voordat je een opgeslagen VoIP-verbinding maakt, test je de
inloggegevens van de provider om te bevestigen dat ze werken. Dit retourneert
een `verification_evidence_id` die je aan de maakstap doorgeeft, zodat er
geen dubbele kosten voor het testen van de inloggegevens worden berekend.

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

Als een controle mislukt, is de `status` van het antwoord `fail` en toont
`checks` welke stap is mislukt. Los de configuratie bij de provider op
(trunktoewijzing, IP-allowlist, uitgaande autorisatie) en probeer opnieuw.

## 2. De verbinding maken

Geef de `verification_evidence_id` door die je zojuist hebt ontvangen:

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

Het antwoord is een [VoipConnection-object](/api-reference/voip-connections#connection-object)
met `status="connected"`. Inloggegevens worden server-side opgeslagen en
worden nooit als platte tekst teruggegeven door latere GET-aanvragen — voer
om ze te vernieuwen een nieuwe `test` uit en gebruik PATCH met het nieuwe
bewijs.

## 3. Nummers weergeven en importeren

Bekijk de nummers die beschikbaar zijn voor je inloggegevens en nog niet
in een ThunderPhone-organisatie staan:

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

Importeer vervolgens de nummers die je wilt:

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

Elke import wordt een [telefoonnummerresource](/api-reference/phone-numbers)
in je organisatie met `source="voip"` en `status="provisioning"`.

## 4. Verifieer elk geïmporteerd nummer

Importeren registreert het nummer als *beschikbaar*; oproepen er daadwerkelijk
via routeren vereist verificatie in twee richtingen (controle van inkomend inbellen +
autorisatiecontrole voor uitgaande oproepen).

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

Bij succes verandert `voip_verification_status` in `verified` en krijgt het
nummer `status="active"`. Bij een fout vermeldt het antwoord precies
wat er is mislukt — los dit op (vaak een ontbrekende trunktoewijzing in het
providerdashboard) en roep de endpoint opnieuw aan.

## 5. Wijs agenten toe en neem een oproep aan

Nadat het nummer is geverifieerd, wijs je inkomende / uitgaande agenten op
dezelfde manier toe als bij een demonummer. Zie
[Inkomende oproepen afhandelen](/nl/guides/handle-inbound-calls) en
[Uitgaande oproepen plaatsen](/nl/guides/place-outbound-calls).

## Credentials roteren

Wanneer een providersleutel roteert, voer je de test-en-updateprocedure opnieuw uit:

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

De verbinding blijft bestaan — je hoeft nummers niet opnieuw te importeren.

***

## Volgende stappen

<CardGroup cols={2}>
  <Card title="Referentie voor VoIP-verbindingen" icon="phone-volume" href="/api-reference/voip-connections">
    Elk veld in de antwoorden voor verbindingen, verificatiebewijzen en importen.
  </Card>

  <Card title="Referentie voor telefoonnummers" icon="phone" href="/api-reference/phone-numbers">
    Wijs agenten toe, draag over tussen organisaties, geef nummers vrij.
  </Card>

  <Card title="Uitgaande oproepen plaatsen" icon="arrow-up-right" href="/nl/guides/place-outbound-calls">
    Nu je eigenaar bent van het nummer, kun je uitgaande oproepen plaatsen.
  </Card>
</CardGroup>
