---
title: "Snelstartgids (API)"
description: "Beantwoord je eerste telefoongesprek met een AI-agent: verkrijg een API-sleutel, maak een agent, richt een telefoonnummer in en voer een live testgesprek — allemaal via de REST API."
---

Deze handleiding leidt je door de vier REST-aanroepen die nodig zijn om
je eerste telefoongesprek met een AI-agent te beantwoorden.

<Info>
  Je hebt een [ThunderPhone-account](https://app.thunderphone.com) nodig.
  Registreren is gratis en duurt minder dan een minuut. Klik je liever dan dat je curl gebruikt?
  Met de [dashboard-snelstart](/nl/quickstart-dashboard) voer je hetzelfde
  eerste gesprek zonder code te schrijven.
</Info>

## Stap 1: Een API-sleutel ophalen

<Steps>
  <Step title="Inloggen">
    Open [app.thunderphone.com](https://app.thunderphone.com).
  </Step>
  <Step title="Naar Sleutels gaan">
    Ga in het dashboard naar **Organisatie → Sleutels**.
  </Step>
  <Step title="Een sleutel maken">
    Klik op **Sleutel maken**, geef de sleutel een naam en kopieer de
    waarde `sk_live_...`. De onbewerkte sleutel wordt **slechts één keer** weergegeven — sla deze
    direct op in je secretmanager.
  </Step>
</Steps>

<Tip>
  Loop je vast? [Een server-API-sleutel maken](/nl/guides/api-keys) legt
  deze procedure stap voor stap uit, en de copilot in de app kan
  elk bedieningselement live voor je uitlichten.
</Tip>

Vervang in deze handleiding `sk_live_YOUR_API_KEY` door de waarde die je
zojuist hebt gekopieerd. De sleutel identificeert je organisatie automatisch, dus
je hoeft nooit een organisatie-id in URL's op te nemen.

## Stap 2: Een agent maken

Een agent bepaalt hoe de AI gesprekken afhandelt — prompt, stem,
productpakket, tools en geschiktheid voor widgets.

<CodeGroup>
```bash cURL
curl -X POST https://api.thunderphone.com/v1/agents \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name":   "Customer Support",
    "prompt": "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
    "voice":  "john",
    "product": "spark"
  }'
```

```python Python
import os, requests

agent = requests.post(
    "https://api.thunderphone.com/v1/agents",
    headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
    json={
        "name":   "Customer Support",
        "prompt": "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
        "voice":  "john",
        "product": "spark",
    },
).json()
print("Agent id:", agent["id"])
```

```javascript Node.js
const agent = await fetch("https://api.thunderphone.com/v1/agents", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.THUNDERPHONE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name:    "Customer Support",
    prompt:  "You are a friendly support agent for Acme Corp. Help with orders, returns, and product info. Be concise and helpful.",
    voice:   "john",
    product: "spark",
  }),
}).then((r) => r.json());
console.log("Agent id:", agent.id);
```
</CodeGroup>

<Tip>
  Productpakketten: `spark` is geoptimaliseerd voor kosten, `bolt` voor snelheid en
  `storm-base` / `storm-extra` voor intelligentie bij complexe prompts. Zie
  [Agents](/api-reference/agents#product-tiers-at-a-glance) voor de volledige
  vergelijking.
</Tip>

## Stap 3: Een telefoonnummer inrichten

Met deze aanroep vraag je ThunderPhone om een nummer en wijs je je
nieuwe agent toe als afhandelaar voor inkomende oproepen. (Zie
[VoIP-verbindingen](/api-reference/voip-connections) als je je eigen nummer van een VoIP-provider
wilt gebruiken.)

<CodeGroup>
```bash cURL
# First provision
curl -X POST https://api.thunderphone.com/v1/phone-numbers \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"area_code": "415"}'

# Then assign the agent you created in Step 2
curl -X PATCH https://api.thunderphone.com/v1/phone-numbers/<id-from-previous> \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"inbound_agent_id": 12}'
```

```python Python
number = requests.post(
    "https://api.thunderphone.com/v1/phone-numbers",
    headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
    json={"area_code": "415"},
).json()
requests.patch(
    f"https://api.thunderphone.com/v1/phone-numbers/{number['id']}",
    headers={"Authorization": f"Bearer {os.environ['THUNDERPHONE_API_KEY']}"},
    json={"inbound_agent_id": agent["id"]},
)
print("Your ThunderPhone number:", number["number"])
```
</CodeGroup>

Je nieuwe nummer begint met `status="provisioning"` en gaat binnen enkele
seconden over naar `active`; tegen de tijd dat je je browser afsluit, is het
nummer klaar om oproepen aan te nemen.

## Stap 4 (optioneel): Een webhook instellen

Voeg een webhook-eindpunt toe voor realtime gebeurtenissen (dynamische
oproeproutering, verwerking na een oproep). Abonneer je alleen op de gebeurtenissen die je nodig hebt.

```bash
curl -X POST https://api.thunderphone.com/v1/developer/webhook-endpoints \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "label":  "Prod webhook",
    "url":    "https://your-server.com/thunderphone-webhook",
    "events": ["telephony.incoming", "telephony.complete"]
  }'
```

Het antwoord bevat een eenmalig `secret` — kopieer dit naar je secretmanager. Gebruik dat secret om de header `X-ThunderPhone-Signature-V2` bij binnenkomende verzoeken te verifiëren (zie [Overzicht van webhooks](/nl/webhooks/overview)).

## Stap 5: Test je agent

Bel het nummer dat je zojuist hebt ingericht. De agent neemt op, stelt
zich voor en volgt je prompt.

Controleer de oproep nadat deze is beëindigd:

```bash
curl https://api.thunderphone.com/v1/calls \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Bekijk een specifieke oproep om de transcriptie en opname-URL op te halen:

```bash
curl https://api.thunderphone.com/v1/calls/{call_id}/transcript \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
curl https://api.thunderphone.com/v1/calls/{call_id}/audio \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

---

## Volgende stappen

<CardGroup cols={2}>
  <Card title="Functietools toevoegen" icon="screwdriver-wrench" href="/nl/tools/overview">
    Laat je agent tijdens een gesprek je API's aanroepen.
  </Card>
  <Card title="Uitgaande oproepen plaatsen" icon="arrow-up-right" href="/api-reference/outbound-calls">
    Start oproepen vanuit je eigen code.
  </Card>
  <Card title="Webhooks afhandelen" icon="bolt" href="/nl/webhooks/overview">
    Reageer realtime op oproepgebeurtenissen.
  </Card>
  <Card title="Volledige API-referentie" icon="book" href="/api-reference/introduction">
    Elk openbaar eindpunt, gedocumenteerd.
  </Card>
</CardGroup>
