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

# Schnellstart (API)

> Beantworten Sie Ihren ersten Anruf mit einem KI-Agenten in vier REST-Aufrufen.

Dieser Leitfaden führt Sie durch die vier REST-Aufrufe, die erforderlich sind, um Ihren ersten Telefonanruf mit einem KI-Agenten entgegenzunehmen.

<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?
  Der [Dashboard-Schnellstart](/de/quickstart-dashboard) ermöglicht denselben
  ersten Anruf, ohne dass Sie Code schreiben müssen.
</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) führt Sie
  Schritt für Schritt durch diesen Ablauf, und der In-App-Copilot kann
  jedes Steuerelement live für Sie hervorheben.
</Tip>

Ersetzen Sie in diesem Leitfaden `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: Einen Agenten erstellen

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

<CodeGroup>
  ```bash cURL theme={null}
  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 theme={null}
  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 theme={null}
  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 vom Demo-Pool von ThunderPhone eine Nummer an und weist Ihren
neuen Agenten als Handler für eingehende Anrufe zu. (Informationen dazu, wie Sie Ihre eigene Nummer von einem VoIP-
Anbieter einbinden, finden Sie unter [VoIP-Verbindungen](/api-reference/voip-connections).)

<CodeGroup>
  ```bash cURL theme={null}
  # 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 theme={null}
  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 theme={null}
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 nur einmal angezeigtes `secret` — kopieren Sie es in Ihre
Geheimnisverwaltung. Verwenden Sie dieses Geheimnis, um den Header
`X-ThunderPhone-Signature` bei eingehenden Anfragen zu verifizieren (siehe
[Webhook-Übersicht](/de/webhooks/overview)).

## Schritt 5: Ihren Agenten testen

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

Prüfen Sie den Anruf, nachdem er beendet wurde:

```bash theme={null}
curl https://api.thunderphone.com/v1/calls \
  -H "Authorization: Bearer sk_live_YOUR_API_KEY"
```

Rufen Sie einen bestimmten Anruf auf, um das Transkript und die Aufzeichnungs-URL abzurufen:

```bash theme={null}
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>
