# SMS

A Hyperflow disponibiliza em sua plataforma, o envio de SMS. **Diferente dos outros canais, o SMS é utilizado apenas para envio, e não ativa um fluxo na resposta do usuário.**

Todo SMS enviado pela Hyperflow é do formato OTP transacional, ou seja, é um SMS que possui uma entrega prioritária se comparado com um SMS normal, ou SMS marketing.

### Saldo para disparo

Ao disparar um SMS, o valor será descontado da sua carteira Hyperflow, que pode ser consultada na tela "Gerenciar créditos" da sua organização. **A carteira funciona de forma pré-paga**. Basta fazer uma recarga via pix ou cartão de crédito para utilizar o SMS.

Para ver mais informações sobre a recarga, veja este vídeo curto: <https://www.youtube.com/watch?v=hvljlbLnUtQ&list=PLyG28GgXFuLmbhfq0i4hMPDd3AC7xHzoE&index=4>

<figure><img src="/files/gZxUNc8wHgaAVA231crD" alt=""><figcaption><p>Tela de gerenciar créditos da Hyperflow</p></figcaption></figure>

### Criando a sua chave de API

Para realizar o disparo de SMS, é necessário primeiro criar uma chave de API, que será utilizada para chamar a requisição que faz o envio.

Entre no menu **"SMS"**, e em seguida clique em **"Chaves"** no canto superior direito.

Nesta tela, você poderá consultar e gerenciar todas as chaves de API criadas. **Para criar a sua primeira chave**, basta clicar no botão **"+ Chave de API"**

<figure><img src="/files/Zx7b12aHoaoRn8aMYNgp" alt=""><figcaption><p>Tela de gerenciamento de chaves de API</p></figcaption></figure>

Ao clicar para criar uma chave de API, insira um nome para a sua chave, e clique em "Criar". Em seguida, você receberá a sua chave de API.

{% hint style="danger" %}
**Por razões de segurança, você não poderá ver esta chave novamente**. Se você perder esta chave, você precisará gerar uma nova. **Salve esta chave em algum lugar seguro e acessível.**
{% endhint %}

<figure><img src="/files/bDfye4gZqrWkHlBmwVy1" alt=""><figcaption><p>Confirmação da geração de uma nova chave de API</p></figcaption></figure>

### Realizando o disparo de um SMS

Agora que temos saldo carteira Hyperflow, e uma chave de API criada, nós podemos realizar o disparo do nosso primeiro SMS.

{% hint style="danger" %}
**Caso a sua mensagem contenha algum tipo de link, será necessário primeiro "aprovar" o link junto as operadoras.** Caso contrário, **a sua mensagem não será entregue!**

Isso é uma forma de combater golpes e envio de spam. Para solicitar aprovação de um link, entre em contato com o suporte da Hyperflow.
{% endhint %}

## Enviar SMS para um destinatário

<mark style="color:green;">`POST`</mark> `https://runtime.hyperflowapis.global/sms`

Use este método para enviar um SMS para um destinatário.

**Importante:** Caso você envie um texto com mais de 160 caracteres, será enviada 2 mensagens, uma vez que o limite por SMS é de 160 caracteres.

#### Headers

| Name                                            | Type   | Description                                             |
| ----------------------------------------------- | ------ | ------------------------------------------------------- |
| access\_token<mark style="color:red;">\*</mark> | String | Insira aqui a sua chave de API criada no passo anterior |

#### Request Body

| Name                                   | Type   | Description                                                                                                                           |
| -------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------- |
| to<mark style="color:red;">\*</mark>   | String | Telefone que será enviado o SMS. Atualmente é suportado apenas para números brasileiros, e não é necessário incluir o código de país. |
| text<mark style="color:red;">\*</mark> | String | Texto a ser enviado no SMS. Caso passe de 160 caracteres, será enviado 2 SMS's para o destinatário.                                   |

{% tabs %}
{% tab title="200: OK " %}
Ao enviar o SMS com sucesso, você receberá um status 200 OK, com o seguinte body de resposta. **O parâmetro messages será o array de todas as mensagens enviadas**. (Caso ultrapasse 160 caracteres, será enviada 2 mensagens para o destinatário, e ai você receberá 2 itens no array "*messages*")

```json
{
    "messages": [
        "527d1da8-7365-424c-9067-0a146d19193d"
    ]
}
```

{% endtab %}

{% tab title="404: Not Found A sua rota, ou chave de API está inválida" %}

{% endtab %}
{% endtabs %}

Se preferir, copie o curl abaixo 👇

```
curl --location --request POST 'https://runtime.hyperflowapis.global/sms' \
--header 'Content-Type: application/json' \
--header 'access_token: SEU_API_TOKEN' \
--data-raw '{
    "to": "34999999999",
    "text": "Mensagem teste"
}'
```

Pronto! Agora basta verificar o seu celular, para ver a mensagem entregue ✅

<figure><img src="/files/aq3aWAp12pBytVONgptS" alt=""><figcaption><p>Exemplo de mensagem entregue pela Hyperflow</p></figcaption></figure>

## Enviar SMS para múltiplos destinatários

<mark style="color:green;">`POST`</mark> `https://runtime.hyperflowapis.global/sms/multiple`

Use este método para enviar **até 1000 SMS** para diferentes usuários de uma única vez. É possível customizar o texto para cada um dos destinatários

**Importante:** Caso você envie um texto com mais de 160 caracteres, **a mensagem será rejeitada**, para evitar a cobrança de dois SMS's neste envio.

#### Headers

| Name                                            | Type   | Description                                             |
| ----------------------------------------------- | ------ | ------------------------------------------------------- |
| access\_token<mark style="color:red;">\*</mark> | String | Insira aqui a sua chave de API criada no passo anterior |

#### Request Body

| Name                                               | Type             | Description                                                                                                                                                                                                |
| -------------------------------------------------- | ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| messages<mark style="color:red;">\*</mark>         | Array de objetos | Array de objetos contendo em cada posição, um disparo a ser efetuado.Telefone que será enviado o SMS. Atualmente é suportado apenas para números brasileiros, e não é necessário incluir o código de país. |
| messages\[].to<mark style="color:red;">\*</mark>   | String           | Telefone que será enviado o SMS. Atualmente é suportado apenas para números brasileiros, e não é necessário incluir o código de país.                                                                      |
| messages\[].text<mark style="color:red;">\*</mark> | String           | Texto a ser enviado no SMS. Caso passe de 160 caracteres, a mensagem não será enviada.                                                                                                                     |

**Exemplo de payload**

```json
{
    "messages": [
        {
            "to": "34999999991",
            "text": "Mensagem a ser enviada via SMS."
        },
        {
            "to": "34999999992",
            "text": "Outra mensagem a ser enviada via SMS."
        }
    ]
}
```

{% tabs %}
{% tab title="200: OK " %}
Ao enviar o SMS com sucesso, você receberá um status 200 OK, com o seguinte body de resposta. **O parâmetro "success" será o array de todas as mensagens enviadas**. As mensagens inválidas, ou destinatários inválidos serão exibidos no array "failed".

```json
{
    "success": [ //Array contendo as mensagens que foram enviadas.
        {
            "id": 6346686788,
            "to": "34999999991",
            "text": "Mensagem a ser enviada via SMS."
        },
        {
            "id": 6346686789,
            "to": "34999999992",
            "text": "Outra mensagem a ser enviada via SMS."
        }
    ],
    "failed": [] //Array contendo as mensagens que falharam (Número inválido, texto com mais de 160 caracteres, outros...)
}
```

{% endtab %}

{% tab title="404: Not Found A sua rota, ou chave de API está inválida" %}

{% endtab %}
{% endtabs %}

Se preferir, copie o curl abaixo 👇

```
curl --location 'https://runtime.hyperflowapis.global/sms/multiple' \
--header 'Content-Type: application/json' \
--header 'access_token: SEU_API_TOKEN' \
--data '{
    "messages": [
        {
            "to": "34999999991",
            "text": "Mensagem a ser enviada via SMS."
        },
        {
            "to": "34999999992",
            "text": "Outra mensagem a ser enviada via SMS."
        }
    ]
}'
```

Pronto! Agora basta verificar o seu celular, para ver a mensagem entregue ✅

### Acompanhando o resultado dos disparos

Agora que você já realizou o seu disparo, você pode acompanhar pelo portal da Hyperflow o resultados dos seus disparos.

<figure><img src="/files/znhZEvJEcFg2e25RY1tK" alt=""><figcaption><p>Tela para verificar o status dos SMS's disparados</p></figcaption></figure>

Nesta tela é possível filtrar por data, e você receberá uma visão consolidada por chave de API, do status dos envios realizados.

Também é possível realizar uma consulta detalhada, tendo uma resposta exata de cada envio realizado.

Para isso, basta entrar em **"Detalhes"** e filtrar o período desejado. Você pode baixar um relatório em .csv, clicando no botão **"Exportar"**

<figure><img src="/files/QzfbakJBKnNRVA6JubjQ" alt=""><figcaption><p>Detalhes dos SMS enviados</p></figcaption></figure>

Caso tenha qualquer outra dúvida, favor acionar o nosso suporte.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.hyperflow.global/docs/canais-de-atendimento/sms.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
