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

# SMS

> Envie SMS pela SendPulse ou pela Twilio, com o status de entrega registrado no log

O canal **SMS** envia mensagens de texto pelo provedor que você contratar: **SendPulse** ou **Twilio**. As credenciais são da sua conta no provedor, e o custo de cada SMS é cobrado por ele.

## 1. Escolher o provedor

Em **Configurações → Canais → SMS**, a tela mostra um card para cada provedor liberado na sua conta:

| Provedor | Descrição | Status de entrega |
| - | - | - |
| SendPulse | Envio pela API da SendPulse, com as credenciais da sua conta | Consultado a cada 2 minutos |
| Twilio | Envio pela API da Twilio | Em tempo real, avisado pela Twilio |

**Um provedor por vez fica ativo** — o último salvo, marcado como **Ativo** no card. Ao salvar um provedor, as credenciais do outro são descartadas: se voltar a ele depois, preencha tudo de novo.

> [!NOTE]
>
> Se o SMS ou um dos provedores não aparecer em **Canais**, fale com a OctaSend para liberar na sua conta.

## 2. Configurar

> [tab] SendPulse
>
> **1. Preparar a conta**
>
> Crie uma conta em [sendpulse.com](https://sendpulse.com) e ative o serviço de SMS. Em **Configurações da conta → API**, copie o **ID** e o **Secret** da API REST.
>
> **2. Registrar o remetente**
>
> Na seção de SMS da SendPulse, registre um **remetente** (sender): um nome alfanumérico de até 11 caracteres que aparece como remetente da mensagem.
>
> **3. Preencher e testar**
>
> | Campo | Descrição |
> | - | - |
> | API ID (SendPulse) | ID da API REST |
> | API Secret (SendPulse) | Secret da API REST |
> | Remetente | O sender registrado na SendPulse (máx. 11 caracteres) |
>
> **Testar Conexão** confere as credenciais e se o remetente existe na conta: *"Conectado à SendPulse — remetente … pronto para envio"*. Erros: *"Preencha API ID, API Secret e Remetente"*, *"Credenciais inválidas — verifique API ID e API Secret na SendPulse"* e *"Remetente … não encontrado na sua conta SendPulse. Disponíveis: …"*. Depois, clique em **Salvar Configuração**.

> [tab] Twilio
>
> **1. Copiar as credenciais**
>
> No [console da Twilio](https://console.twilio.com), copie o **Account SID** e o **Auth Token** do painel inicial.
>
> **2. Escolher o remetente**
>
> Use um **Messaging Service SID** (começa com `MG`, recomendado para volume) **ou** um **número Twilio** no formato `+5511999999999`. Se os dois forem preenchidos, vale o Messaging Service.
>
> **3. Preencher e testar**
>
> | Campo | Obrigatório | Descrição |
> | - | - | - |
> | Account SID (Twilio) | Sim | Começa com `AC` |
> | Auth Token (Twilio) | Sim | Token da conta |
> | Messaging Service SID | Um dos dois | Alternativa ao número remetente |
> | Número remetente | Um dos dois | Dispensável se usar Messaging Service |
>
> **Testar Conexão** confere a conta: *"Conectado à Twilio — conta …, enviando por …"*. Erros: *"Preencha Account SID e Auth Token"*, *"Informe um Messaging Service SID ou um número remetente"* e *"Account SID ou Auth Token inválidos"*. Depois, clique em **Salvar Configuração**.
>
> O status de entrega chega sozinho: a OctaSend informa à Twilio para onde avisar a cada envio. Não há webhook para configurar no console da Twilio.

Credenciais já salvas voltam mascaradas na tela. Deixe o campo como está para manter o valor guardado.

## 3. Criar o template

No template SMS de cada [comunicação](https://docs.octasend.com.br/plataforma/comunicacoes.md), o campo **Mensagem** recebe o texto, com variáveis `{{var}}`. Cada mensagem tem até **3.800 caracteres**, já com as variáveis substituídas; acima disso, o texto é cortado e termina com `[…continua]`. A divisão em partes e a cobrança por tamanho seguem as regras do seu provedor.

## 4. Enviar

```bash theme={null}
curl -X POST https://api.octasend.com.br/functions/v1/send-message \
  -H "Authorization: Bearer SEU_ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "communication_slug": "codigo-de-acesso",
    "recipient": { "phone": "+5511999999999" },
    "variables": { "codigo": "482913" },
    "channels": ["sms"]
  }'
```

* Informe `recipient.phone` no formato internacional, com `+` e código do país.
* Sem `recipient.phone`, o SMS não é enviado; se você pediu o canal explicitamente em `channels`, o resultado vem como `skipped` com o campo que faltou.
* Se a configuração estiver incompleta, o envio falha com o motivo — por exemplo, *"Configuração SMS incompleta — informe Account SID, Auth Token e um Messaging Service SID ou número remetente"*.

O access token vem do fluxo descrito em [Autenticação](https://docs.octasend.com.br/api-reference/autenticacao.md).

## 5. Acompanhar a entrega

O envio aparece em [Logs de Mensagens](https://docs.octasend.com.br/plataforma/logs-de-mensagens.md) como **Enviada**. Depois:

| Provedor | Entregue | Não entregue |
| - | - | - |
| Twilio | Registra a entrega assim que a Twilio confirma | Falhou, com o motivo *"Twilio: undelivered"* ou *"Twilio: failed"* e o código da Twilio |
| SendPulse | Registra a entrega na consulta seguinte (a cada 2 minutos) | Falhou, com o motivo *"SMS não entregue (SendPulse status 12)"* |

A consulta à SendPulse acompanha os SMS das **últimas 48 horas**. Um SMS sem confirmação nesse prazo continua como **Enviada**.

Em [automações](https://docs.octasend.com.br/plataforma/automacoes.md), um contato descadastrado do SMS não recebe a mensagem: o log fica **Ignorada** com o motivo *"Contato descadastrado"*. Envios pela API não são bloqueados pelo descadastro. Veja [Contatos](https://docs.octasend.com.br/plataforma/contatos.md).

> [!TIP]
>
> Para testar um template, use **Enviar teste** no editor: o SMS vai para o telefone do **Destinatário de Teste** cadastrado em **Configurações → Geral**. O teste usa o rascunho salvo da versão, se houver; os envios reais usam só a versão publicada.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.