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

# Crear campaña

> Crea un borrador de campaña de llamadas, WhatsApp o SMS en Famulor mediante la API. Añade leads y actívala después con Actualizar estado de campaña.

<Warning>
  **API de Famulor 1.0 (legado).** Esta página se aplica únicamente a Famulor 1.0 (`app.famulor.de`) y se conserva por compatibilidad. Para la plataforma actual, usa la [referencia de la API de Famulor 2.0](/es/api-reference/introduction).
</Warning>

Crea una nueva campaña. Las campañas comienzan en `draft` — añade leads y, después, actívala con [Actualizar estado de campaña](/es/api-v1/campaigns/update-status).

Canales admitidos:

* **`call`** (por defecto) — voz saliente con un asistente OUTBOUND
* **`whatsapp`** — plantilla de WhatsApp aprobada a través de uno de tus remitentes
* **`sms`** — cuerpo de SMS desde un número con capacidad SMS (puede no estar disponible temporalmente en la plataforma)

### Cuerpo de la solicitud

#### Compartido

<ParamField body="name" type="string" required>
  Nombre de la campaña. Máximo 255 caracteres.
</ParamField>

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

<ParamField body="timezone" type="string">
  Zona horaria IANA para la ventana de envío/llamada (p. ej. `America/New_York`). Por defecto usa la zona horaria del asistente en campañas de llamadas; en caso contrario, la zona horaria de tu cuenta.
</ParamField>

<ParamField body="schedule_windows" type="array">
  Horario preferido: una o más ventanas diarias como objetos con `start` y `end` en formato `HH:MM`. Se admiten ventanas nocturnas cuando `end` es anterior a `start` (p. ej. `16:00` → `02:00`).
</ParamField>

<ParamField body="allowed_hours_start_time" type="string" default="00:00">
  Inicio de la ventana única heredada (`HH:MM`). Se usa si se omite `schedule_windows`.
</ParamField>

<ParamField body="allowed_hours_end_time" type="string" default="23:59">
  Fin de la ventana única heredada (`HH:MM`). Nocturna cuando `end` \< `start`.
</ParamField>

<ParamField body="scheduled_start_at" type="string">
  Fecha y hora ISO opcional. Si se indica, la campaña puede programarse para iniciarse automáticamente en ese momento.
</ParamField>

<ParamField body="allowed_days" type="array" default="all 7 days">
  Días de la semana: `monday` … `sunday`.
</ParamField>

<ParamField body="max_retries" type="integer" default="3">
  Máximo de reintentos por lead. Rango: 1–5.
</ParamField>

<ParamField body="retry_interval" type="integer" default="60">
  Minutos entre reintentos. Rango: 10–4320.
</ParamField>

<ParamField body="mark_complete_when_no_leads" type="boolean" default="true">
  Marca automáticamente la campaña como completada cuando no queda trabajo pendiente.
</ParamField>

#### Campañas de llamadas

<ParamField body="assistant_id" type="integer">
  Obligatorio para `channel=call`. Debe ser un asistente OUTBOUND de tu propiedad.
</ParamField>

<ParamField body="max_calls_in_parallel" type="integer" default="3">
  Llamadas simultáneas (limitado por el plan, máx. 10).
</ParamField>

<ParamField body="phone_number_ids" type="array">
  IDs de números de origen salientes disponibles para tu cuenta.
</ParamField>

<ParamField body="retry_on_voicemail" type="boolean">
  Reintenta cuando una llamada cae en el buzón de voz.
</ParamField>

<ParamField body="retry_on_goal_incomplete" type="boolean">
  Sigue reintentando hasta que una variable booleana de objetivo posterior a la llamada sea true.
</ParamField>

<ParamField body="goal_completion_variable" type="string">
  Nombre de la variable booleana del esquema posterior a la llamada, usada con `retry_on_goal_incomplete`.
</ParamField>

<ParamField body="fallback_channel" type="string">
  Seguimiento opcional de llamada→texto tras agotar los reintentos de llamada: `whatsapp` o `sms`.
</ParamField>

<ParamField body="fallback_whatsapp_sender_id" type="integer">
  Obligatorio cuando `fallback_channel=whatsapp`.
</ParamField>

<ParamField body="fallback_whatsapp_template_id" type="integer">
  Obligatorio cuando `fallback_channel=whatsapp`. Debe ser una plantilla aprobada en ese remitente.
</ParamField>

<ParamField body="fallback_sms_from_phone_number_id" type="integer">
  Obligatorio cuando `fallback_channel=sms`.
</ParamField>

<ParamField body="fallback_sms_body" type="string">
  Obligatorio cuando `fallback_channel=sms`. Admite marcadores `{{variable}}`.
</ParamField>

<ParamField body="fallback_variable_mapping" type="object">
  Asigna los marcadores de la plantilla de WhatsApp (p. ej. `"1"`) a claves de variables del lead para el envío de reserva.
</ParamField>

#### Campañas de WhatsApp

<ParamField body="whatsapp_sender_id" type="integer">
  Obligatorio para `channel=whatsapp`. Remitente de tu propiedad.
</ParamField>

<ParamField body="whatsapp_template_id" type="integer">
  Obligatorio para `channel=whatsapp`. Plantilla aprobada en ese remitente.
</ParamField>

<ParamField body="text_variable_mapping" type="object">
  Asigna los marcadores de la plantilla (p. ej. `"1"`) a claves de variables del lead.
</ParamField>

<ParamField body="messages_per_minute" type="integer">
  Tasa de envío por campaña (1–10). Las campañas de WhatsApp también comparten un límite conjunto de 10 envíos en curso por usuario entre todas tus campañas de WhatsApp activas.
</ParamField>

#### Campañas de SMS

<ParamField body="sms_from_phone_number_id" type="integer">
  Obligatorio para `channel=sms`. Debe tener capacidad SMS y estar disponible para ti.
</ParamField>

<ParamField body="sms_body" type="string">
  Obligatorio para `channel=sms`. Máx. 1600 caracteres. Admite marcadores `{{variable}}`.
</ParamField>

### Respuesta

<ResponseField name="message" type="string">
  Mensaje de éxito
</ResponseField>

<ResponseField name="data" type="object">
  Campaña creada (misma forma que [Obtener campaña](/es/api-v1/campaigns/get)), incluyendo canal, horario, configuración de texto y campos de reserva.
</ResponseField>

### Respuestas de error

<ResponseField name="422 Unprocessable Entity">
  Límite del plan, asistente/remitente/plantilla no válidos, canal desactivado, o errores de validación.
</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>
  Páginas relacionadas: [Introducción](/es/api-v1/introduction) y [Guía de autenticación](/es/api-v1/authentication), y [Ejemplos de integración de la API](/es/api-v1/introduction).
</Tip>
