¿Por qué conformarse con texto plano cuando puedes enviar videos, imágenes, GIFs y archivos automáticamente? Con solo un poco de código, puedes mejorar tu comunicación en WhatsApp y hacer que cada mensaje se sienta más personal, atractivo e impactante.
Esta guía es para cualquiera, ya seas desarrollador o estés empezando a explorar APIs. Te enseñaremos cómo enviar contenido multimedia a través de WhatsApp usando Wassenger, directamente desde tu computadora.
Es más fácil de lo que piensas, ¿y los resultados? Mucho más divertidos y mucho más efectivos. Vamos a ello y dale a tus mensajes la mejora que se merecen.
🤩 🤖 Wassenger es una plataforma de comunicación completa y una solución API para WhatsApp. Explora más de 100 casos de uso de la API y automatiza cualquier cosa en WhatsApp regístrate para una prueba gratuita y comienza en minutos!
En este tutorial aprenderás a enviar mensajes multimedia a números de teléfono y listas de chats de grupo usando la API.
Un archivo multimedia puede ser cualquiera de los siguientes: imágenes (JPEG, PNG, WEBP), videos (MP4, 3GPP), audios (MP3, OGG, MP4, ACC), gifs (MP4) y documentos (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, otros tipos binarios).
Si necesitas enviar mensajes desde código, puedes usar cualquier lenguaje de programación que pueda realizar solicitudes HTTPS a la API. Más abajo encontrarás el probador de API en vivo con ejemplos de código listos para usar en varios lenguajes de programación.
Requisitos
- Tener un número de WhatsApp ya vinculado a la plataforma y en línea.
- Número de teléfono del destinatario con prefijo internacional en formato E164. Ejemplo:
+12345678900. Valida el formato del número de teléfono aquí.
Endpoints de la API
En este tutorial usaremos el siguiente endpoint de la API:
¡Últimas noticias! Ahora puedes enviar mensajes multimedia en una sola solicitud API pasando la URL remota donde se encuentra el archivo. Haz clic aquí para probarlo
Subir el archivo
Para enviar un archivo como mensaje multimedia, en este caso un archivo de imagen, primero debes subir el archivo a la plataforma.
Puedes subir el archivo usando los siguientes métodos a través de la API:
- URL remota usando JSON con un campo
urlcon la URL accesible públicamente para descargar el archivo (recomendado). - Form data (
multipart/form-data) usando el campofilecon el contenido del archivo. - Datos binarios crudos subiendo el contenido del archivo como un stream de datos con el tipo MIME apropiado en el encabezado Content-Type, por ejemplo:
image/jpeg,application/pdf.
En este tutorial cubriremos los dos primeros métodos de subida de archivos.
Subir el archivo permite al sistema validar y almacenar el archivo una sola vez, evitando el costo de subida y procesamiento cada vez que se entregue un mensaje multimedia, mejorando así la velocidad de entrega del mensaje y simplificando la integración con la API.
Ten en cuenta que el archivo subido se almacenará en la plataforma durante 90 días por defecto, por lo tanto en muchos casos solo deberías subir el archivo una vez y ya está. Opcionalmente, también puedes configurar cuánto tiempo debe almacenarse el archivo en la plataforma definiendo un tiempo de expiración personalizado, para más detalles revisa la documentación de la API. Por defecto, tu cuenta tiene 10GB de capacidad de almacenamiento de archivos en la nube.
Subir archivo usando una URL remota
Puedes subir cualquier archivo a la plataforma simplemente especificando la URL pública desde donde descargar el archivo.
En caso de que la URL no sea accesible públicamente, devuelva un estado HTTP no válido (>=400) o devuelva contenido no binario, como HTML o texto, la API devolverá un error.
URL de la API objetivo (POST)
https://api.wassenger.com/v1/files
Encabezados HTTPS requeridos
Content-Type: application/json
Token: $API-TOKEN
Cuerpo de la solicitud en formato JSON
{
"url": "https://picsum.photos/seed/picsum/600/400"
}
Alternativamente, también puedes especificar campos opcionales al subir el archivo, como un tiempo de expiración personalizado, un identificador de referencia o un nombre de archivo personalizado.
{
"url": "https://picsum.photos/seed/picsum/600/400",
"expiration": "1d",
"filename": "custom-filename.jpg",
"reference": "Optional reference ID"
}
Obtener el ID del archivo desde la respuesta de la API
Si el archivo se sube correctamente a la plataforma, la API devolverá una respuesta válida en 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: Del JSON de la respuesta debes obtener el campo id con un valor, por ejemplo 06248ed01a7a65946c0701, que representa el ID único del archivo que luego usaremos para enviar el archivo como mensaje multimedia en una solicitud API separada.
Subir archivo usando multipart form data
Puedes subir cualquier archivo a la plataforma usando el mecanismo tradicional multipart form data ampliamente utilizado por los navegadores web para subir diferentes tipos de contenido, incluidos archivos, a un servidor remoto.
Aquí puedes aprender más sobre cómo funciona la subida multipart form.
URL de la API objetivo (POST)
https://api.wassenger.com/v1/files
Encabezados HTTPS requeridos
Content-Type: multipart/form-data
Token: $API-TOKEN
Cuerpo de la solicitud
A diferencia de la subida basada en JSON, en este caso debemos apoyarnos en un mecanismo más complejo basado en el cliente HTTP que estemos usando, que nos ayudará a componer los campos del formulario de acuerdo con la especificación multipart.
Dependiendo del lenguaje de programación o del cliente HTTP que uses, el proceso puede variar. Para simplificar, destacaremos las herramientas más populares, como Postman, y lenguajes de programación comunes.
El requisito principal es definir el campo file en el formulario de datos, de lo contrario la API devolverá un error ya que este campo es obligatorio.
🤩 🤖 Wassenger es una plataforma de comunicación completa y una solución API para WhatsApp. Explora más de 100 casos de uso de la API y automatiza cualquier cosa en WhatsApp registrándote para una prueba gratuita y comenzando en minutos**!**
Subir el archivo desde tu navegador web
Puedes subir archivos manualmente a la plataforma desde la consola web sin instalar ningún software:
Para la subida automatizada de archivos, revisa las opciones alternativas a continuación.
Subir archivo usando cURL
cURL es un cliente HTTP de línea de comandos popular y útil.
Puedes subir archivos fácilmente desde la línea de comandos usando el siguiente comando, donde path/to/image.jpg debe representar la ruta del archivo que quieres subir desde tu disco local:
curl \
-F file=@path/to/image.jpg \
-H 'Token: $API-TOKEN' \
https://api.wassenger.com/v1/files
Subir archivo usando Postman
Postman es una herramienta versátil y práctica para pruebas y depuración HTTP.
Siguiendo este sencillo tutorial, puedes subir archivos usando Postman, reemplazando la URL objetivo por la de la API.
Explora el tutorial de Postman aquí
Subir archivo usando código
Explora cómo usar el código en tu navegador sin instalar ningún software.
Además, puedes encontrar diferentes lenguajes que puedes probar en 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 es una plataforma de comunicación completa y una solución API para WhatsApp. Explora más de 100 casos de uso de la API y automatiza cualquier cosa en WhatsApp regístrate para una prueba gratuita y comenzando en minutos!
Prueba en vivo de la carga de archivos mediante la API
Explora nuestro probador de API en vivo
Enviar mensajes multimedia a un número de teléfono
Enviar un nuevo mensaje multimedia vía API es fácil, solo necesitas saber el número de teléfono objetivo en formato E164 y el ID del archivo subido (hexadecimal de 24 caracteres) que puedes obtener desde el listado de archivos subidos aquí o desde el listado de archivos subidos vía la API.
Puedes enviar mensajes a cualquier número de teléfono en todo el mundo que tenga una cuenta de WhatsApp, no es necesario agregar un número de teléfono como contacto en la agenda de tu dispositivo móvil.
Preparar la solicitud
URL de la API objetivo (POST)
https://api.wassenger.com/v1/messages
Encabezados HTTPS requeridos
Content-Type: application/json
Token: $API_KEY
Cuerpo de la solicitud en formato JSON
{
"phone": "+12345678900",
"message": "This is a media message example 😀",
"media": {
"file": "UPLOADED FILE ID GOES HERE"
}
}
Ahora puedes enviar el mensaje multimedia vía API.
Enviar mensajes multimedia a un grupo
Muy similar al escenario anterior, también puedes enviar mensajes multimedia a chats de grupo.
Para enviar mensajes a un grupo, debes ser participante del mismo con permisos para enviar mensajes. Si eres administrador del grupo tendrás permisos completos para enviar mensajes.
Preparar la solicitud
URL de la API objetivo (POST)
https://api.wassenger.com/v1/messages
Encabezados HTTPS requeridos
Content-Type: application/json
Token: $API_KEY
Cuerpo de la solicitud en formato JSON
Enviando un mensaje a un chat de grupo:
{
"group": "120363163556487865@g.us",
"message": "This is a media message example sent a group 😀",
"media": {
"file": "UPLOADED FILE ID GOES HERE"
}
}
Prueba en vivo: enviar mensajes multimedia usando la API
Ahora puedes reproducir, depurar y probar la API en vivo directamente desde tu navegador, explorar y probar más ejemplos de la API y obtener con un clic fragmentos de código listos para usar disponibles en más de 15 lenguajes de programación 😎
🤩 🤖 Wassenger es una plataforma de comunicación completa y una solución API para WhatsApp. Explora más de 100 casos de uso de la API y automatiza cualquier cosa en WhatsApp regístrate para una prueba gratuita y comenzando en minutos!
Preguntas frecuentes
¿Qué tipo de archivos multimedia se pueden enviar?
Puedes enviar imágenes (JPEG, PNG, WEBP), videos (MP4, 3GPP), audios (MP3, OGG, MP4, ACC), gifs (MP4) y documentos (PDF, PPT, PPTX, DOCX, DOC, ZIP, RAR, otros tipos binarios).
Consulta la documentación de la API para más detalles.
Cómo enviar mensajes a múltiples números de teléfono
Solo tienes que enviar múltiples solicitudes API, una por cada número de teléfono objetivo.
Por ejemplo, si quieres enviar un mensaje a 10 números de teléfono, debes enviar 10 solicitudes HTTPS independientes a la API.
No existe la opción de enviar múltiples mensajes en una sola solicitud API.
Cómo validar si un número de teléfono puede recibir mensajes de WhatsApp
Puedes validar si un número de teléfono dado está vinculado a una cuenta de WhatsApp y puede recibir mensajes.
La API proporciona un endpoint que puede validar si un número de teléfono dado existe en WhatsApp o no.
El único requisito es tener al menos un número de WhatsApp conectado a la plataforma en tu cuenta actual.
Para más detalles, por favor revisa la documentación del endpoint de la API aquí.
Antes de verificar si un número de teléfono existe en WhatsApp, también puedes validar y normalizar el formato de una lista de números de teléfono usando el endpoint validador de números. Este endpoint solo valida el formato correcto E164, pero no comprueba si el número de teléfono existe efectivamente en WhatsApp.
Nota: El número de validaciones de comprobación de WhatsApp está limitado por mes según tu plan de suscripción. Consulta la tabla de precios para más detalles sobre los límites.
¿Buscas más respuestas? Consulta las FAQs extendidas.
Recursos útiles adicionales
Documentación de la API
Para más detalles sobre el endpoint de la API, por favor consulta la documentación donde encontrarás todos los detalles sobre los parámetros de solicitud aceptados, posibles respuestas de éxito o error y ejemplos de código listos para usar en múltiples lenguajes de programación:








