---
title: "Schnellstart (API)"
description: "Beantworten Sie Ihren ersten Anruf mit einem KI-Agenten: API-Schlüssel abrufen, Agenten erstellen, eine Telefonnummer bereitstellen und einen Live-Testanruf durchführen – alles über die REST-API."
---

Diese Anleitung führt Sie durch die vier REST-Aufrufe, die Sie benötigen, um
Ihren ersten Anruf mit einem Sprachagenten zu beantworten.

<Info>
  Sie benötigen ein [ThunderPhone-Konto](https://app.thunderphone.com).
  Die Registrierung ist kostenlos und dauert weniger als eine Minute. Sie klicken lieber, statt curl zu verwenden?
  Mit dem [Dashboard-Schnellstart](/de/quickstart-dashboard) erreichen Sie denselben
  ersten Anruf, ohne Code zu schreiben.
</Info>

## Schritt 1: API-Schlüssel abrufen

<Steps>
  <Step title="Anmelden">
    Öffnen Sie [app.thunderphone.com](https://app.thunderphone.com).
  </Step>
  <Step title="Zu Schlüsseln navigieren">
    Gehen Sie im Dashboard zu **Organisation → Schlüssel**.
  </Step>
  <Step title="Schlüssel erstellen">
    Klicken Sie auf **Schlüssel erstellen**, geben Sie ihm einen Namen und kopieren Sie den
    Wert `sk_live_...`. Der vollständige Schlüssel wird **nur einmal** angezeigt — speichern Sie ihn
    sofort in Ihrem Secret Manager.
  </Step>
</Steps>

<Tip>
  Sie kommen nicht weiter? [Server-API-Schlüssel erstellen](/de/guides/api-keys) erläutert
  diesen Ablauf Schritt für Schritt, und der Copilot in der App kann
  jedes Steuerelement live für Sie hervorheben.
</Tip>

Ersetzen Sie in dieser Anleitung `sk_live_YOUR_API_KEY` durch den Wert, den Sie
gerade kopiert haben. Der Schlüssel identifiziert Ihre Organisation automatisch, sodass
Sie niemals eine Organisations-ID in URLs angeben müssen.

## Schritt 2: Agenten erstellen

Ein Agent definiert, wie die KI Gespräche führt — Prompt, Stimme,
Produktstufe, Tools und Widget-Berechtigung.

<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>
  Produktstufen: `spark` ist auf Kosten optimiert, `bolt` auf Geschwindigkeit und
  `storm-base` / `storm-extra` auf Intelligenz bei komplexen Prompts. Die vollständige
  Gegenüberstellung finden Sie unter [Agenten](/api-reference/agents#product-tiers-at-a-glance).
</Tip>

## Schritt 3: Eine Telefonnummer bereitstellen

Dieser Aufruf fordert bei ThunderPhone eine Nummer an und weist Ihren
neuen Agenten als Handler für eingehende Anrufe zu. (Wenn Sie Ihre eigene Nummer von einem VoIP-
Anbieter mitbringen möchten, lesen Sie stattdessen [VoIP-Verbindungen](/api-reference/voip-connections).)

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

Ihre neue Nummer startet mit `status="provisioning"` und wechselt innerhalb weniger
Sekunden zu `active`; bis Sie Ihren Browser schließen, ist die
Nummer bereit, Anrufe entgegenzunehmen.

## Schritt 4 (optional): Einen Webhook einrichten

Fügen Sie für Echtzeitereignisse (dynamische Anrufweiterleitung, Verarbeitung nach dem Anruf) einen
Webhook-Endpunkt hinzu. Abonnieren Sie nur die Ereignisse, die Sie benötigen.

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

Die Antwort enthält ein einmaliges `secret` — kopieren Sie es in Ihren Secret-Manager. Verwenden Sie dieses Secret, um den Header `X-ThunderPhone-Signature-V2` bei eingehenden Anfragen zu verifizieren (siehe
[Webhooks-Übersicht](/de/webhooks/overview)).

## Schritt 5: Ihren Agenten testen

Rufen Sie die gerade bereitgestellte Nummer an. Der Agent nimmt ab, stellt
sich vor und folgt Ihrem Prompt.

Prüfen Sie den Anruf nach seinem Ende:

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

Rufen Sie einen bestimmten Anruf ab, um das Transkript und die Aufnahme-URL zu erhalten:

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

---

## Nächste Schritte

<CardGroup cols={2}>
  <Card title="Funktions-Tools hinzufügen" icon="screwdriver-wrench" href="/de/tools/overview">
    Lassen Sie Ihren Agenten während eines Gesprächs Ihre APIs aufrufen.
  </Card>
  <Card title="Ausgehende Anrufe tätigen" icon="arrow-up-right" href="/api-reference/outbound-calls">
    Lösen Sie Anrufe aus Ihrem eigenen Code aus.
  </Card>
  <Card title="Webhooks verarbeiten" icon="bolt" href="/de/webhooks/overview">
    Reagieren Sie in Echtzeit auf Anrufereignisse.
  </Card>
  <Card title="Vollständige API-Referenz" icon="book" href="/api-reference/introduction">
    Jeder öffentliche Endpunkt, dokumentiert.
  </Card>
</CardGroup>
