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

# Kampagne erstellen

> Erstelle eine Draft-Kampagne für Anruf, WhatsApp oder SMS in Famulor per API. Leads hinzufügen, dann mit Update campaign status starten.

<Warning>
  **Famulor 1.0 API (Legacy).** Diese Seite gilt nur für Famulor 1.0 (`app.famulor.de`) und bleibt aus Kompatibilitätsgründen erhalten. Für die aktuelle Plattform nutze die [Famulor 2.0 API-Referenz](/de/api-reference/introduction).
</Warning>

Erstellt eine neue Kampagne. Kampagnen starten im Status `draft` — Leads hinzufügen, dann mit [Kampagnen-Status aktualisieren](/de/api-v1/campaigns/update-status) starten.

Unterstützte Channels:

* **`call`** (Standard) — Outbound-Voice mit einem OUTBOUND-Assistenten
* **`whatsapp`** — freigegebenes WhatsApp-Template über einen deiner Sender
* **`sms`** — SMS-Text von einer SMS-fähigen Nummer (kann auf der Plattform vorübergehend nicht verfügbar sein)

### Request Body

#### Gemeinsam

<ParamField body="name" type="string" required>
  Kampagnenname. Maximal 255 Zeichen.
</ParamField>

<ParamField body="channel" type="string" default="call">
  `call`, `whatsapp` oder `sms`.
</ParamField>

<ParamField body="timezone" type="string">
  IANA-Zeitzone für das Sende-/Anrufzeitfenster (z. B. `America/New_York`). Standard: Assistenten-Zeitzone bei Anrufkampagnen, sonst Konten-Zeitzone.
</ParamField>

<ParamField body="schedule_windows" type="array">
  Bevorzugter Schedule: ein oder mehrere tägliche Fenster als Objekte mit `start` und `end` in `HH:MM`. Übernacht-Fenster sind erlaubt, wenn `end` vor `start` liegt (z. B. `16:00` → `02:00`).
</ParamField>

<ParamField body="allowed_hours_start_time" type="string" default="00:00">
  Legacy-Einzelfenster-Start (`HH:MM`). Wird verwendet, wenn `schedule_windows` fehlt.
</ParamField>

<ParamField body="allowed_hours_end_time" type="string" default="23:59">
  Legacy-Einzelfenster-Ende (`HH:MM`). Übernacht, wenn `end` \< `start`.
</ParamField>

<ParamField body="scheduled_start_at" type="string">
  Optionale ISO-Datetime. Wenn gesetzt, kann die Kampagne zu diesem Zeitpunkt automatisch starten.
</ParamField>

<ParamField body="allowed_days" type="array" default="alle 7 Tage">
  Wochentage: `monday` … `sunday`.
</ParamField>

<ParamField body="max_retries" type="integer" default="3">
  Max. Retry-Versuche pro Lead. Bereich: 1–5.
</ParamField>

<ParamField body="retry_interval" type="integer" default="60">
  Minuten zwischen Retries. Bereich: 10–4320.
</ParamField>

<ParamField body="mark_complete_when_no_leads" type="boolean" default="true">
  Kampagne automatisch als abgeschlossen markieren, wenn keine Arbeit mehr übrig ist.
</ParamField>

#### Anrufkampagnen

<ParamField body="assistant_id" type="integer">
  Pflicht bei `channel=call`. Muss ein OUTBOUND-Assistent sein, der dir gehört.
</ParamField>

<ParamField body="max_calls_in_parallel" type="integer" default="3">
  Parallele Anrufe (tarifbegrenzt, max. 10).
</ParamField>

<ParamField body="phone_number_ids" type="array">
  Outbound-Absender-Nummern-IDs, die deinem Konto zur Verfügung stehen.
</ParamField>

<ParamField body="retry_on_voicemail" type="boolean">
  Retry, wenn der Anruf beim Anrufbeantworter landet.
</ParamField>

<ParamField body="retry_on_goal_incomplete" type="boolean">
  Weiter retryen, bis eine Boolean-Post-Call-Goal-Variable `true` ist.
</ParamField>

<ParamField body="goal_completion_variable" type="string">
  Name der Boolean-Post-Call-Schema-Variable für `retry_on_goal_incomplete`.
</ParamField>

<ParamField body="fallback_channel" type="string">
  Optionaler Call→Text-Follow-up nach max. Anruf-Retries: `whatsapp` oder `sms`.
</ParamField>

<ParamField body="fallback_whatsapp_sender_id" type="integer">
  Pflicht bei `fallback_channel=whatsapp`.
</ParamField>

<ParamField body="fallback_whatsapp_template_id" type="integer">
  Pflicht bei `fallback_channel=whatsapp`. Muss ein freigegebenes Template auf diesem Sender sein.
</ParamField>

<ParamField body="fallback_sms_from_phone_number_id" type="integer">
  Pflicht bei `fallback_channel=sms`.
</ParamField>

<ParamField body="fallback_sms_body" type="string">
  Pflicht bei `fallback_channel=sms`. Unterstützt `{{variable}}`-Platzhalter.
</ParamField>

<ParamField body="fallback_variable_mapping" type="object">
  Mappt WhatsApp-Template-Platzhalter (z. B. `"1"`) auf Lead-Variablen-Keys für den Fallback-Send.
</ParamField>

#### WhatsApp-Kampagnen

<ParamField body="whatsapp_sender_id" type="integer">
  Pflicht bei `channel=whatsapp`. Sender, der dir gehört.
</ParamField>

<ParamField body="whatsapp_template_id" type="integer">
  Pflicht bei `channel=whatsapp`. Freigegebenes Template auf diesem Sender.
</ParamField>

<ParamField body="text_variable_mapping" type="object">
  Mappt Template-Platzhalter (z. B. `"1"`) auf Lead-Variablen-Keys.
</ParamField>

<ParamField body="messages_per_minute" type="integer">
  Sende-Rate pro Kampagne (1–10). WhatsApp-Kampagnen teilen sich zusätzlich einen nutzerweiten Pool von 10 In-Flight-Sends über alle aktiven WhatsApp-Kampagnen.
</ParamField>

#### SMS-Kampagnen

<ParamField body="sms_from_phone_number_id" type="integer">
  Pflicht bei `channel=sms`. Muss SMS-fähig und für dich verfügbar sein.
</ParamField>

<ParamField body="sms_body" type="string">
  Pflicht bei `channel=sms`. Max. 1600 Zeichen. Unterstützt `{{variable}}`-Platzhalter.
</ParamField>

### Response

<ResponseField name="message" type="string">
  Erfolgsmeldung
</ResponseField>

<ResponseField name="data" type="object">
  Erstellte Kampagne (gleiche Form wie [Kampagne abrufen](/de/api-v1/campaigns/get)), inklusive Channel, Schedule, Text-Config und Fallback-Feldern.
</ResponseField>

### Fehlerantworten

<ResponseField name="422 Unprocessable Entity">
  Tarif-Limit, ungültiger Assistent/Sender/Template, deaktivierter Channel oder Validierungsfehler.
</ResponseField>

<ResponseExample>
  ```json 201 Created theme={null} theme={null}
  {
    "message": "Campaign created successfully",
    "data": {
      "id": 1,
      "name": "Product Demo Campaign",
      "channel": "call",
      "status": "draft",
      "assistant_id": 42,
      "timezone": "Europe/Berlin",
      "max_calls_in_parallel": 3,
      "messages_per_minute": null,
      "schedule_windows": [
        { "start": "09:00", "end": "17:00" }
      ],
      "scheduled_start_at": null,
      "allowed_hours_start_time": "09:00",
      "allowed_hours_end_time": "17:00",
      "allowed_days": [
        "monday",
        "tuesday",
        "wednesday",
        "thursday",
        "friday"
      ],
      "max_retries": 3,
      "retry_interval": 60,
      "retry_on_voicemail": false,
      "retry_on_goal_incomplete": false,
      "goal_completion_variable": null,
      "mark_complete_when_no_leads": true,
      "phone_number_ids": [101],
      "whatsapp_sender_id": null,
      "whatsapp_template_id": null,
      "sms_from_phone_number_id": null,
      "sms_body": null,
      "text_variable_mapping": null,
      "fallback_channel": null,
      "fallback_whatsapp_sender_id": null,
      "fallback_whatsapp_template_id": null,
      "fallback_sms_from_phone_number_id": null,
      "fallback_sms_body": null,
      "fallback_variable_mapping": null,
      "created_at": "2026-02-23T10:00:00.000000Z",
      "updated_at": "2026-02-23T10:00:00.000000Z"
    }
  }
  ```

  ```json 422 Unprocessable Entity theme={null} theme={null}
  {
    "message": "The given data was invalid.",
    "errors": {
      "name": [
        "The name field is required."
      ],
      "assistant_id": [
        "The assistant id field is required."
      ]
    }
  }
  ```
</ResponseExample>

<Tip>
  Passende Seiten: [Introduction](/de/api-v1/introduction) und [Authentication Guide](/de/api-v1/authentication) und [API Integration Examples](/de/api-v1/introduction).
</Tip>
