Automatizar Mensagens Multimídia do WhatsApp Via API

27 de março de 2025

Por que se contentar com texto simples quando você pode enviar vídeos, imagens, GIFs e arquivos automaticamente? Com apenas um pouco de código, você pode elevar sua comunicação no WhatsApp e fazer com que cada mensagem pareça mais pessoal, envolvente e impactante.

Este guia é para qualquer pessoa, seja você desenvolvedor ou esteja começando a explorar APIs. Vamos mostrar como enviar conteúdo multimídia pelo WhatsApp usando Wassenger, diretamente do seu computador.

É mais fácil do que você pensa, e os resultados? Muito mais divertidos e muito mais eficazes. Vamos ao que interessa e dê um upgrade nas suas mensagens.

🤩 🤖 Wassenger é uma plataforma completa de comunicação e solução de API para WhatsApp. Explore mais de 100 casos de uso da API e automatize qualquer coisa no WhatsApp fazendo cadastro 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 de 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 realizar 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 usaremos o seguinte endpoint da API:

Novidade! Agora você pode enviar mensagens de mídia em uma única requisição 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 enviar o arquivo para a plataforma.

Você pode fazer upload do arquivo usando os seguintes métodos pela API:

  • URL remota usando JSON com um campo url contendo a URL publicamente acessível para baixar o 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 fluxo de dados com o tipo MIME apropriado no cabeçalho Content-Type, por exemplo: image/jpeg, application/pdf.

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

Fazer o upload do arquivo permite ao sistema validar e armazenar o arquivo apenas uma vez, evitando o custo de upload e processamento toda vez que uma mensagem de mídia for entregue, melhorando assim a velocidade de entrega das mensagens e simplificando a integração da API.

Note que o arquivo enviado será armazenado na plataforma por 90 dias por padrão, portanto em muitos casos você deve fazer o upload do arquivo apenas uma vez e pronto. 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 não vá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 customizado.

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

Obter o ID do arquivo na resposta da API

Se o arquivo for enviado corretamente 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 depois 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 o upload multipart funciona.

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 contar com 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ê está usando, o processo pode variar. Para simplificar, vamos destacar 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 da API e automatize qualquer coisa no WhatsApp fazendo cadastro para um teste gratuito e começando em minutos**!**

Fazer upload do arquivo pelo seu navegador

Você pode enviar arquivos manualmente 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 facilmente enviar arquivos a partir da linha de comando usando o comando abaixo, 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 testes e depuração de HTTP.

Seguindo este tutorial simples, você pode enviar arquivos usando o Postman, substituindo a URL de destino pela 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 no 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 da API e automatize qualquer coisa no WhatsApp fazendo cadastro para um teste gratuito e comece em minutos!

Teste ao vivo do 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 de destino no formato E164 e o ID do arquivo enviado (hexadecimal de 24 caracteres) 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 tenha conta no WhatsApp, não há necessidade de 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"
  }
}

Você já 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 de grupo.

Para enviar mensagens a um grupo, você precisa ser participante dele com permissão para enviar mensagens. Se você for administrador do grupo, terá permissões completas 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 executar, depurar e testar a API ao vivo diretamente do seu navegador, explorar e experimentar mais exemplos da API e obter com um clique trechos de código prontos para uso disponíveis 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 da API e automatize qualquer coisa no WhatsApp fazendo cadastro para um teste gratuito e comece 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 múltiplos números de telefone

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

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

Não há opção para enviar várias mensagens em uma única requisição 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á vinculado a uma conta WhatsApp e pode receber mensagens.

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

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

Para mais detalhes, por favor 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 de telefone usando o endpoint de validador de números. Este endpoint apenas valida o formato correto E164, mas não verifica se o número existe efetivamente no WhatsApp.

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

Procurando por mais respostas? Confira 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 aceitos nas requisições, 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