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

# Créer une campagne

> Crée une campagne d'appel, WhatsApp ou SMS en brouillon dans Famulor via l'API. Ajoutez des leads, puis démarrez avec Mettre à jour le statut d'une campagne.

<Warning>
  **API Famulor 1.0 (héritée).** Cette page concerne uniquement Famulor 1.0 (`app.famulor.de`) et est conservée pour la compatibilité. Pour la plateforme actuelle, consultez la [référence API Famulor 2.0](/fr/api-reference/introduction).
</Warning>

Crée une nouvelle campagne. Les campagnes démarrent en `draft` — ajoutez des leads, puis démarrez-la avec [Mettre à jour le statut d'une campagne](/fr/api-v1/campaigns/update-status).

Canaux pris en charge :

* **`call`** (par défaut) — voix sortante avec un assistant OUTBOUND
* **`whatsapp`** — modèle WhatsApp approuvé via l'un de vos expéditeurs
* **`sms`** — corps de SMS depuis un numéro compatible SMS (peut être temporairement indisponible sur la plateforme)

### Corps de la requête

#### Commun

<ParamField body="name" type="string" required>
  Nom de la campagne. 255 caractères maximum.
</ParamField>

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

<ParamField body="timezone" type="string">
  Fuseau horaire IANA pour la fenêtre d'envoi/d'appel (par ex. `America/New_York`). Par défaut, le fuseau horaire de l'assistant pour les campagnes d'appel, sinon celui de votre compte.
</ParamField>

<ParamField body="schedule_windows" type="array">
  Planning préféré : une ou plusieurs fenêtres quotidiennes sous forme d'objets avec `start` et `end` au format `HH:MM`. Les fenêtres nocturnes sont prises en charge lorsque `end` précède `start` (par ex. `16:00` → `02:00`).
</ParamField>

<ParamField body="allowed_hours_start_time" type="string" default="00:00">
  Début de fenêtre unique (ancien format, `HH:MM`). Utilisé si `schedule_windows` est omis.
</ParamField>

<ParamField body="allowed_hours_end_time" type="string" default="23:59">
  Fin de fenêtre unique (ancien format, `HH:MM`). Nocturne lorsque `end` \< `start`.
</ParamField>

<ParamField body="scheduled_start_at" type="string">
  Date-heure ISO optionnelle. Si elle est définie, la campagne peut être programmée pour démarrer automatiquement à ce moment-là.
</ParamField>

<ParamField body="allowed_days" type="array" default="all 7 days">
  Jours de la semaine : `monday` … `sunday`.
</ParamField>

<ParamField body="max_retries" type="integer" default="3">
  Nombre maximal de tentatives par lead. Plage : 1 à 5.
</ParamField>

<ParamField body="retry_interval" type="integer" default="60">
  Minutes entre les tentatives. Plage : 10 à 4320.
</ParamField>

<ParamField body="mark_complete_when_no_leads" type="boolean" default="true">
  Marque automatiquement la campagne comme terminée lorsqu'il ne reste plus de travail.
</ParamField>

#### Campagnes d'appel

<ParamField body="assistant_id" type="integer">
  Requis pour `channel=call`. Doit être un assistant OUTBOUND que vous possédez.
</ParamField>

<ParamField body="max_calls_in_parallel" type="integer" default="3">
  Appels simultanés (limité par le forfait, 10 maximum).
</ParamField>

<ParamField body="phone_number_ids" type="array">
  IDs des numéros sortants disponibles pour votre compte.
</ParamField>

<ParamField body="retry_on_voicemail" type="boolean">
  Relance en cas de basculement sur messagerie vocale.
</ParamField>

<ParamField body="retry_on_goal_incomplete" type="boolean">
  Continue les tentatives jusqu'à ce qu'une variable booléenne d'objectif post-appel soit vraie.
</ParamField>

<ParamField body="goal_completion_variable" type="string">
  Nom de la variable booléenne du schéma post-appel utilisée avec `retry_on_goal_incomplete`.
</ParamField>

<ParamField body="fallback_channel" type="string">
  Relance texte optionnelle après le nombre maximal de tentatives d'appel : `whatsapp` ou `sms`.
</ParamField>

<ParamField body="fallback_whatsapp_sender_id" type="integer">
  Requis lorsque `fallback_channel=whatsapp`.
</ParamField>

<ParamField body="fallback_whatsapp_template_id" type="integer">
  Requis lorsque `fallback_channel=whatsapp`. Doit être un modèle approuvé sur cet expéditeur.
</ParamField>

<ParamField body="fallback_sms_from_phone_number_id" type="integer">
  Requis lorsque `fallback_channel=sms`.
</ParamField>

<ParamField body="fallback_sms_body" type="string">
  Requis lorsque `fallback_channel=sms`. Prend en charge les espaces réservés `{{variable}}`.
</ParamField>

<ParamField body="fallback_variable_mapping" type="object">
  Associe les espaces réservés du modèle WhatsApp (par ex. `"1"`) aux clés de variables du lead pour l'envoi de repli.
</ParamField>

#### Campagnes WhatsApp

<ParamField body="whatsapp_sender_id" type="integer">
  Requis pour `channel=whatsapp`. Expéditeur que vous possédez.
</ParamField>

<ParamField body="whatsapp_template_id" type="integer">
  Requis pour `channel=whatsapp`. Modèle approuvé sur cet expéditeur.
</ParamField>

<ParamField body="text_variable_mapping" type="object">
  Associe les espaces réservés du modèle (par ex. `"1"`) aux clés de variables du lead.
</ParamField>

<ParamField body="messages_per_minute" type="integer">
  Débit d'envoi propre à la campagne (1 à 10). Les campagnes WhatsApp partagent aussi un pool utilisateur de 10 envois simultanés, réparti entre toutes vos campagnes WhatsApp actives.
</ParamField>

#### Campagnes SMS

<ParamField body="sms_from_phone_number_id" type="integer">
  Requis pour `channel=sms`. Doit être compatible SMS et disponible pour vous.
</ParamField>

<ParamField body="sms_body" type="string">
  Requis pour `channel=sms`. 1600 caractères maximum. Prend en charge les espaces réservés `{{variable}}`.
</ParamField>

### Réponse

<ResponseField name="message" type="string">
  Message de succès
</ResponseField>

<ResponseField name="data" type="object">
  La campagne créée (même forme que [Obtenir une campagne](/fr/api-v1/campaigns/get)), avec le canal, la planification, la configuration du texte et les champs de repli.
</ResponseField>

### Réponses d'erreur

<ResponseField name="422 Unprocessable Entity">
  Limite du forfait, assistant/expéditeur/modèle invalide, canal désactivé, ou erreurs de validation.
</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>
  Pages associées : [Introduction](/fr/api-v1/introduction), [Guide d'authentification](/fr/api-v1/authentication) et [Exemples d'intégration API](/fr/api-v1/introduction).
</Tip>
