curl --request POST \
--url https://api.wppfy.com/message/download \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": false,
"generate_mp3": true,
"return_link": true,
"transcribe": false,
"openai_apikey": "sk-...",
"download_quoted": false
}
'import requests
url = "https://api.wppfy.com/message/download"
payload = {
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": False,
"generate_mp3": True,
"return_link": True,
"transcribe": False,
"openai_apikey": "sk-...",
"download_quoted": False
}
headers = {
"token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '7EB0F01D7244B421048F0706368376E0',
return_base64: false,
generate_mp3: true,
return_link: true,
transcribe: false,
openai_apikey: 'sk-...',
download_quoted: false
})
};
fetch('https://api.wppfy.com/message/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wppfy.com/message/download",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '7EB0F01D7244B421048F0706368376E0',
'return_base64' => false,
'generate_mp3' => true,
'return_link' => true,
'transcribe' => false,
'openai_apikey' => 'sk-...',
'download_quoted' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.wppfy.com/message/download"
payload := strings.NewReader("{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.wppfy.com/message/download")
.header("token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wppfy.com/message/download")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}"
response = http.request(request)
puts response.read_body{
"mimetype": "audio/mpeg",
"fileURL": "https://api.exemplo.com/files/arquivo.mp3",
"base64Data": "UklGRkj...",
"transcription": "Texto transcrito"
}{
"error": "Unsupported media type or no media found in message"
}{
"error": "Invalid token"
}{
"error": "Message not found"
}{
"error": "Failed to download media"
}Baixar arquivo de uma mensagem
Baixa o arquivo associado a uma mensagem de mídia (imagem, vídeo, áudio, documento ou sticker).
Parâmetros
- id (string, obrigatório): ID da mensagem
- return_base64 (boolean, default: false): Retorna arquivo em base64
- generate_mp3 (boolean, default: true): Para áudios, define formato de retorno
true: Retorna MP3false: Retorna OGG
- return_link (boolean, default: true): Retorna URL pública do arquivo
- transcribe (boolean, default: false): Transcreve áudios para texto
- openai_apikey (string, opcional): Chave OpenAI para transcrição
- Se não informada, usa a chave salva na instância
- Se informada, atualiza e salva na instância para próximas chamadas
- download_quoted (boolean, default: false): Baixa mídia da mensagem citada
- Útil para baixar conteúdo original de status do WhatsApp
- Quando uma mensagem é resposta a um status, permite baixar a mídia do status original
- Contextualização: Ao baixar a mídia citada, você identifica o contexto da conversa
- Exemplo: Se alguém responde a uma promoção, baixando a mídia você saberá que a pergunta é sobre aquela promoção específica
Exemplos
Baixar áudio como MP3:
{
"id": "7EB0F01D7244B421048F0706368376E0",
"generate_mp3": true
}
Transcrever áudio:
{
"id": "7EB0F01D7244B421048F0706368376E0",
"transcribe": true
}
Apenas base64 (sem salvar):
{
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": true,
"return_link": false
}
Baixar mídia de status (mensagem citada):
{
"id": "7EB0F01D7244B421048F0706368376E0",
"download_quoted": true
}
Útil quando o cliente responde a uma promoção/status - você baixa a mídia original para entender sobre qual produto/oferta ele está perguntando.
Resposta
{
"fileURL": "https://api.exemplo.com/files/arquivo.mp3",
"mimetype": "audio/mpeg",
"base64Data": "UklGRkj...",
"transcription": "Texto transcrito"
}
Nota:
- Por padrão, se não definido o contrário:
- áudios são retornados como MP3.
- E todos os pedidos de download são retornados com URL pública.
- Transcrição requer chave OpenAI válida. A chave pode ser configurada uma vez na instância e será reutilizada automaticamente.
curl --request POST \
--url https://api.wppfy.com/message/download \
--header 'Content-Type: application/json' \
--header 'token: <api-key>' \
--data '
{
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": false,
"generate_mp3": true,
"return_link": true,
"transcribe": false,
"openai_apikey": "sk-...",
"download_quoted": false
}
'import requests
url = "https://api.wppfy.com/message/download"
payload = {
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": False,
"generate_mp3": True,
"return_link": True,
"transcribe": False,
"openai_apikey": "sk-...",
"download_quoted": False
}
headers = {
"token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {token: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
id: '7EB0F01D7244B421048F0706368376E0',
return_base64: false,
generate_mp3: true,
return_link: true,
transcribe: false,
openai_apikey: 'sk-...',
download_quoted: false
})
};
fetch('https://api.wppfy.com/message/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wppfy.com/message/download",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => '7EB0F01D7244B421048F0706368376E0',
'return_base64' => false,
'generate_mp3' => true,
'return_link' => true,
'transcribe' => false,
'openai_apikey' => 'sk-...',
'download_quoted' => false
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.wppfy.com/message/download"
payload := strings.NewReader("{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.wppfy.com/message/download")
.header("token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.wppfy.com/message/download")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": \"7EB0F01D7244B421048F0706368376E0\",\n \"return_base64\": false,\n \"generate_mp3\": true,\n \"return_link\": true,\n \"transcribe\": false,\n \"openai_apikey\": \"sk-...\",\n \"download_quoted\": false\n}"
response = http.request(request)
puts response.read_body{
"mimetype": "audio/mpeg",
"fileURL": "https://api.exemplo.com/files/arquivo.mp3",
"base64Data": "UklGRkj...",
"transcription": "Texto transcrito"
}{
"error": "Unsupported media type or no media found in message"
}{
"error": "Invalid token"
}{
"error": "Message not found"
}{
"error": "Failed to download media"
}Autorizações
Corpo
ID da mensagem contendo o arquivo
"7EB0F01D7244B421048F0706368376E0"
Se verdadeiro, retorna o conteúdo em base64
Para áudios, define formato de retorno (true=MP3, false=OGG)
Salva e retorna URL pública do arquivo
Se verdadeiro, transcreve áudios para texto
Chave da API OpenAI para transcrição (opcional)
"sk-..."
Se verdadeiro, baixa mídia da mensagem citada ao invés da mensagem principal
Resposta
Successful file download
Tipo MIME do arquivo
"audio/mpeg"
URL pública para acessar o arquivo (se return_link=true)
"https://api.exemplo.com/files/arquivo.mp3"
Conteúdo do arquivo em base64 (se return_base64=true)
"UklGRkj..."
Texto transcrito do áudio (se transcribe=true)
"Texto transcrito"
