ThunderPhone 2.0 is live.Direct zelf aan de slag, vanaf 2 cent/min.Lees de aankondiging

Getting Started

Snelstart (API)

Beantwoord je eerste telefoongesprek met een AI-agent: haal een API-sleutel op, maak een agent, regel een telefoonnummer 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.

Stap 1: Een API-sleutel ophalen

  1. Inloggen
  2. Naar Sleutels gaan

    Ga in het dashboard naar Organisatie → Sleutels.

  3. 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 onmiddellijk op in je beheerder voor geheimen.

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 te zetten.

Stap 2: Een agent maken

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

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
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"])
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);

Stap 3: Een telefoonnummer inrichten

Met deze oproep vraag je de demopool van ThunderPhone om een nummer en wijs je je nieuwe agent toe als handler voor inkomende oproepen. (Als je je eigen nummer van een VoIP- provider wilt meenemen, raadpleeg dan VoIP-verbindingen in plaats daarvan.)

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
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"])

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

Stap 4 (optioneel): Een webhook instellen

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

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 geheimenbeheer. Gebruik dat geheim om de header X-ThunderPhone-Signature te verifiëren bij inkomende aanvragen (zie Overzicht van webhooks).

Stap 5: Je agent testen

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

Inspecteer de oproep nadat deze is beëindigd:

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

Open een specifieke oproep om het transcript en de opname-URL op te halen:

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