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": "Tipo de multimedia no soportado o no se encontró multimedia en el mensaje"
}{
"error": "Token inválido"
}{
"error": "Message not found"
}{
"error": "Error al descargar el contenido multimedia"
}Descargar archivo de un mensaje
Descarga el archivo asociado a un mensaje de medios (imagen, video, audio, documento o sticker).
Parámetros
- id (string, obligatorio): ID del mensaje
- return_base64 (boolean, default: false): Incluye el archivo en base64. Evite esta opción porque aumenta el uso de memoria, el procesamiento y el tamaño de la respuesta. Versiones futuras podrán limitar base64 para archivos de más de 5 MB.
- generate_mp3 (boolean, default: true): Para audios, define el formato de retorno
true: Devuelve MP3false: Devuelve OGG
- return_link (boolean, mantenido por compatibilidad): La respuesta incluye la URL pública del archivo
- transcribe (boolean, default: false): Transcribe audios a texto
- openai_apikey (string, opcional): Clave de OpenAI para la transcripción
- Si no se informa, usa la clave guardada en la instancia
- Si se informa, se actualiza y se guarda en la instancia para las próximas llamadas
- download_quoted (boolean, default: false): Descarga los medios del mensaje citado
- Útil para descargar el contenido original de estados de WhatsApp
- Cuando un mensaje es respuesta a un estado, permite descargar los medios del estado original
- Contextualización: Al descargar los medios citados, usted identifica el contexto de la conversación
- Ejemplo: Si alguien responde a una promoción, al descargar los medios sabrá que la pregunta es sobre esa promoción específica
Ejemplos
Descargar audio como MP3:
{
"id": "7EB0F01D7244B421048F0706368376E0",
"generate_mp3": true
}
Transcribir audio:
{
"id": "7EB0F01D7244B421048F0706368376E0",
"transcribe": true
}
Incluir el contenido en base64:
{
"id": "7EB0F01D7244B421048F0706368376E0",
"return_base64": true
}
Descargar medios de estado (mensaje citado):
{
"id": "7EB0F01D7244B421048F0706368376E0",
"download_quoted": true
}
Útil cuando el cliente responde a una promoción/estado: usted descarga los medios originales para entender sobre qué producto/oferta está preguntando.
Respuesta
{
"fileURL": "https://api.exemplo.com/files/arquivo.mp3",
"mimetype": "audio/mpeg",
"base64Data": "UklGRkj...",
"transcription": "Texto transcrito"
}
Nota:
- Por defecto, los audios se devuelven como MP3 y todas las descargas incluyen una URL pública en
fileURL. - Evite
return_base64: true: la conversión aumenta el uso de memoria y procesamiento en el servidor y produce una respuesta más grande. Prefiera descargar el archivo mediantefileURL. - Compatibilidad futura: el retorno en base64 podrá limitarse para archivos de más de 5 MB. No dependa de base64 para archivos grandes.
- La transcripción requiere una clave de OpenAI válida. La clave puede configurarse una vez en la instancia y se reutilizará automáticamente.
- Retención de medios: el archivo queda disponible en nuestro CDN durante 2 días. Después de eso,
fileURLdeja de funcionar. Llame de nuevo a este endpoint para generar una nueva URL, mientras el mensaje y los medios originales sigan disponibles. - Para conservar los medios por más de 2 días, descargue el archivo mediante
fileURLy guárdelo en un almacenamiento propio. Guardar solo la URL no amplía el plazo de retención.
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": "Tipo de multimedia no soportado o no se encontró multimedia en el mensaje"
}{
"error": "Token inválido"
}{
"error": "Message not found"
}{
"error": "Error al descargar el contenido multimedia"
}Autorizaciones
Cuerpo
ID del mensaje que contiene el archivo
"7EB0F01D7244B421048F0706368376E0"
Incluye el contenido en base64. Evítelo en archivos grandes; versiones futuras podrán limitar archivos mayores de 5 MB
Para audios, define el formato de retorno (true=MP3, false=OGG)
Se mantiene por compatibilidad. La URL pública siempre se devuelve en fileURL
Si es verdadero, transcribe los audios a texto
Clave de la API de OpenAI para transcripción (opcional)
"sk-..."
Si es verdadero, descarga el contenido multimedia del mensaje citado en lugar del mensaje principal
Respuesta
Descarga de archivo exitosa
Tipo MIME del archivo
"audio/mpeg"
URL pública del archivo, disponible por 2 días
"https://api.exemplo.com/files/arquivo.mp3"
Contenido del archivo en base64 (si return_base64=true)
"UklGRkj..."
Texto transcrito del audio (si transcribe=true)
"Texto transcrito"
