> ## Documentation Index
> Fetch the complete documentation index at: https://docs.famulor.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks nach dem Anruf

> Erhalte Transkript, Dauer, Eingabevariablen und die Gesprächsanalyse nach jedem Anruf per Webhook.

Konfiguriere für jeden Assistenten eine **Webhook-URL auf Assistentenebene** (**Settings → Automations → Call completed**). Nach jedem Anruf sendet Famulor einen `call.completed`-POST mit:

* Transkript
* Dauer
* Aufgelöste Eingabevariablen
* Analyse nach dem Anruf (und [AI QA scorecard](/de/assistants/analysis#ai-qa-scorecards), sofern aktiviert)
* Fehlerhinweise, wenn ein ausgehender Anruf nicht verbunden wurde

Das optionale `failure`-Objekt erklärt, was passiert ist, ob ein erneuter Versuch helfen könnte und welche Aktion zu empfehlen ist. Dieselben kundenseitigen Hinweise sind auch über REST- und MCP-Anrufabfragen verfügbar.

## Einstellungen

| Einstellung | Bereich   | Standard | Bedeutung                                       |
| ----------- | --------- | -------- | ----------------------------------------------- |
| Webhook URL | HTTPS-URL | –        | Zustellziel für diesen Assistenten              |
| Timeout     | 1–30 s    | 5 s      | Maximale Wartezeit auf eine Antwort             |
| Retry count | 0–5       | 2        | Zusätzliche Versuche nach dem ersten Fehlschlag |

Nutze **Test** im Editor, um eine Beispiel-Payload an eine gespeicherte oder noch nicht gespeicherte URL zu senden (berücksichtigt den Timeout-Schieberegler).

Diese URL ist unsigniert und gilt nur für diesen Assistenten. Famulor bietet kein Workspace-weites Webhook-Abonnement – Anrufergebnisse werden immer pro Assistent zugestellt.

## Beispiel-Payload

Eine `call.completed`-Zustellung sieht so aus:

```json theme={null}
{
  "event": "call.completed",
  "timestamp": "2026-08-26T14:32:07.000Z",
  "data": {
    "call_id": "c1b2c3d4-0000-4000-8000-000000000010",
    "tenant_id": "9f86d081-0000-4000-8000-000000000020",
    "assistant_id": "1b2c3d4e-0000-4000-8000-000000000030",
    "direction": "outbound",
    "status": "completed",
    "duration_sec": 132,
    "transcript": {
      "items": [
        { "type": "message", "role": "assistant", "content": ["Hi, this is Alex from Riverside Dental."] },
        { "type": "message", "role": "user", "content": ["Hi, yes, I have a moment."] }
      ]
    },
    "collected": { "appointment_time": "2026-09-02T10:00:00Z" },
    "variables": { "lead_quality": "high" },
    "input_variables": { "customer_name": "Max Mustermann" },
    "analysis": {
      "summary": "Customer confirmed interest and booked a demo.",
      "sentiment": "positive",
      "success": true,
      "success_reason": "Appointment booked"
    },
    "qa_scorecard": null
  }
}
```

`variables` und `input_variables` folgen denselben [Call-Variablen](/de/assistants/variables), die auch sonst beim Assistenten verwendet werden. `analysis` und [`qa_scorecard`](/de/assistants/analysis#ai-qa-scorecards) werden erst befüllt, sobald die Verarbeitung nach dem Anruf abgeschlossen ist. Wenn ein ausgehender Anruf nicht verbunden wurde, wird dem Ergebnis zusätzlich ein `failure`-Objekt beigefügt – siehe oben.

## API / MCP

Nutze `PATCH /api/v1/assistants/{id}` oder das MCP-Tool `update_assistant`. Die Zustellung kann deaktiviert sein, über die Assistenten-Webhook-URL laufen oder an eine [gebundene Automatisierung](/de/automations/overview) gebunden sein. Das aktuelle Feld-Schema findest du in der API-Referenz.
