---
title: "Cómo enviar mensajes por la API de WhatsApp (con ejemplos)"
description: "La API de WhatsApp envía mucho más que texto: imágenes, documentos, audio, video, ubicación, contactos, botones interactivos y menús de lista. Todos los endpoints, con ejemplos listos para copiar."
url: "https://api-wa.me/es/blog/como-enviar-mensajes-whatsapp-api"
language: "es"
og:type: "article"
og:site_name: "WAME API"
---

[Inicio](https://api-wa.me/es)/[Blog de la API de WhatsApp](https://api-wa.me/es/blog)/Cómo enviar mensajes, botones, imágenes y listas por la API de WhatsApp

Raphael Serafim· Publicado el 10 de septiembre de 2026· 8 min de lectura

Compartir

# Cómo enviar mensajes, botones, imágenes y listas por la API de WhatsApp

La API de WhatsApp envía mucho más que texto: imágenes, documentos, audio, video, ubicación, contactos, botones interactivos y menús de lista. Todos los endpoints, con ejemplos listos para copiar.

Copiar para LLM[Ver como Markdown](https://api-wa.me/es/blog/como-enviar-mensajes-whatsapp-api.md)

**La API de WhatsApp envía mucho más que texto: imágenes, documentos, audio, video, ubicación, contactos, botones interactivos y menús de lista — todo por peticiones HTTP a endpoints específicos.** Todos siguen el mismo patrón: un `POST` a `https://us.api-wa.me/{key}/message/<tipo>` con un cuerpo JSON. El destinatario (`to`) es siempre el número en formato internacional, solo dígitos.

Esta guía muestra los tipos más usados, con ejemplos listos.

## El formato del número

Antes de cualquier envío, el detalle que más falla en las pruebas:

| País | Código | Ejemplo |
| --- | --- | --- |
| México | 52 | `525512345678` |
| Argentina | 54 | `5491123456789` |
| Chile | 56 | `56912345678` |
| Colombia | 57 | `573001234567` |

Sin `+`, sin espacios, sin guiones y sin el cero inicial del código de área.

## Mensaje de texto

```bash
curl -X POST "https://us.api-wa.me/TU_KEY/message/text" \
  -H "Content-Type: application/json" \
  -d '{ "to": "525512345678", "text": "¡Hola! ¿En qué te puedo ayudar?" }'
```

## Imagen y otros archivos

Se envía desde una **URL pública**, con leyenda opcional:

```bash
curl -X POST "https://us.api-wa.me/TU_KEY/message/image" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "525512345678",
    "url": "https://ejemplo.com/foto.jpg",
    "caption": "Mira nuestro nuevo producto"
  }'
```

Los mismos campos valen para los demás tipos, cambiando solo el endpoint:

| Archivo | Endpoint |
| --- | --- |
| Imagen | `/{key}/message/image` |
| Video | `/{key}/message/video` |
| Audio | `/{key}/message/audio` |
| Documento | `/{key}/message/document` |
| Ubicación | `/{key}/message/location` |
| Contacto | `/{key}/message/contact` |

> ¿Necesitas enviar un archivo local en lugar de una URL? Usa las versiones en base64: `/{key}/message/base64/image`, `/base64/audio` y `/base64/document`.

**El error número uno con archivos** es la URL que exige autenticación. En tu navegador abre, porque tienes sesión; para la plataforma devuelve la página de login. Pruébala siempre en una ventana de incógnito antes de culpar al código.

## Botones de respuesta rápida

Muestran opciones que el cliente toca para contestar:

```bash
curl -X POST "https://us.api-wa.me/TU_KEY/message/button_reply" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "525512345678",
    "header": { "title": "Confirmación" },
    "text": "¿Confirmas tu pedido?",
    "footer": "Elige una opción",
    "buttons": [
      { "type": "quick_reply", "id": "si",  "text": "Sí" },
      { "type": "quick_reply", "id": "no",  "text": "No" }
    ]
  }'
```

El `id` es lo que vuelve en el webhook cuando la persona toca el botón. Ponle algo que tu código entienda sin adivinar: `confirmar:1042` sirve mucho más que `boton1`.

## Botones de acción

Abren una URL, llaman a un número o copian un código:

```bash
curl -X POST "https://us.api-wa.me/TU_KEY/message/button_action" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "525512345678",
    "text": "Tu pedido ya está en camino",
    "buttons": [
      { "type": "url",  "text": "Rastrear", "url": "https://tienda.com/p/1042" },
      { "type": "call", "text": "Llamar",   "phone": "525512345678" }
    ]
  }'
```

## Menús de lista

Cuando hay más opciones de las que caben en botones:

```bash
curl -X POST "https://us.api-wa.me/TU_KEY/message/list" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "525512345678",
    "title": "Menú de atención",
    "description": "¿Con qué te ayudamos hoy?",
    "buttonText": "Ver opciones",
    "sections": [{
      "title": "Pedidos",
      "rows": [
        { "id": "estado",  "title": "Estado de mi pedido" },
        { "id": "cambio",  "title": "Cambios y devoluciones" }
      ]
    }, {
      "title": "Otros",
      "rows": [
        { "id": "humano",  "title": "Hablar con una persona" }
      ]
    }]
  }'
```

Una lista bien armada reemplaza buena parte de un bot: el cliente elige, tu código recibe un `id` fijo y no tienes que interpretar texto libre.

## Los tres canales, el mismo envío

Los endpoints aceptan el campo `provider`. Sin él va a WhatsApp; con `instagram` o `messenger`, el mismo código envía al Direct de Instagram o a Messenger — porque es la misma instancia cubriendo los tres canales.

```bash
-d '{ "to": "IG_USER_ID", "text": "¡Hola!", "provider": "instagram" }'
```

## Con SDK, más corto

En PHP:

```php
$wa->message->sendText($to, "¡Hola!");
$wa->message->sendImage($to, 'https://ejemplo.com/foto.jpg', 'Nuevo producto');
```

En JavaScript o TypeScript:

```ts
await wa.message.send({ type: TypeMessage.TEXT, body: { to, text: '¡Hola!' } });
```

Los detalles están en el [SDK de PHP](https://api-wa.me/es/blog/sdk-php-whatsapp-instagram-messenger) y en el [SDK de JavaScript y TypeScript](https://api-wa.me/es/blog/sdk-javascript-typescript-whatsapp).

## Antes de pasar a producción

Enviar es la parte fácil. Lo que decide si el módulo aguanta es el otro lado: recibir la respuesta. Si el webhook no te está llegando, [las 7 causas y la prueba de 30 segundos](https://api-wa.me/es/blog/webhook-whatsapp-no-llega-como-probar) resuelven casi todos los casos.

Y si vas a enviar a mucha gente, la [cola con límite de ritmo](https://api-wa.me/es/blog/cola-rate-limit-reintentos-envio-masivo-whatsapp) es lo que evita que un bucle `for` te queme el número.

### ¿Listo para automatizar tu WhatsApp?

Crea tu cuenta gratis y empieza a enviar mensajes por la API en minutos.

[Empezar gratis](https://portal.api-wa.me/sign-up)

## Preguntas frecuentes

¿Cómo envío un mensaje de texto por la API de WhatsApp?+

Con un POST a /{key}/message/text y un cuerpo JSON con 'to', el número en formato internacional solo con dígitos, y 'text'. Por ejemplo: { "to": "525512345678", "text": "¡Hola!" }.

¿Cómo envío botones por la API de WhatsApp?+

Hay dos endpoints. /{key}/message/button\_reply crea botones de respuesta rápida, que el cliente toca para contestar. /{key}/message/button\_action crea botones de acción: abrir una URL, llamar a un número o copiar un código.

¿Cómo envío una imagen o un documento?+

Para imagen, con /{key}/message/image, indicando 'to', 'url' con un enlace público y 'caption' opcional. Para documento, audio y video existen endpoints equivalentes. También hay versiones en base64 cuando el archivo es local y no tiene URL pública.

¿Se pueden enviar menús de lista?+

Sí. El endpoint /{key}/message/list envía un mensaje de lista con título, descripción, texto del botón y secciones con opciones — es lo más práctico para armar un menú de atención sin escribir un bot.

¿Por qué mi imagen no llega?+

Casi siempre es la URL. Debe ser pública y accesible sin autenticación: si en tu navegador abre porque tienes sesión iniciada, para la plataforma devolverá la página de login en lugar del archivo. Pruébala siempre en una ventana de incógnito.

## Sigue leyendo

[### API de Instagram y Messenger en la misma API de WhatsApp: una instancia, un estándar

Tres canales oficiales de Meta casi siempre significan tres integraciones. Con una sola instancia, el mismo envío y el mismo sobre de webhook, solo cambia un campo: provider. Cómo funciona y qué te ahorra.](https://api-wa.me/es/blog/api-instagram-messenger-misma-api-whatsapp)[### API no oficial de WhatsApp: qué es, si es segura y cómo usarla (2026)

Entiende qué es una API no oficial de WhatsApp, cómo funciona la conexión por código QR, si es segura y legal, cuál es el riesgo real de bloqueo y cuándo conviene usarla en lugar de la API oficial.](https://api-wa.me/es/blog/api-no-oficial-whatsapp-que-es)[### API oficial vs no oficial de WhatsApp: ¿cuál elegir? (comparativa 2026)

Comparativa completa entre la API oficial de WhatsApp (Cloud API de Meta) y la API no oficial: costo, aprobación, límites de envío, plantillas, soporte y riesgo de bloqueo. Descubre cuál tiene sentido para tu caso.](https://api-wa.me/es/blog/api-whatsapp-oficial-vs-no-oficial)

[Volver al blog](https://api-wa.me/es/blog)

## Structured data

```json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "WAME API",
  "alternateName": "API Oficial y No Oficial de WhatsApp, Instagram y Messenger",
  "url": "https://api-wa.me",
  "inLanguage": "pt-BR",
  "publisher": {
    "@id": "https://api-wa.me/#organization",
    "@type": "Organization",
    "name": "WAME API",
    "url": "https://api-wa.me"
  }
}
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://api-wa.me/#organization",
  "name": "WAME API",
  "alternateName": [
    "WAME",
    "Wame API",
    "wame.api.br",
    "api-wa.me"
  ],
  "url": "https://api-wa.me",
  "logo": {
    "@type": "ImageObject",
    "url": "https://api-wa.me/images/web-app-manifest-512x512.png",
    "width": 512,
    "height": 512
  },
  "disambiguatingDescription": "WAME API é uma empresa brasileira de software, fundada em 2017 e parceira oficial da Meta (Meta Business Partner), que fornece APIs de WhatsApp, Instagram Direct e Messenger. Não tem relação com o wa.me, que é o encurtador de links operado pela WhatsApp LLC.",
  "identifier": {
    "@type": "PropertyValue",
    "propertyID": "INPI-BR",
    "name": "Pedido de registro de marca (INPI, classe NCL 42)",
    "value": "944724159"
  },
  "foundingDate": "2017",
  "slogan": "Socio Oficial de Meta — WhatsApp, Instagram y Messenger en una sola instancia. Desde 2017.",
  "description": "Plataforma brasileña y Socio Oficial de Meta (Meta Business Partner) para las APIs oficiales de WhatsApp (Cloud API), Instagram Direct y Messenger — las tres en una única instancia, con los mismos endpoints y un único formato de webhook. También ofrece la API no oficial vía Código QR, en la misma plataforma. En el mercado desde 2017, con más de 50 mil instancias creadas, 99,9% de uptime y soporte humano 24/7. SDKs oficiales para Node.js/TypeScript y PHP.",
  "knowsAbout": [
    "WhatsApp Cloud API oficial (Meta)",
    "API oficial de Instagram (Direct)",
    "API oficial de Messenger",
    "API multicanal Meta",
    "Meta Business Partner",
    "WhatsApp API",
    "API não oficial de WhatsApp",
    "automação de WhatsApp",
    "números virtuais",
    "webhooks"
  ],
  "sameAs": [
    "https://github.com/wame-api",
    "https://www.linkedin.com/company/wameapi",
    "https://www.instagram.com/wame.api/",
    "https://www.youtube.com/@wameapi"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "url": "https://api-wa.me/contact",
    "availableLanguage": [
      "Portuguese"
    ]
  }
}
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "Cómo enviar mensajes, botones, imágenes y listas por la API de WhatsApp",
  "description": "La API de WhatsApp envía mucho más que texto: imágenes, documentos, audio, video, ubicación, contactos, botones interactivos y menús de lista. Todos los endpoints, con ejemplos listos para copiar.",
  "image": "https://api-wa.me/es/blog/como-enviar-mensajes-whatsapp-api/opengraph-image",
  "datePublished": "2026-09-10",
  "dateModified": "2026-09-10",
  "author": {
    "@type": "Person",
    "name": "Raphael Serafim",
    "url": "https://github.com/raphaelvserafim",
    "sameAs": [
      "https://github.com/raphaelvserafim"
    ]
  },
  "publisher": {
    "@type": "Organization",
    "name": "api-wa.me",
    "logo": {
      "@type": "ImageObject",
      "url": "https://api-wa.me/images/screenshot.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://api-wa.me/es/blog/como-enviar-mensajes-whatsapp-api"
  },
  "keywords": "enviar mensajes whatsapp api, api whatsapp botones, enviar imagen whatsapp api, whatsapp api lista, api whatsapp documento, mensajes interactivos whatsapp",
  "inLanguage": "es"
}
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://api-wa.me"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Blog de la API de WhatsApp",
      "item": "https://api-wa.me/blog"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Cómo enviar mensajes, botones, imágenes y listas por la API de WhatsApp",
      "item": "https://api-wa.me/es/blog/como-enviar-mensajes-whatsapp-api"
    }
  ]
}
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "¿Cómo envío un mensaje de texto por la API de WhatsApp?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Con un POST a /{key}/message/text y un cuerpo JSON con 'to', el número en formato internacional solo con dígitos, y 'text'. Por ejemplo: { \"to\": \"525512345678\", \"text\": \"¡Hola!\" }."
      }
    },
    {
      "@type": "Question",
      "name": "¿Cómo envío botones por la API de WhatsApp?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Hay dos endpoints. /{key}/message/button_reply crea botones de respuesta rápida, que el cliente toca para contestar. /{key}/message/button_action crea botones de acción: abrir una URL, llamar a un número o copiar un código."
      }
    },
    {
      "@type": "Question",
      "name": "¿Cómo envío una imagen o un documento?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Para imagen, con /{key}/message/image, indicando 'to', 'url' con un enlace público y 'caption' opcional. Para documento, audio y video existen endpoints equivalentes. También hay versiones en base64 cuando el archivo es local y no tiene URL pública."
      }
    },
    {
      "@type": "Question",
      "name": "¿Se pueden enviar menús de lista?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Sí. El endpoint /{key}/message/list envía un mensaje de lista con título, descripción, texto del botón y secciones con opciones — es lo más práctico para armar un menú de atención sin escribir un bot."
      }
    },
    {
      "@type": "Question",
      "name": "¿Por qué mi imagen no llega?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Casi siempre es la URL. Debe ser pública y accesible sin autenticación: si en tu navegador abre porque tienes sesión iniciada, para la plataforma devolverá la página de login en lugar del archivo. Pruébala siempre en una ventana de incógnito."
      }
    }
  ]
}
```
