Skip to main content
POST
Enviar Mídia
Auth: TokenAccount ou TokenInstanceRate-limit: Global (100/min) • Idempotente: não

Descrição

Envia uma mídia (image, video, document ou audio) a partir de uma URL pública ou de uma string base64. A origem pode ser informada em mediaUrl (que aceita tanto a URL quanto o base64 da mídia) ou no campo mediaBase64, envie um ou outro, nunca os dois. Suporta message como legenda (caption), replyTo (citação por ID), replyPrivate, mention / mentionAll (apenas em grupos), delay (em segundos) para simular digitação real e, para áudio, isVoice (PTT), duration e waveform. O servidor faz o download (quando URL) ou decodifica o base64, detecta o mimeType quando omitido e faz o upload nos servidores do WhatsApp antes do envio.

Exemplos

Imagem por URL

Envia uma imagem (mediaType: "image") baixada de uma URL pública, com message usado como legenda (caption) que aparece abaixo da foto no chat.

Imagem por base64

Em vez de uma URL, envie o conteúdo da mídia em base64. Você pode colocar o base64 no próprio mediaUrl (com ou sem prefixo data URI data:image/jpeg;base64,) ou no campo dedicado mediaBase64. Como não há URL para inferir o nome/tipo, recomenda-se informar mimeType (e fileName, para documentos).

Áudio de voz (PTT)

Quando mediaType: "audio" e isVoice é omitido, o servidor assume true por padrão (mensagem de voz/PTT). Para enviar como áudio “regular” (faixa de música, por exemplo), passe isVoice: false.

Documento (PDF) com fileName

Envia um PDF como documento. O fileName (Contrato-2026.pdf) define o nome exibido no card do anexo e o message aparece como texto acompanhante. Sem fileName, o WhatsApp mostra um nome genérico.

Vídeo com legenda e delay

Envia um vídeo MP4 com a legenda “Olha esse vídeo!” e delay: 3, o servidor envia o indicador de “digitando…” por 3 segundos antes de disparar o vídeo, simulando uma digitação real.

Imagem em grupo com reply e menção

Envia uma imagem em um grupo (@g.us) citando uma mensagem anterior via replyTo e mencionando um membro pelo array mention. O @5511888888888 na caption fica clicável, gerando notificação para o usuário marcado.

Resposta de sucesso

O messageType ecoa o mediaType enviado (image, video, document ou audio). Os metadados resolvidos pelo upload aparecem em mediaUrl (URL re-enviada para mmg.whatsapp.net), mediaMimeType e mediaSize. Para áudios PTT, o servidor também devolve mediaDuration quando consegue calcular.
200 OK
Para mediaType: "document", o fileName aparece no card. Para mediaType: "audio" com isVoice: true, a mensagem é entregue como PTT (forma de onda + ícone de microfone). Para áudios “regulares” (faixa de música), use isVoice: false.

Parâmetros de rota

string
obrigatório
Nome da instância (ex.: $Instance_Name).

Headers

string
obrigatório
TokenAccount ou TokenInstance.
string
obrigatório
application/json

Request body

string
obrigatório
Destino: telefone (5511999999999) ou JID (@s.whatsapp.net, @lid, @g.us, @newsletter).
string
obrigatório
Um de: image, video, document, audio. Determina como o WhatsApp renderiza a mensagem.
string
Origem da mídia: uma URL pública do arquivo ou o base64 da mídia (com data URI data:<mime>;base64,... ou base64 cru). Quando é URL, precisa ser acessível publicamente (sem autenticação) e o servidor faz o download. Obrigatório informar mediaUrl ou mediaBase64 (nunca os dois).
string
Base64 da mídia (alternativa ao mediaUrl), com data URI data:<mime>;base64,... ou base64 cru. Não pode ser usado junto com mediaUrl, envie um ou outro. Como não há URL, recomenda-se informar mimeType (e fileName para documentos).
string
Legenda (caption) da mídia. Para mediaType: "document", aparece como texto acompanhante. Opcional para todos os tipos.
string
MIME type do arquivo (ex.: image/jpeg, application/pdf). Quando omitido, o servidor detecta automaticamente a partir do download.
string
Nome do arquivo exibido no card. Recomendado para mediaType: "document", sem ele, o WhatsApp mostra um nome genérico.
boolean
padrão:"true (para audio)"
Aplicável apenas a mediaType: "audio". Quando true, a mensagem é entregue como PTT (mensagem de voz, com forma de onda). Quando false, é entregue como áudio regular (faixa de música). Quando o campo é omitido em audio, o servidor assume true.
uint32
Duração do áudio em segundos. Aplicável apenas a mediaType: "audio". Opcional, quando omitido, o servidor tenta detectar automaticamente.
byte[]
Forma de onda pré-computada do áudio (PTT). Opcional, quando omitida, o servidor gera automaticamente uma forma de onda padrão. Aplicável apenas a mediaType: "audio" com isVoice: true.
int
padrão:"0"
Tempo em segundos para aguardar antes de enviar. Durante o intervalo, o servidor envia o indicador de “digitando…” ao destinatário e dispara o “paused” antes do envio real.
string
ID da mensagem a ser citada (reply). A mensagem original precisa pertencer à mesma instância e ter sido salva no banco. Erros possíveis: reply_message_not_found, reply_message_instance_mismatch.
boolean
padrão:"false"
Quando true e replyTo aponta para uma mensagem originária de um grupo, a resposta é redirecionada para o privado do autor original (mantendo a citação). Ignorado se a mensagem original não for de grupo.
string[]
Lista de números (ou JIDs) a mencionar. Apenas em grupos (@g.us). Para que apareçam como link clicável, inclua @5511... na message (caption). Sem isso, viram menções ocultas (apenas notificam).
boolean
padrão:"false"
Quando true, menciona todos os membros do grupo (exceto a própria instância). Equivale ao @todos/@everyone. Apenas em grupos.
string
padrão:"api"
Identificador de origem para rastreabilidade (ex.: crm, bot-suporte, n8n). Salvo no registro da mensagem no banco e propagado para webhooks. Quando omitido, assume "api".

Notas

  • delay é em segundos, não milissegundos. Valor 3 = 3 segundos de “digitando”.
  • Para mediaType: "audio", isVoice assume true automaticamente quando o campo é omitido. Para enviar como faixa de música, é necessário enviar isVoice: false explicitamente.
  • A mídia pode vir por URL ou base64. Use mediaUrl (que aceita URL ou base64) ou mediaBase64, enviar os dois retorna 400 use either mediaUrl or mediaBase64, not both; não enviar nenhum retorna 400 mediaUrl or mediaBase64 is required.
  • Quando mediaUrl é uma URL, precisa ser publicamente acessível. URLs com autenticação, sessão ou proteção contra bots costumam falhar com media_download_failed.
  • Para envio em base64, informar mimeType é recomendado (não há URL para inferir o tipo). O base64 aceita data URI (data:<mime>;base64,...) ou base64 cru.
  • Quando mimeType não é informado, o servidor detecta a partir dos primeiros bytes do download (net/http + sniff). Em casos raros (extensão atípica), informar manualmente evita problemas.
  • Para números BR (começando com 55), o serviço tenta automaticamente variações com e sem o 9º dígito.
  • mention e mentionAll são exclusivos a grupos. Se enviados para DM/canal, retorna 400 Mentions are only supported in group chats.
  • O campo duration (áudio) é informativo, whatsmeow ainda calcula seu próprio valor a partir do arquivo. Útil quando o servidor não consegue inferir.
  • O campo waveform é opcional e advisory: se omitido, o servidor gera uma forma de onda padronizada para PTT.

Erros

Envelope de erro: