# Envio de mensagens (MT)

### URL para envios unitários com método POST <a href="#url-para-envios-unit-rios-com-m-todo-post" id="url-para-envios-unit-rios-com-m-todo-post"></a>

`POST https://api-messaging.wavy.global/v1/send-sms - Content-Type: application/json`

#### Parametros da Requisição <a href="#parametros-da-requisi-o" id="parametros-da-requisi-o"></a>

\* Campo obrigatório

<table><thead><tr><th width="173">Campo</th><th width="440">Detalhes</th><th>Tipo</th></tr></thead><tbody><tr><td>destination*</td><td>Telefone para qual será enviada a mensagem (incluido código de país). Exemplo: 5511900000000</td><td>String</td></tr><tr><td>messageText*</td><td>Texto da mensagem que será enviada (max 1280 chars).</td><td>String</td></tr><tr><td>correlationId</td><td>Um ID único definido por você para batimento com os status de envio (callback e DLR). Este parâmetro é opcional, e você pode utilizar o ID gerado pela Wavy para este batimento (max 64 chars).</td><td>String</td></tr><tr><td>extraInfo</td><td>Qualquer informação extra que você deseja adicionar a mensagem (max 255 chars).</td><td>String</td></tr><tr><td>timeWindow</td><td>Mensagens serão enviadas apenas no horário especificado. Por exemplo, Se você configurar uma janela [11, 12, 18], as mensagens serão enviadas entre 11:00 e 11:59, 12:00 e 12:59 e 18:00 e 18:59, este parâmetro deve ser definido na raiz do objeto JSON</td><td>Integer[]</td></tr><tr><td>expiresAt</td><td>A mensagem não será enviada após esta data. O formato utilizado é o <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> . Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>expiresInMinutes</td><td>A mensagem será expirada após o tempo informado neste campo. O tempo passa a ser ontabilizado assim que a mensagem é recebida pela Wavy.. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>expiresDate</td><td>A mensagem não será enviada após esta data. O campo aceita o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>String</td></tr><tr><td>scheduledAt</td><td>A mensagem não será enviada após esta data. IMPORTANTE! É possivel realizar o agendamento apenas em um periodo superior a 30 minutos, pois é processado por um fluxo diferenciado do envio sem agendamento. O formato utilizado é o <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a>. Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>delayedInMinutes</td><td>Minutos depois que a requisição é feita que a mensagem será enviada. Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>scheduledDate</td><td>A mensagem não será enviada antes desta data. O campo suporta o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>String</td></tr><tr><td>timeZone</td><td>Especifica o timezone que será utilizado diretamente nos campos: expiresDate, scheduledDate and timeWindow (que será modificado caso seja utilizado timezones dinamicos, como os com horário de verão). Se o timezone não estiver presente na requisição o sistema irá verificar o timezone do usuário - se presente - ou o timezone do país do usuário em último caso. Se nenhuma das opções estiverem presentes, o sistema irá utlizar o horário UTC</td><td>String</td></tr><tr><td>campaignAlias</td><td>Identificação de campanha criada previamente. <a href="https://messaging.wavy.global/dashboard/campaigns">Clique aqui</a> para registar uma nova campanha, este parâmetro deve ser definido na raiz do objeto JSON</td><td>String</td></tr><tr><td>flashSMS</td><td>Flash SMS, use esta opção para enviar uma mensagem pop-up no telefone do usuário. Para enviar uma mensagem Flash passe o parametro true.</td><td>Boolean</td></tr><tr><td>flowId</td><td>Identificador do fluxo de Bot. O texto da mensagem virá do fluxo selecionado</td><td>String</td></tr><tr><td>subAccount</td><td>Referência da subconta. Ela só pode ser utilizada por usuários Administradores</td><td>String</td></tr><tr><td>params</td><td>Mapa de placeholders que serão substituídos no texto da mensagem. Se um ou mais parâmetros estiverem incorretos, a mensagem será marcada como inválida, mas o envio não será cancelado. É necessário enviar o flowId para utilizar os parâmetros</td><td>Map</td></tr></tbody></table>

{% tabs %}
{% tab title="cURL" %}

```
curl -X POST \
  https://api-messaging.wavy.global/v1/send-sms \
  -H 'authenticationtoken: <authenticationtoken>' \
  -H 'username: <username>' \
  -H 'content-type: application/json' \
  -d '{"destination": "5511900000000" , "messageText": "linha\nquebrada"}'
```

{% endtab %}

{% tab title="Ruby" %}

```
require 'uri'
require 'net/http'

url = URI("https://api-messaging.wavy.global/v1/send-sms")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["username"] = '<username>'
request["authenticationtoken"] = '<authenticationtoken>'
request["content-type"] = 'application/json'
request.body = "{\"destination\": \"5511900000000\" ,  \"messageText\": \"linha\\nquebrada\"}"

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="Python" %}

```
import requests

url = "https://api-messaging.wavy.global/v1/send-sms"

payload = "{\"destination\": \"5511900000000\" ,  \"messageText\": \"linha\\nquebrada\"}"
headers = {
    'username': "<username>",
    'authenticationtoken': "<authenticationtoken>",
    'content-type': "application/json"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
```

{% endtab %}

{% tab title="PHP" %}

```
> sudo apt-get/yum install php5-curl

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-messaging.wavy.global/v1/send-sms",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{\"destination\": \"5511900000000\" ,  \"messageText\": \"linha\\nquebrada\"}",
  CURLOPT_HTTPHEADER => array(
    "authenticationtoken: <authenticationtoken>",
    "username: <username>",
    "content-type: application/json"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

{% endtab %}

{% tab title="Java" %}

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class SendSms {

    public static void main(String[] args) {
        String url = "https://api-messaging.wavy.global/v1/send-sms";

        String userName = "<username>";
        String authenticationToken = "<authenticationtoken>";

        String body = "{\"destination\": \"5511900000000\" ,  \"messageText\": \"linha\\nquebrada\"}";

        String response = doPost(url, body, userName, authenticationToken);
        System.out.println(response);
    }

    public static String doPost(String strUrl, String request, String userName, String authenticationToken) {
        HttpURLConnection conn = null;
        OutputStreamWriter wr = null;
        BufferedReader br = null;
        try {
            URL url = new URL(strUrl);

            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setInstanceFollowRedirects(true);
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);

            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("UserName", userName);
            conn.setRequestProperty("AuthenticationToken", authenticationToken);

            // write the request
            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(request);
            wr.close();

            // read the response
            br = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            StringBuilder resp = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                resp.append(line).append("\n");
            }
            return resp.toString();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (wr != null) {
                    wr.close();
                }
                if (br != null) {
                    br.close();
                }
                if (conn != null) {
                    conn.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
```

{% endtab %}
{% endtabs %}

Ao fazer o envio, você receberá um JSON informando o id que foi gerado para esta mensagem (Response ou Resposta síncrona da Wavy):

{% tabs %}
{% tab title="cURL" %}

```
[
  {
  "id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
  "correlationId":"myId"
  }
]
```

{% endtab %}

{% tab title="Ruby" %}

```
[
  {
  "id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
  "correlationId":"myId"
  }
]
```

{% endtab %}

{% tab title="Python" %}

```
[
  {
  "id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
  "correlationId":"myId"
  }
]
```

{% endtab %}

{% tab title="PHP" %}

```
[
  {
  "id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
  "correlationId":"myId"
  }
]
```

{% endtab %}

{% tab title="Java" %}

```
[
  {
  "id":"9cb87d36-79af-11e5-89f3-1b0591cdf807",
  "correlationId":"myId"
  }
]
```

Via método GET, é possivel realizar o envio de uma mensagem passando todos os parâmetros como query string.

#### URL para envios unitários com método GET <a href="#url-para-envios-unit-rios-com-m-todo-get" id="url-para-envios-unit-rios-com-m-todo-get"></a>

`GET https://api-messaging.wavy.global/v1/send-sms?destination=..`

Via método POST, é possivel realizar o envio de uma mensagem passando todos os parâmetros no body.

#### URL para envios unitários com método POST <a href="#url-para-envios-unit-rios-com-m-todo-post" id="url-para-envios-unit-rios-com-m-todo-post"></a>

`POST https://api-messaging.wavy.global/v1/send-sms - Content-Type: application/json`

#### Parametros da Requisição <a href="#parametros-da-requisi-o" id="parametros-da-requisi-o"></a>

\* Campo obrigatório

| Campo            | Detalhes                                                                                                                                                                                                                                                                                                                                                                                                                                               | Tipo       |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------- |
| destination\*    | Telefone para qual será enviada a mensagem (incluido código de país). Exemplo: 5511900000000                                                                                                                                                                                                                                                                                                                                                           | String     |
| messageText\*    | Texto da mensagem que será enviada (max 1280 chars).                                                                                                                                                                                                                                                                                                                                                                                                   | String     |
| correlationId    | Um ID único definido por você para batimento com os status de envio (callback e DLR). Este parâmetro é opcional, e você pode utilizar o ID gerado pela Wavy para este batimento (max 64 chars).                                                                                                                                                                                                                                                        | String     |
| extraInfo        | Qualquer informação extra que você deseja adicionar a mensagem (max 255 chars).                                                                                                                                                                                                                                                                                                                                                                        | String     |
| timeWindow       | Mensagens serão enviadas apenas no horário especificado. Por exemplo, Se você configurar uma janela \[11, 12, 18], as mensagens serão enviadas entre 11:00 e 11:59, 12:00 e 12:59 e 18:00 e 18:59, este parâmetro deve ser definido na raiz do objeto JSON                                                                                                                                                                                             | Integer\[] |
| expiresAt        | A mensagem não será enviada após esta data. O formato utilizado é o [Unix time](https://en.wikipedia.org/wiki/Unix_time) . Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                                                                                                                                                                                   | Long       |
| expiresInMinutes | A mensagem será expirada após o tempo informado neste campo. O tempo passa a ser ontabilizado assim que a mensagem é recebida pela Wavy.. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                                                                                                                                                                    | Long       |
| expiresDate      | A mensagem não será enviada após esta data. O campo aceita o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                                                                                                                                                                                                         | String     |
| scheduledAt      | A mensagem não será enviada após esta data. IMPORTANTE! É possivel realizar o agendamento apenas em um periodo superior a 30 minutos, pois é processado por um fluxo diferenciado do envio sem agendamento. O formato utilizado é o [Unix time](https://en.wikipedia.org/wiki/Unix_time). Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                         | Long       |
| delayedInMinutes | Minutos depois que a requisição é feita que a mensagem será enviada. Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                                                                                                                                                                                                                                              | Long       |
| scheduledDate    | A mensagem não será enviada antes desta data. O campo suporta o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)                                                                                                                                                                                                                                      | String     |
| timeZone         | Especifica o timezone que será utilizado diretamente nos campos: expiresDate, scheduledDate and timeWindow (que será modificado caso seja utilizado timezones dinamicos, como os com horário de verão). Se o timezone não estiver presente na requisição o sistema irá verificar o timezone do usuário - se presente - ou o timezone do país do usuário em último caso. Se nenhuma das opções estiverem presentes, o sistema irá utlizar o horário UTC | String     |
| campaignAlias    | Identificação de campanha criada previamente. [Clique aqui](https://messaging.wavy.global/dashboard/campaigns) para registar uma nova campanha, este parâmetro deve ser definido na raiz do objeto JSON                                                                                                                                                                                                                                                | String     |
| flashSMS         | Flash SMS, use esta opção para enviar uma mensagem pop-up no telefone do usuário. Para enviar uma mensagem Flash passe o parametro true.                                                                                                                                                                                                                                                                                                               | Boolean    |
| flowId           | Identificador do fluxo de Bot. O texto da mensagem virá do fluxo selecionado                                                                                                                                                                                                                                                                                                                                                                           | String     |
| subAccount       | Referência da subconta. Ela só pode ser utilizada por usuários Administradores                                                                                                                                                                                                                                                                                                                                                                         | String     |
| params           | Mapa de placeholders que serão substituídos no texto da mensagem. Se um ou mais parâmetros estiverem incorretos, a mensagem será marcada como inválida, mas o envio não será cancelado. É necessário enviar o flowId para utilizar os parâmetros                                                                                                                                                                                                       | Map        |

#### Envio por método POST - Individual ou em lote <a href="#envio-por-m-todo-post-individual-ou-em-lote" id="envio-por-m-todo-post-individual-ou-em-lote"></a>

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class SendSms {

    public static void main(String[] args) {
        String url = "https://api-messaging.wavy.global/v1/send-bulk-sms";

        String userName = "<username>";
        String authenticationToken = "<authenticationtoken>";

        String body = "{ \"messages\":[{ \"destination\":\"5519999999999\", \"messageText\":\"First message\" }," +
                " { \"destination\":\"5519999999999\" }, { \"destination\":\"5519999999999\" }]," +
                " \"defaultValues\":{\"messageText\":\"Default message\" }}";

        String response = doPost(url, body, userName, authenticationToken);
        System.out.println(response);
    }

    public static String doPost(String strUrl, String request, String userName, String authenticationToken) {
        HttpURLConnection conn = null;
        OutputStreamWriter wr = null;
        BufferedReader br = null;
        try {
            URL url = new URL(strUrl);

            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setInstanceFollowRedirects(true);
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);

            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("UserName", userName);
            conn.setRequestProperty("AuthenticationToken", authenticationToken);

            // write the request
            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(request);
            wr.close();

            // read the response
            br = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            StringBuilder resp = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                resp.append(line).append("\n");
            }
            return resp.toString();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (wr != null) {
                    wr.close();
                }
                if (br != null) {
                    br.close();
                }
                if (conn != null) {
                    conn.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
```

{% endtab %}
{% endtabs %}

### Envio por método POST - Individual ou em lote <a href="#envio-por-m-todo-post-individual-ou-em-lote" id="envio-por-m-todo-post-individual-ou-em-lote"></a>

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

{% hint style="danger" %}
**Existe um limite de 1000 mensagens por requisição**
{% endhint %}

### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

`POST https://api-messaging.wavy.global/v1/send-bulk-sms Content-Type: application/json`

O corpo da requisição precisa conter o objeto JSON com as informações conforme campos abaixo:

\* Campo obrigatório

<table><thead><tr><th width="163">Campo</th><th width="485">Detalhes</th><th>Tipo</th></tr></thead><tbody><tr><td>destination*</td><td>Telefone para qual será enviada a mensagem (incluido código de país). Exemplo: 5511900000000</td><td>String</td></tr><tr><td>messageText*</td><td>Texto da mensagem que será enviada (max 1280 chars).</td><td>String</td></tr><tr><td>correlationId</td><td>Um ID único definido por você para batimento com os status de envio (callback e DLR). Este parâmetro é opcional, e você pode utilizar o ID gerado pela Wavy para este batimento (max 64 chars).</td><td>String</td></tr><tr><td>extraInfo</td><td>Qualquer informação extra que você deseja adicionar a mensagem (max 255 chars).</td><td>String</td></tr><tr><td>timeWindow</td><td>Mensagens serão enviadas apenas no horário especificado. Por exemplo, Se você configurar uma janela [11, 12, 18], as mensagens serão enviadas entre 11:00 e 11:59, 12:00 e 12:59 e 18:00 e 18:59</td><td>Integer[]</td></tr><tr><td>expiresAt</td><td>A mensagem não será enviada após esta data. O formato utilizado é o <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a> . Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>expiresInMinutes</td><td>A mensagem será expirada após o tempo informado neste campo. O tempo passa a ser ontabilizado assim que a mensagem é recebida pela Wavy.. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>expiresDate</td><td>A mensagem não será enviada após esta data. O campo aceita o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>String</td></tr><tr><td>scheduledAt</td><td>A mensagem não será enviada após esta data. O formato utilizado é o <a href="https://en.wikipedia.org/wiki/Unix_time">Unix time</a>. Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>delayedInMinutes</td><td>Minutos depois que a requisição é feita que a mensagem será enviada. Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>Long</td></tr><tr><td>scheduledDate</td><td>A mensagem não será enviada antes desta data. O campo suporta o seguinte formato yyyy-MM-dd’T'HH:mm:ss. Obs: Os campos expiresAt, expiresInMinutes e expiresDate são mutuamente exclusivos (use somente um deles)</td><td>String</td></tr><tr><td>timeZone</td><td>Especifica o timezone que será utilizado diretamente nos campos: expiresDate, scheduledDate and timeWindow (que será modificado caso seja utilizado timezones dinamicos, como os com horário de verão). Se o timezone não estiver presente na requisição o sistema irá verificar o timezone do usuário - se presente - ou o timezone do país do usuário em último caso. Se nenhuma das opções estiverem presentes, o sistema irá utlizar o horário UTC</td><td>String</td></tr><tr><td>campaignAlias</td><td>Identificação de campanha criada previamente. <a href="https://messaging.wavy.global/dashboard/campaigns">Clique aqui</a> para registar uma nova campanha</td><td>String</td></tr><tr><td>flashSMS</td><td>Flash SMS, use esta opção para enviar uma mensagem pop-up no telefone do usuário. Para enviar uma mensagem Flash passe o parametro true.</td><td>Boolean</td></tr><tr><td>flowId</td><td>Identificador do fluxo de Bot. O texto da mensagem virá do fluxo selecionado</td><td>String</td></tr><tr><td>subAccount</td><td>Referência da subconta. Ela só pode ser utilizada por usuários Administradores</td><td>String</td></tr><tr><td>params</td><td>Mapa de placeholders que serão substituídos no texto da mensagem. Se um ou mais parâmetros estiverem incorretos, a mensagem será marcada como inválida, mas o envio não será cancelado. É necessário enviar o flowId para utilizar os parâmetros</td><td>Map</td></tr></tbody></table>

{% hint style="danger" %}
**IMPORTANTE! Para cada subconta existe um usuário de sistema único.**
{% endhint %}

{% tabs %}
{% tab title="cURL" %}

```
curl --request POST \
  --url https://api-messaging.wavy.global/v1/send-bulk-sms \
  --header 'authenticationtoken: <Token de autenticação>' \
  --header 'username:<Usuário Wavy Messaging>' \
  --header 'content-type: application/json' \
  --data "{ "messages":[{ "destination":"5519999999999", "messageText":"First message" }, { "destination":"5519999999999" }, { "destination":"5519999999999" }], "defaultValues":{"messageText":"Default message" }}"
```

{% endtab %}

{% tab title="Ruby" %}

```
require 'uri'
require 'net/http'

url = URI("https://api-messaging.wavy.global/v1/send-bulk-sms")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["username"] = '<username>'
request["authenticationtoken"] = '<authenticationtoken>'
request["content-type"] = 'application/json'
request.body = '{ "messages":[{ "destination":"5519999999999", "messageText":"First message" }, { "destination":"5519999999999" }, { "destination":"5519999999999" }], "defaultValues":{"messageText":"Default message" }}'

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="Python" %}

```
import requests

url = "https://api-messaging.wavy.global/v1/send-bulk-sms"

payload = '{ "messages":[{ "destination":"5519999999999", "messageText":"First message" }, { "destination":"5519999999999" }, { "destination":"5519999999999" }], "defaultValues":{"messageText":"Default message" }}'
headers = {
    'username': "<username>",
    'authenticationtoken': "<authenticationtoken>",
    'content-type': "application/json"
    }

response = requests.request("POST", url, data=payload, headers=headers)

print(response.text)
```

{% endtab %}

{% tab title="PHP" %}

```
Mod: curl

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api-messaging.wavy.global/v1/send-bulk-sms",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => "{ \"messages\":[{ \"destination\":\"5519999999999\", \"messageText\":\"First message\" }, { \"destination\":\"5519999999999\" }, { \"destination\":\"5519999999999\" }], \"defaultValues\":{\"messageText\":\"Default message\" }}",
  CURLOPT_HTTPHEADER => array(
    "authenticationtoken: <authenticationtoken>",
    "content-type: application/json",
    "username: <username>"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
```

{% endtab %}

{% tab title="Java" %}

```
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;

public class SendSms {

    public static void main(String[] args) {
        String url = "https://api-messaging.wavy.global/v1/send-bulk-sms";

        String userName = "<username>";
        String authenticationToken = "<authenticationtoken>";

        String body = "{ \"messages\":[{ \"destination\":\"5519999999999\", \"messageText\":\"First message\" }," +
                " { \"destination\":\"5519999999999\" }, { \"destination\":\"5519999999999\" }]," +
                " \"defaultValues\":{\"messageText\":\"Default message\" }}";

        String response = doPost(url, body, userName, authenticationToken);
        System.out.println(response);
    }

    public static String doPost(String strUrl, String request, String userName, String authenticationToken) {
        HttpURLConnection conn = null;
        OutputStreamWriter wr = null;
        BufferedReader br = null;
        try {
            URL url = new URL(strUrl);

            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("POST");
            conn.setDoOutput(true);
            conn.setUseCaches(false);
            conn.setInstanceFollowRedirects(true);
            conn.setConnectTimeout(30000);
            conn.setReadTimeout(30000);

            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("UserName", userName);
            conn.setRequestProperty("AuthenticationToken", authenticationToken);

            // write the request
            wr = new OutputStreamWriter(conn.getOutputStream());
            wr.write(request);
            wr.close();

            // read the response
            br = new BufferedReader(new InputStreamReader(conn.getInputStream()));

            StringBuilder resp = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                resp.append(line).append("\n");
            }
            return resp.toString();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if (wr != null) {
                    wr.close();
                }
                if (br != null) {
                    br.close();
                }
                if (conn != null) {
                    conn.disconnect();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
}
```

{% endtab %}
{% endtabs %}

Ao fazer o envio, será retornado um objeto JSON com o UUID do lote e das mensagens individuais :

{% tabs %}
{% tab title="cURL" %}

```
{
  "id": "ce528d70-013b-11e7-98f2-e27c463c8809",
  "messages": [
    {
      "id": "ce528d71-013b-11e7-98f2-e27c463c8809"
    },
    {
      "id": "ce528d72-013b-11e7-98f2-e27c463c8809"
    }
  ]
}
```

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

&#x20;Existe um limite de 1000 mensagens por requisição

#### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

> Exemplo de JSON para envio em Lote:
>
> Exemplo 1:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    },
    {
      "destination":"5519900003333"
    }
  ],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 2:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "timeZone":"America/Sao_Paulo",
  "scheduledDate": "2017-01-28T02:30:43",
  "timeWindow": [12, 15, 20],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 3:

```
{
  "messages":[
    {
      "destination":"5519900001111"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "messageText":"Default message",
    "flashSMS":"true"
  }
}
```

> Exemplo 4, com flowId e params:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "params": {
        "param1": "other_value1",
        "param2": "other_value2"
      }
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "params": {
      "param1": "value1",
      "param2": "value2"
    }
  },
  "flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
```

{% endtab %}

{% tab title="Ruby" %}

```
 {
  "id": "ce528d70-013b-11e7-98f2-e27c463c8809",
  "messages": [
    {
      "id": "ce528d71-013b-11e7-98f2-e27c463c8809"
    },
    {
      "id": "ce528d72-013b-11e7-98f2-e27c463c8809"
    }
  ]
}
```

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

&#x20;Existe um limite de 1000 mensagens por requisição

#### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

> Exemplo de JSON para envio em Lote:
>
> Exemplo 1:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    },
    {
      "destination":"5519900003333"
    }
  ],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 2:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "timeZone":"America/Sao_Paulo",
  "scheduledDate": "2017-01-28T02:30:43",
  "timeWindow": [12, 15, 20],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 3:

```
{
  "messages":[
    {
      "destination":"5519900001111"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "messageText":"Default message",
    "flashSMS":"true"
  }
}
```

> Exemplo 4, com flowId e params:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "params": {
        "param1": "other_value1",
        "param2": "other_value2"
      }
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "params": {
      "param1": "value1",
      "param2": "value2"
    }
  },
  "flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
```

{% endtab %}

{% tab title="Python" %}

```
{
  "id": "ce528d70-013b-11e7-98f2-e27c463c8809",
  "messages": [
    {
      "id": "ce528d71-013b-11e7-98f2-e27c463c8809"
    },
    {
      "id": "ce528d72-013b-11e7-98f2-e27c463c8809"
    }
  ]
}
```

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

&#x20;Existe um limite de 1000 mensagens por requisição

#### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

> Exemplo de JSON para envio em Lote:
>
> Exemplo 1:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    },
    {
      "destination":"5519900003333"
    }
  ],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 2:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "timeZone":"America/Sao_Paulo",
  "scheduledDate": "2017-01-28T02:30:43",
  "timeWindow": [12, 15, 20],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 3:

```
{
  "messages":[
    {
      "destination":"5519900001111"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "messageText":"Default message",
    "flashSMS":"true"
  }
}
```

> Exemplo 4, com flowId e params:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "params": {
        "param1": "other_value1",
        "param2": "other_value2"
      }
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "params": {
      "param1": "value1",
      "param2": "value2"
    }
  },
  "flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
```

{% endtab %}

{% tab title="PHP" %}

```
{
  "id": "ce528d70-013b-11e7-98f2-e27c463c8809",
  "messages": [
    {
      "id": "ce528d71-013b-11e7-98f2-e27c463c8809"
    },
    {
      "id": "ce528d72-013b-11e7-98f2-e27c463c8809"
    }
  ]
}
```

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

&#x20;Existe um limite de 1000 mensagens por requisição

#### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

> Exemplo de JSON para envio em Lote:
>
> Exemplo 1:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    },
    {
      "destination":"5519900003333"
    }
  ],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 2:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "timeZone":"America/Sao_Paulo",
  "scheduledDate": "2017-01-28T02:30:43",
  "timeWindow": [12, 15, 20],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 3:

```
{
  "messages":[
    {
      "destination":"5519900001111"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "messageText":"Default message",
    "flashSMS":"true"
  }
}
```

> Exemplo 4, com flowId e params:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "params": {
        "param1": "other_value1",
        "param2": "other_value2"
      }
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "params": {
      "param1": "value1",
      "param2": "value2"
    }
  },
  "flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
```

{% endtab %}

{% tab title="Java" %}

```
{
  "id": "ce528d70-013b-11e7-98f2-e27c463c8809",
  "messages": [
    {
      "id": "ce528d71-013b-11e7-98f2-e27c463c8809"
    },
    {
      "id": "ce528d72-013b-11e7-98f2-e27c463c8809"
    }
  ]
}
```

Permite o envio de mensagens em lote ou individuais passando os parametros em um objeto JSON

&#x20;Existe um limite de 1000 mensagens por requisição

#### Requisição HTTP Method POST <a href="#requisi-o-http-method-post" id="requisi-o-http-method-post"></a>

> Exemplo de JSON para envio em Lote:
>
> Exemplo 1:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    },
    {
      "destination":"5519900003333"
    }
  ],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 2:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "messageText":"First message"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "timeZone":"America/Sao_Paulo",
  "scheduledDate": "2017-01-28T02:30:43",
  "timeWindow": [12, 15, 20],
  "defaultValues":{
    "messageText":"Default message"
  }
}
```

> Exemplo 3:

```
{
  "messages":[
    {
      "destination":"5519900001111"
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "messageText":"Default message",
    "flashSMS":"true"
  }
}
```

> Exemplo 4, com flowId e params:

```
{
  "messages":[
    {
      "destination":"5519900001111",
      "params": {
        "param1": "other_value1",
        "param2": "other_value2"
      }
    },
    {
      "destination":"5519900002222"
    }
  ],
  "defaultValues":{
    "params": {
      "param1": "value1",
      "param2": "value2"
    }
  },
  "flowId": "14f8142d-e731-4971-8220-5a76a12c413f"
}
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
Observe que nos exemplos acima, alguns campos “destination” não possuem um “messageText” atribuido direto a eles, nestes casos, o texto da mensagem será o “messageText” dentro de “defaultValues”. Essa função é útil quando é necessário o envio da mesma mensagem para vários números diferentes
{% endhint %}

### Respostas de mensagens em lote <a href="#respostas-de-mensagens-em-lote" id="respostas-de-mensagens-em-lote"></a>

A resposta do envio em lote conterá um arquivo JSON com as informações necessárias para rastreio, será gerado um id para o lote todo e um id e correlationId individual para cada mensagem:

<table><thead><tr><th width="141">Campo</th><th width="451">Detalhes</th><th>Tipo</th></tr></thead><tbody><tr><td>id</td><td>UUID gerado para este lote</td><td>String</td></tr><tr><td>messages</td><td>Este campo é um array com as respostas das mensanges individuais do lote, contém o id e o correlationId de cada mensagem enviada</td><td>SingleSMSResponse[]</td></tr></tbody></table>
