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

# Primeros pasos

> De cero a tu primera campaña activa en 4 pasos.

Necesitás credenciales de acceso y saber el ID del bot que va a ejecutar la campaña.

## Paso 1 — Autenticarte y obtener el token

```bash theme={null}
POST /auth/login/
Content-Type: application/json

{
  "email": "usuario@empresa.com",
  "password": "••••••••"
}
```

Respuesta:

```json theme={null}
{
  "access": "eyJhbGci...",
  "refresh": "eyJhbGci..."
}
```

Guardá el `access` token — lo usás en todos los requests siguientes como `Authorization: Bearer <access_token>`.

<Tip>
  El access token expira. Usá `POST /auth/token/refresh/` para renovarlo sin volver a hacer login.
</Tip>

***

## Paso 2 — Obtener el ID del bot

```bash theme={null}
GET /api/v2/bots/
Authorization: Bearer <access_token>
```

Respuesta (extracto):

```json theme={null}
[
  {
    "id": 116,
    "name": "Bot_Cobranza_Voz",
    "bot_type": "OUTBOUND",
    "conversation_type": "VOICE"
  }
]
```

Anotá el `id` del bot — es el `client_id` que vas a usar para crear la campaña.

***

## Paso 3 — Crear la campaña

```bash theme={null}
POST /api/v2/create_campaign/
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "client_id": 116,
  "name": "Campaña Julio 2025",
  "description": "Primera campaña de prueba",
  "start_date": "2025-07-01",
  "call_from": "09:00",
  "call_to": "21:00",
  "closes_eod": false,
  "dialing_type": "HORIZONTAL_VERTICAL",
  "min_phone_priority": 0,
  "max_phone_priority": 1,
  "max_calls_per_case": 3
}
```

Respuesta (extracto):

```json theme={null}
{
  "id": 12345,
  "metrics": { "status": "SCHEDULED" }
}
```

Guardá el `id` de la campaña.

<Note>
  El estado inicial depende de `start_date`: si es fecha futura o el horario aún no comenzó → `SCHEDULED`. Si es hoy y dentro del horario → `ONGOING`.
</Note>

<Warning>
  **Prioridades y reintentos:**

  * `min_phone_priority` / `max_phone_priority` son índices (base 0, inclusivos) del `phone_list` de cada caso. `min=0, max=1` → el bot usa los teléfonos en posición 0 y 1.
  * `max_calls_per_case` es el máximo de intentos **por número de teléfono**. Con 2 teléfonos y `max_calls_per_case=3` → hasta 6 intentos totales por caso.
</Warning>

***

## Paso 4 — Cargar los casos

```bash theme={null}
PUT /api/v2/create_campaign/12345/
Authorization: Bearer <access_token>
Content-Type: application/json

{
  "00001": {
    "products": [
      {
        "debt_code": "00001A",
        "pid": "Tarjeta de crédito",
        "debt": "15000.00",
        "expiration": "2025-12-01"
      }
    ],
    "params": {
      "limite_deuda": "2000.00"
    },
    "first_name": "María",
    "last_name": "González",
    "phone_settings": {
      "phone_list": ["1145671234", "1145679999"]
    }
  }
}
```

Respuesta exitosa:

```json theme={null}
{
  "message": "Campaign id: 12345 > 1 cases were uploaded succcessfully"
}
```

Si la campaña estaba en `SCHEDULED` y la fecha y horario son válidos, arranca automáticamente. Si ya era `ONGOING`, el bot comienza a discar los casos recién cargados.

<Note>
  **¿Qué va en `params`?** El contenido de este campo es específico de cada bot — varía según su configuración. Para saber qué parámetros acepta tu bot, revisá la sección **Parámetros del Bot → Adicionales** en la [configuración del Parser](/parser/bot-params). Ahí vas a encontrar el nombre exacto de cada campo adicional. Si no tenés acceso al parser, consultá con tu administrador.
</Note>

***

## Límites a tener en cuenta

| Límite                                    | Valor                            |
| ----------------------------------------- | -------------------------------- |
| Casos por request                         | 1.000 máximo                     |
| Espera entre requests de carga            | 1 segundo                        |
| Teléfonos: sin 0 de área ni 15 de celular | `1145671234` ✓ — `01145671234` ✗ |
| `params`                                  | Siempre requerido, mínimo `{}`   |
