Kampagne erstellen
curl --request POST \
--url https://app.famulor.de/api/user/campaign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://app.famulor.de/api/user/campaign', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/campaign"
payload = { "name": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/campaign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/campaign"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"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"
}
}
{
"message": "The given data was invalid.",
"errors": {
"name": [
"The name field is required."
],
"assistant_id": [
"The assistant id field is required."
]
}
}
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.
POST
/
api
/
user
/
campaign
Kampagne erstellen
curl --request POST \
--url https://app.famulor.de/api/user/campaign \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>'})
};
fetch('https://app.famulor.de/api/user/campaign', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.famulor.de/api/user/campaign"
payload = { "name": "<string>" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.famulor.de/api/user/campaign",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.famulor.de/api/user/campaign"
payload := strings.NewReader("{\n \"name\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"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"
}
}
{
"message": "The given data was invalid.",
"errors": {
"name": [
"The name field is required."
],
"assistant_id": [
"The assistant id field is required."
]
}
}
Erstellt eine neue Kampagne. Kampagnen starten im Status
draft — Leads hinzufügen, dann mit Kampagnen-Status aktualisieren starten.
Unterstützte Channels:
call(Standard) — Outbound-Voice mit einem OUTBOUND-Assistentenwhatsapp— freigegebenes WhatsApp-Template über einen deiner Sendersms— SMS-Text von einer SMS-fähigen Nummer (kann auf der Plattform vorübergehend nicht verfügbar sein)
Request Body
Gemeinsam
string
erforderlich
Kampagnenname. Maximal 255 Zeichen.
string
Standard:"call"
call, whatsapp oder sms.string
IANA-Zeitzone für das Sende-/Anrufzeitfenster (z. B.
America/New_York). Standard: Assistenten-Zeitzone bei Anrufkampagnen, sonst Konten-Zeitzone.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).string
Standard:"00:00"
Legacy-Einzelfenster-Start (
HH:MM). Wird verwendet, wenn schedule_windows fehlt.string
Standard:"23:59"
Legacy-Einzelfenster-Ende (
HH:MM). Übernacht, wenn end < start.string
Optionale ISO-Datetime. Wenn gesetzt, kann die Kampagne zu diesem Zeitpunkt automatisch starten.
array
Standard:"alle 7 Tage"
Wochentage:
monday … sunday.integer
Standard:"3"
Max. Retry-Versuche pro Lead. Bereich: 1–5.
integer
Standard:"60"
Minuten zwischen Retries. Bereich: 10–4320.
boolean
Standard:"true"
Kampagne automatisch als abgeschlossen markieren, wenn keine Arbeit mehr übrig ist.
Anrufkampagnen
integer
Pflicht bei
channel=call. Muss ein OUTBOUND-Assistent sein, der dir gehört.integer
Standard:"3"
Parallele Anrufe (tarifbegrenzt, max. 10).
array
Outbound-Absender-Nummern-IDs, die deinem Konto zur Verfügung stehen.
boolean
Retry, wenn der Anruf beim Anrufbeantworter landet.
boolean
Weiter retryen, bis eine Boolean-Post-Call-Goal-Variable
true ist.string
Name der Boolean-Post-Call-Schema-Variable für
retry_on_goal_incomplete.string
Optionaler Call→Text-Follow-up nach max. Anruf-Retries:
whatsapp oder sms.integer
Pflicht bei
fallback_channel=whatsapp.integer
Pflicht bei
fallback_channel=whatsapp. Muss ein freigegebenes Template auf diesem Sender sein.integer
Pflicht bei
fallback_channel=sms.string
Pflicht bei
fallback_channel=sms. Unterstützt {{variable}}-Platzhalter.object
Mappt WhatsApp-Template-Platzhalter (z. B.
"1") auf Lead-Variablen-Keys für den Fallback-Send.WhatsApp-Kampagnen
integer
Pflicht bei
channel=whatsapp. Sender, der dir gehört.integer
Pflicht bei
channel=whatsapp. Freigegebenes Template auf diesem Sender.object
Mappt Template-Platzhalter (z. B.
"1") auf Lead-Variablen-Keys.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.
SMS-Kampagnen
integer
Pflicht bei
channel=sms. Muss SMS-fähig und für dich verfügbar sein.string
Pflicht bei
channel=sms. Max. 1600 Zeichen. Unterstützt {{variable}}-Platzhalter.Response
string
Erfolgsmeldung
object
Erstellte Kampagne (gleiche Form wie Kampagne abrufen), inklusive Channel, Schedule, Text-Config und Fallback-Feldern.
Fehlerantworten
Tarif-Limit, ungültiger Assistent/Sender/Template, deaktivierter Channel oder Validierungsfehler.
{
"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"
}
}
{
"message": "The given data was invalid.",
"errors": {
"name": [
"The name field is required."
],
"assistant_id": [
"The assistant id field is required."
]
}
}
Passende Seiten: Introduction und Authentication Guide und API Integration Examples.
⌘I