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

# Primeiros passos

> Do zero à sua primeira campanha ativa em 4 passos.

Você precisa de credenciais de acesso e saber o ID do bot que vai executar a campanha.

## Passo 1 — Autenticar-se e obter o token

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

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

Resposta:

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

Guarde o token `access` — você vai usá-lo em todas as próximas requisições como `Authorization: Bearer <access_token>`.

<Tip>
  O access token expira. Use `POST /auth/token/refresh/` para renová-lo sem precisar fazer login novamente.
</Tip>

***

## Passo 2 — Obter o ID do bot

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

Resposta (trecho):

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

Anote o `id` do bot — é o `client_id` que você vai usar para criar a campanha.

***

## Passo 3 — Criar a campanha

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

{
  "client_id": 116,
  "name": "Campanha Julho 2025",
  "description": "Primeira campanha de teste",
  "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
}
```

Resposta (trecho):

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

Guarde o `id` da campanha.

<Note>
  O estado inicial depende de `start_date`: se for uma data futura ou o horário ainda não começou → `SCHEDULED`. Se for hoje e dentro do horário → `ONGOING`.
</Note>

<Warning>
  **Prioridades e novas tentativas:**

  * `min_phone_priority` / `max_phone_priority` são índices (base 0, inclusivos) da `phone_list` de cada caso. `min=0, max=1` → o bot usa os telefones na posição 0 e 1.
  * `max_calls_per_case` é o máximo de tentativas **por número de telefone**. Com 2 telefones e `max_calls_per_case=3` → até 6 tentativas totais por caso.
</Warning>

***

## Passo 4 — Carregar os casos

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

{
  "00001": {
    "products": [
      {
        "debt_code": "00001A",
        "pid": "Cartão 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"]
    }
  }
}
```

Resposta de sucesso:

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

Se a campanha estava em `SCHEDULED` e a data e o horário são válidos, ela começa automaticamente. Se já estava `ONGOING`, o bot começa a discar os casos recém-carregados.

<Note>
  **O que vai em `params`?** O conteúdo deste campo é específico de cada bot — varia de acordo com sua configuração. Para saber quais parâmetros seu bot aceita, revise a seção **Parâmetros do Bot → Adicionais** na [configuração do Parser](/pt-BR/parser/bot-params). Lá você vai encontrar o nome exato de cada campo adicional. Se você não tiver acesso ao parser, consulte o seu administrador.
</Note>

***

## Limites a considerar

| Limite                                     | Valor                            |
| ------------------------------------------ | -------------------------------- |
| Casos por requisição                       | 1.000 no máximo                  |
| Espera entre requisições de carga          | 1 segundo                        |
| Telefones: sem 0 de área nem 15 de celular | `1145671234` ✓ — `01145671234` ✗ |
| `params`                                   | Sempre obrigatório, mínimo `{}`  |
