Enviar Mensagens Multimídia do WhatsApp Via API

23 de abril de 2024

Bem-vindo ao mundo energético de mensagens multimídia via API! Aqui está sua chance de revolucionar seus chats do WhatsApp enviando não apenas texto, mas toda uma gama de tipos de mídia. Pense em deixar suas mensagens mais atrativas com GIFs legais, documentos importantes ou até vídeos envolventes diretamente do seu computador!

Este tutorial não é só para gurus de tecnologia. Quer você seja novo em programação ou já tenha alguma experiência, você descobrirá como apenas algumas linhas de código podem dar vida às suas mensagens. Estamos falando de tornar suas conversas mais ricas e coloridas, transformando cada mensagem em uma experiência.

Pronto para dar um toque especial aos seus chats e se conectar com seu público de uma forma totalmente nova? Vamos mergulhar nesta aventura multimídia e ver como é simples fazer suas mensagens se destacarem!

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e comece em minutos**!**

Neste tutorial, você aprenderá como enviar mensagens multimídia para números de telefone e listas de chats em grupo usando a API.

Um arquivo de mídia pode ser qualquer um dos seguintes: imagens (JPEG, PNG, WEBP), vídeos (MP4, 3GPP), áudios (MP3, OGG, MP4, ACC), gifs (MP4) e documentos (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, outros tipos binários).

Se você precisa enviar mensagens a partir de código, pode usar qualquer linguagem de programação que consiga fazer requisições HTTPS para a API. Abaixo você encontrará o testador de API ao vivo com exemplos de código prontos para uso em várias linguagens de programação.

Requisitos

  • Ter um número WhatsApp já vinculado à plataforma e online.
  • Número de telefone do destinatário com prefixo internacional no formato E164. Exemplo: +12345678900. Valide o formato do número aqui.

Endpoints da API

Neste tutorial utilizaremos o seguinte endpoint da API:

Novidade! Agora você pode enviar mensagens de mídia em uma única requisição de API passando a URL remota onde o arquivo está armazenado. Clique aqui para testar

Fazer upload do arquivo

Para enviar um arquivo como mensagem multimídia, neste caso, um arquivo de imagem, você deve primeiro fazer o upload do arquivo para a plataforma.

Você pode enviar o arquivo usando os seguintes métodos via API:

  • URL remota usando JSON com um campo url com a URL publicamente acessível para download do arquivo (recomendado).
  • Form data (multipart/form-data) usando o campo file com o conteúdo do arquivo.
  • Dados binários brutos fazendo upload do conteúdo do arquivo como um stream de dados com o MIME type apropriado no cabeçalho Content-Type, por exemplo: image/jpeg, application/pdf.

Neste tutorial, cobriremos os dois primeiros métodos de upload de arquivos.

Enviar o arquivo permite que o sistema valide e armazene o arquivo apenas uma vez, evitando o custo de upload e processamento cada vez que uma mensagem de mídia é entregue, e assim melhorando a velocidade de entrega da mensagem e simplificando a integração com a API.

Observe que o arquivo enviado será armazenado na plataforma por 90 dias por padrão, portanto na maioria dos casos você deve enviar o arquivo apenas uma vez. Opcionalmente, você também pode configurar por quanto tempo o arquivo deve ser armazenado na plataforma definindo um tempo de expiração personalizado, para mais detalhes consulte a documentação da API. Por padrão, sua conta tem 10GB de capacidade de armazenamento de arquivos na nuvem.

Fazer upload do arquivo usando uma URL remota

Você pode enviar qualquer arquivo para a plataforma simplesmente especificando a URL pública de onde baixar o arquivo.

Caso a URL não seja publicamente acessível, retorne um status HTTP inválido (>=400) ou retorne conteúdo não binário, como HTML ou texto, a API retornará um erro.

Target API URL (POST)

https://api.wassenger.com/v1/files

Cabeçalhos HTTPS obrigatórios

Content-Type: application/json
Token: $API-TOKEN

Corpo da requisição em formato JSON

{
  "url": "https://picsum.photos/seed/picsum/600/400"
}

Alternativamente, você também pode especificar campos opcionais ao enviar o arquivo, como um tempo de expiração personalizado, identificador de referência ou um nome de arquivo personalizado.

{
  "url": "https://picsum.photos/seed/picsum/600/400",
  "expiration": "1d",
  "filename": "custom-filename.jpg",
  "reference": "Optional reference ID"
}

Obter o ID do arquivo a partir da resposta da API

Se o arquivo for corretamente enviado para a plataforma, a API retornará uma resposta válida em formato JSON como esta:

[
  {
    "id": "[Redacted ID]",
    "format": "native",
    "filename": "sample.jpg",
    "size": 53697,
    "mime": "image/jpeg",
    "ext": "jpeg",
    "kind": "image",
    "sha2": "[Redacted Hash]",
    "tags": [],
    "status": "active",
    "mode": "default",
    "createdAt": "2021-05-08T22:49:50.954Z",
    "expiresAt": "2021-09-06T22:49:50.949Z"
  }
]

Importante: Do JSON de resposta você deve obter o campo id com um valor, por exemplo 06248ed01a7a65946c0701, que representa o ID único do arquivo que usaremos posteriormente para enviar o arquivo como mensagem de mídia em uma requisição API separada.

Fazer upload do arquivo usando multipart form data

Você pode enviar qualquer arquivo para a plataforma usando o mecanismo tradicional de multipart form data amplamente usado por navegadores web para enviar diferentes tipos de conteúdo, incluindo arquivos, para um servidor remoto.

Aqui você pode aprender mais sobre como funciona o upload multipart form.

Target API URL (POST)

https://api.wassenger.com/v1/files

Cabeçalhos HTTPS obrigatórios

Content-Type: multipart/form-data
Token: $API-TOKEN

Corpo da requisição

Diferentemente do upload baseado em JSON, neste caso precisamos confiar em um mecanismo mais complexo baseado no cliente HTTP que estamos usando, que nos ajudará a compor os campos do formulário de acordo com a especificação multipart.

Dependendo da linguagem de programação ou do software cliente HTTP que você estiver usando, o processo pode variar. Para simplificar, destacaremos as ferramentas mais populares, como Postman, e linguagens de programação populares.

O requisito principal é definir o campo file no formulário de dados, caso contrário, a API retornará um erro pois esse campo é obrigatório.

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começar em minutos**!**

Fazer upload do arquivo pelo seu navegador web

Você pode enviar arquivos manualmente com facilidade para a plataforma a partir do console web sem instalar nenhum software:

Para upload automatizado de arquivos, veja as opções alternativas abaixo.

Fazer upload do arquivo usando cURL

cURL é um cliente HTTP de linha de comando popular e útil.

Você pode enviar arquivos facilmente da linha de comando usando o seguinte comando, onde path/to/image.jpg deve representar o caminho do arquivo que você quer enviar do seu disco local:

curl \
-F file=@path/to/image.jpg \
-H 'Token: $API-TOKEN' \
https://api.wassenger.com/v1/files

Fazer upload do arquivo usando Postman

Postman é uma ferramenta versátil e prática para teste e depuração HTTP.

Seguindo este tutorial simples, você pode enviar arquivos usando o Postman, substituindo a URL de destino pela da API.

Explore o tutorial do Postman aqui

Fazer upload do arquivo usando código

Explore como usar o código no seu navegador sem instalar nenhum software.

Além disso, você pode encontrar diferentes linguagens que pode testar em Replit.com:

# Requires to install requests package:
# Run: pip install requests
import requests
# Customize the local path of the file to upload
filepath = '/path/to/image.jpg'
# API key required in order to authenticate the upload
apikey = '$API_KEY'
# Read file to upload
files = {'file': open(filepath, 'rb')}
# Upload file
response = requests.post('https://api.wassenger.com/v1/files', files=files)
if response.status_code >= 400:
print('Request failed with invalid status:', response.status_code)
else:
json = response.json()
file_id = json[0]['id']
print('File uploaded successfully with ID:', file_id)
// Customize the local path of the file to upload
$filepath = '/path/to/image.jpg';
// API key required in order to authenticate the upload
$apikey = '$API_KEY';
// Upload file
$upload = curl_init();
curl_setopt_array($upload, array(
CURLOPT_URL => 'https://api.wassenger.com/v1/files', 
CURLOPT_HTTPHEADER => array(
"Token: $apikey"
), 
CURLOPT_POSTFIELDS => array(
'file' => new CURLFile($filepath)
), 
CURLOPT_POST => TRUE, 
CURLOPT_SSL_VERIFYPEER => FALSE, 
CURLOPT_SSL_VERIFYHOST => FALSE
);
$response = curl_exec($upload);
if(curl_errno($ch) {
echo("Request failed");
} else if(curl_getinfo($ch, CURLINFO_HTTP_CODE) >= 400) {
echo("Invalid request or unsupported file to upload");
} else {
$json = json_decode($response, true);
$file_id = $json[0]['id'];
echo("File uploaded successfully with ID: $file_id");
}
// Requires to install pecl_http package
// Run: pecl install pecl_http
// More information: https://pecl.php.net/package/pecl_http/3.2.0
$client = new http\Client;
$request = new http\Client\Request;
// Customize the local path of the file to upload
$filepath = '/path/to/image.jpg';
// API key required in order to authenticate the upload
$apikey = '$API_KEY';
// Prepare request
$body = new http\Message\Body;
$body->addForm(null, [
[
'name' => 'file', 
'type' => null, 
'file' => $filename, 
'data' => null
]
]);
$request->setRequestUrl('https://api.wassenger.com/v1/files');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setQuery(new http\QueryString([
'reference' => 'optional-reference-id'
]));
$request->setHeaders([
'Token' => $apikey
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
if($response->getResponseCode() >= 400) {
echo("Invalid request or unsupported file to upload");
} else {
$body = json_decode($response->getBody()->toString());
$file_id = $json[0]['id'];
echo("File uploaded successfully with ID: $file_id");
}
package main
import(
"net/http"
"os"
"bytes"
"path"
"path/filepath"
"mime/multipart"
"io"
"encoding/json"
)
// API key required in order to authenticate the upload
const apiKey = "$API_KEY"
func main() {
# Customize the local path of the file to upload
fileName:= "path/to/image.jpg"
fileDir, _:= os.Getwd()
filePath:= path.Join(fileDir, fileName)
file, _:= os.Open(filePath)
defer file.Close()
body:= &bytes.Buffer{}
writer:= multipart.NewWriter(body)
part, _:= writer.CreateFormFile("file", filepath.Base(file.Name()))
io.Copy(part, file)
writer.Close()
r, _:= http.NewRequest("POST", "https://api.wassenger.com/v1/files", body)
r.Header.Add("Token", apiKey)
r.Header.Add("Content-Type", writer.FormDataContentType())
client:= &http.Client{Timeout: 90 * time.Second}
response, err:= client.Do(r)
if err != nil {
fmt.Printf("Request failed with an error: %s", err.Error())
return
}
if(response.StatusCode >= 400) {
fmt.Printf("Request failed with response status: %d", response.StatusCode)
return
}
body:= []struct{
Id string `json:"id"`
}{}
defer response.Body.Close()
err:= json.NewDecoder(response.Body).Decode(&body)
if err != nil {
fmt.Printf("Failed to decode JSON: %s", err.Error())
return
}
fileId:= body[0].Id
fmt.Printf("File uploaded successfully with ID:", fileId)
}
RestClient restClient = new RestClient("https://api.wassenger.com");
RestRequest restRequest = new RestRequest("/v1/files");
restRequest.Method = Method.POST;
restRequest.AddHeader("Token", "$API_KEY");
restRequest.AddHeader("Content-Type", "multipart/form-data");
restRequest.AddFile("file", "/path/to/image.jpg");
var response = restClient.Execute(restRequest);
var json = JsonConvert.DeserializeObject(response.Content);
var fileId =(string)json[0]["id"];
Console.WriteLine("File uploaded successfully with ID: {0}", fileId);
require 'net/http/post/multipart'
url = URI.parse('https://api.wassenger.com/v1/files')
File.open("/path/to/image.jpg") do |image|
req = Net::HTTP::Post::Multipart.new url.path, "file" => UploadIO.new(image, "image/jpeg", "image.jpg")
req['Token'] = "API_KEY"
res = Net::HTTP.start(url.host, url.port) do |http|
http.request(req)
end
end
List<File> = Unirest.post("https://api.wassenger.com/v1/files")
.header("Token", "API_KEY")
.field("file", new File("/path/to/image.jpg"))
.getBody()

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começar em minutos**!**

Teste ao vivo o upload de arquivo usando a API

Explore nosso testador de API ao vivo

Enviar mensagens de mídia para um número de telefone

Enviar uma nova mensagem de mídia via API é fácil, você só precisa saber o número de telefone alvo no formato E164 e o ID do arquivo enviado (24 caracteres hexadecimais) que você pode obter na lista de arquivos enviados aqui ou pela lista de arquivos enviados via API.

Você pode enviar mensagens para qualquer número de telefone no mundo que possua conta no WhatsApp, não é necessário adicionar o número como contato na agenda do seu dispositivo móvel.

Preparar a requisição

Target API URL (POST)

https://api.wassenger.com/v1/messages

Cabeçalhos HTTPS obrigatórios

Content-Type: application/json
Token: $API_KEY

Corpo da requisição em formato JSON

{
  "phone": "+12345678900",
  "message": "This is a media message example 😀",
  "media": {
    "file": "UPLOADED FILE ID GOES HERE"
  }
}

Agora você pode enviar a mensagem de mídia via API.

Enviar mensagens de mídia para um grupo

Muito semelhante ao cenário anterior, você também pode enviar mensagens de mídia para chats em grupo.

Para enviar mensagens a um grupo, você deve ser participante dele com permissão para enviar mensagens. Se você for administrador do grupo, terá permissão total para enviar mensagens.

Preparar a requisição

Target API URL (POST)

https://api.wassenger.com/v1/messages

Cabeçalhos HTTPS obrigatórios

Content-Type: application/json
Token: $API_KEY

Corpo da requisição em formato JSON

Enviando uma mensagem para um chat de grupo:

{
  "group": "120363163556487865@g.us",
  "message": "This is a media message example sent a group 😀",
  "media": {
    "file": "UPLOADED FILE ID GOES HERE"
  }
}

Teste ao vivo de envio de mensagens de mídia usando a API

Agora você pode reproduzir, depurar e testar a API ao vivo diretamente do seu navegador, explorar e experimentar mais exemplos de API e obter em um clique trechos de código prontos para uso em mais de 15 linguagens de programação 😎

Experimente agora

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100+ casos de uso de API e automatize qualquer coisa no WhatsApp inscrevendo-se para um teste gratuito e começar em minutos**!**

Perguntas frequentes (FAQs)

Que tipo de arquivos de mídia podem ser enviados?

Você pode enviar imagens (JPEG, PNG, WEBP), vídeos (MP4, 3GPP), áudios (MP3, OGG, MP4, ACC), gifs (MP4) e documentos (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, outros tipos binários).

Consulte a documentação da API para mais detalhes.

Como enviar mensagens para vários números de telefone

Você só precisa enviar múltiplas requisições API, uma por número de telefone alvo.

Por exemplo, se quiser enviar uma mensagem para 10 números de telefone, você deve enviar 10 requisições HTTPS independentes para a API.

Não há opção para enviar múltiplas mensagens em uma única requisição de API.

Como validar se um número de telefone pode receber mensagens do WhatsApp

Você pode validar se um determinado número de telefone está ligado a uma conta do WhatsApp e pode receber mensagens.

A API fornece um endpoint que pode validar se um determinado número de telefone existe no WhatsApp ou não.

O único requisito é ter pelo menos um número WhatsApp conectado à plataforma em sua conta atual.

Para mais detalhes, consulte a documentação do endpoint da API aqui.

Antes de verificar se um número existe no WhatsApp, você também pode validar e normalizar o formato de uma lista de números usando o endpoint validador de números. Esse endpoint apenas valida o formato correto E164, mas não verifica se o número efetivamente existe no WhatsApp.

Observação: O número de validações de verificação do WhatsApp é limitado por mês com base no seu plano de assinatura. Verifique a tabela de preços para mais detalhes sobre os limites.

Procurando mais respostas? Consulte as FAQs estendidas.

Recursos úteis adicionais

Documentação da API

Para mais detalhes sobre os endpoints da API, por favor consulte a documentação onde você encontrará todos os detalhes sobre os parâmetros de requisição aceitos, possíveis respostas de sucesso ou erro e exemplos de código prontos para uso em múltiplas linguagens de programação:

https://app.wassenger.com/docs/#tag/Files

Ready to transform your WhatsApp communication?

Start automating your customer interactions today with Wassenger

Get Started Free