> For the complete documentation index, see [llms.txt](https://docs.smsfunnel.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.smsfunnel.com.br/api/parceiros/sequencias.md).

# Sequências

As **Sequências** são as mensagens que compõem uma campanha. Cada sequência define o texto, o intervalo de envio e, opcionalmente, um link rastreável. Através destes endpoints você pode listar, criar, consultar, atualizar e remover sequências de uma campanha.

{% hint style="success" %}
**A URL de base de todos os endpoints é**: <https://web.smsfunnel.com.br/api/parceiros/v1>
{% endhint %}

{% hint style="info" %}
Os endpoints de listagem de Sequências retornam um **array direto** (sem envelope `data` e sem paginação). Os endpoints de recurso único retornam um **objeto direto**.
{% endhint %}

***

### Endpoints

<mark style="color:green;">**GET**</mark>**&#x20;/sms/sequences/interval-types**

**Função:** Lista os tipos de intervalo disponíveis, para uso no campo `interval_type_id`.

**Corpo de resposta — `200 OK`:**

```json5
[
    { "id": 1, "name": "MINUTE", "type": "MINUTE", "label": "Minuto(s)" },
    { "id": 2, "name": "HOUR",   "type": "HOUR",   "label": "Hora(s)" },
    { "id": 3, "name": "DAY",    "type": "DAY",    "label": "Dia(s)" },
    { "id": 4, "name": "WEEK",   "type": "WEEK",   "label": "Semana(s)" },
    { "id": 5, "name": "MONTH",  "type": "MONTH",  "label": "Mês(ses)" }
]
```

***

<mark style="color:green;">**GET**</mark>**&#x20;/sms/campaigns/{campaign\_id}/sequences**

**Função:** Lista todas as sequências de uma campanha, ordenadas pela posição.

**Corpo de resposta — `200 OK`:**

```json5
[
    {
        "id": "0190c8e2-7b31-7c4e-9a1d-2f3b4c5d6e7f", // ID da sequência
        "campaign_id": "0190aaaa-1111-7c4e-9a1d-aaaabbbbcccc", // ID da campanha
        "interval": 1, // Intervalo
        "interval_type_id": 3, // Tipo de intervalo (3 = Dia)
        "position": 1, // Posição na sequência
        "text": "Ola {first_name}, confira: {meu_link}", // Texto da mensagem
        "active": true, // Sequência ativa
        "url": "https://example.com/promo", // Link "Meu Link" (ou nulo)
        "short_url": "https://go.site/abc123", // Link encurtado (ou nulo)
        "created_at": "2026-06-30T12:00:00-03:00",
        "updated_at": "2026-06-30T12:00:00-03:00"
    }
]
```

***

<mark style="color:green;">**POST**</mark>**&#x20;/sms/campaigns/{campaign\_id}/sequences**

**Função:** Cria uma nova sequência dentro de uma campanha. A `position` é atribuída automaticamente (sempre ao final).

**Corpo de envio:**

```json5
{
    "interval": 2, // Obrigatório. Inteiro >= 1.
    "interval_type_id": 2, // Obrigatório. 1=Minuto, 2=Hora, 3=Dia, 4=Semana, 5=Mês.
    "text": "Promo: {meu_link}", // Obrigatório. 1 a 1600 caracteres.
    "active": true, // Opcional. Padrão: true.
    "url": "https://example.com/promo" // Opcional. Obrigatório quando o texto contém {meu_link}.
}
```

{% hint style="warning" %}
Quando o texto contém a variável `{meu_link}`, o campo `url` é **obrigatório** (e vice-versa). Nós encurtamos o link automaticamente e o retornamos em `short_url`.
{% endhint %}

**Corpo de resposta — `201 Created`:**

```json5
{
    "id": "0190c8e2-7b31-7c4e-9a1d-2f3b4c5d6e7f",
    "campaign_id": "0190aaaa-1111-7c4e-9a1d-aaaabbbbcccc",
    "interval": 2,
    "interval_type_id": 2,
    "position": 2,
    "text": "Promo: {meu_link}",
    "active": true,
    "url": "https://example.com/promo",
    "short_url": "https://go.site/abc123",
    "created_at": "2026-06-30T12:05:00-03:00",
    "updated_at": "2026-06-30T12:05:00-03:00"
}
```

***

<mark style="color:green;">**GET**</mark>**&#x20;/sms/sequences/{id}**

**Função:** Obtém os detalhes de uma sequência específica.

**Corpo de resposta — `200 OK`:**

```json5
{
    "id": "0190c8e2-7b31-7c4e-9a1d-2f3b4c5d6e7f",
    "campaign_id": "0190aaaa-1111-7c4e-9a1d-aaaabbbbcccc",
    "interval": 2,
    "interval_type_id": 2,
    "position": 2,
    "text": "Promo: {meu_link}",
    "active": true,
    "url": "https://example.com/promo",
    "short_url": "https://go.site/abc123",
    "created_at": "2026-06-30T12:05:00-03:00",
    "updated_at": "2026-06-30T12:05:00-03:00"
}
```

***

<mark style="color:blue;">**PUT**</mark>**&#x20;/sms/sequences/{id}**

**Função:** Atualiza uma sequência. Todos os campos são opcionais — apenas os enviados serão alterados.

**Corpo de envio:**

```json5
{
    "interval": 3, // Opcional. Inteiro >= 1.
    "interval_type_id": 3, // Opcional. 1=Minuto, 2=Hora, 3=Dia, 4=Semana, 5=Mês.
    "text": "Ola {first_name}, confira: {meu_link}", // Opcional. 1 a 1600 caracteres.
    "active": false, // Opcional. Boolean.
    "url": "https://example.com/nova-promo" // Opcional. Envie null para remover o link.
}
```

{% hint style="info" %}
A `position` da sequência **não** é alterável por este endpoint. A regra do `{meu_link}` ⇄ `url` também se aplica aqui, considerando os valores efetivos (campos enviados + valores atuais).
{% endhint %}

**Corpo de resposta — `200 OK`:** mesmo formato do `GET /sms/sequences/{id}`.

***

<mark style="color:red;">**DELETE**</mark>**&#x20;/sms/sequences/{id}**

**Função:** Remove uma sequência.

**Corpo de resposta:** `204 No Content` (sem corpo).

***

### Tabela de tipos de intervalo

| `interval_type_id` | Tipo   |
| ------------------ | ------ |
| 1                  | Minuto |
| 2                  | Hora   |
| 3                  | Dia    |
| 4                  | Semana |
| 5                  | Mês    |

***

### Código de Erros Comuns

* `401 Unauthorized` (`UNAUTHORIZED`): Não foi possível identificar o parceiro a partir da Chave de API.
* `404 Not Found` (`NOT_FOUND`): A campanha ou a sequência não foi encontrada ou não pertence à sua conta.
* `422 Unprocessable Entity` (`VALIDATION_ERROR`): Algum campo do corpo da requisição é inválido (inclui `{meu_link}` sem `url`, ou `url` sem `{meu_link}` no texto).

**Corpo de resposta de erro:**

```json5
{
    "error": {
        "code": "VALIDATION_ERROR", // Código do erro
        "message": "The given data was invalid.", // Descrição
        "details": { // Opcional: detalhes por campo (presente em erros de validação)
            "url": [
                "O campo url é obrigatório quando a mensagem contém a TAG {meu_link}."
            ]
        }
    }
}
```

#### Dúvidas?

Em caso de dúvidas, entre em contato com nosso suporte.
