--- title: API WhatsApp: Guía Completa para Desarrolladores (2026) description: Todo sobre API WhatsApp en 2026: opciones (Cloud API, Business API, no oficial), precio, requisitos, ejemplos en Python, Node.js y cURL. date: 2026-05-17 author: Victor Villalobos locale: es source: https://www.zavu.dev/es/blog/api-whatsapp-guia-completo tags: WhatsApp, API, Desarrolladores, Tutorial --- # API WhatsApp: Guía Completa para Desarrolladores (2026) Si eres desarrollador buscando "API WhatsApp", existen tres caminos: la **WhatsApp Cloud API oficial de Meta**, la **WhatsApp Business API vía BSP** (proveedor oficial) y las **APIs no oficiales** (que deberías evitar). Esta guía explica cada una, cuándo usar y muestra código real en Python, Node.js y cURL para el camino recomendado. ## Las 3 APIs de WhatsApp en 2026 ### 1. WhatsApp Cloud API (oficial Meta) - Hospedada por Meta - Acceso directo vía Graph API - Tú manejas tokens, templates, webhooks - Buena para: equipos con buen DevOps ### 2. WhatsApp Business API vía BSP (recomendado) - BSPs oficiales como [Zavu](https://www.zavu.dev/es), Twilio, MessageBird - Abstraen la complejidad (tokens, retries, templates) - SDK oficial en varios lenguajes - Buena para: 99% de los casos ### 3. APIs no oficiales (no uses) - Bibliotecas que hacen reverse engineering de WhatsApp Web - Funcionan hasta que Meta las bloquea - Sin soporte, sin garantía, sin sello verde - Pueden banear tu número permanentemente ## Cómo empezar con la API WhatsApp en 5 minutos Camino más simple: BSP oficial. Así con Zavu: ### 1. Cuenta gratis Crea en [zavu.dev](https://www.zavu.dev/es). Sin tarjeta de crédito. ### 2. Conectar Meta Business En el dashboard, **Add WhatsApp Sender** → OAuth con Meta → autoriza Zavu. Demora 5 minutos. ### 3. Instalar SDK ```bash # Node.js / TypeScript npm install @zavudev/sdk # Python pip install zavudev ``` ### 4. Enviar primer mensaje **Node.js:** ```typescript import Zavu from "@zavudev/sdk" const zavu = new Zavu({ apiKey: process.env.ZAVU_API_KEY }) const result = await zavu.messages.send({ to: "+525511223344", channel: "whatsapp", text: "¡Hola! Primer mensaje vía API." }) console.log(result.message.id, result.message.status) ``` **Python:** ```python from zavudev import Zavu zavu = Zavu(api_key=os.environ["ZAVU_API_KEY"]) result = zavu.messages.send( to="+525511223344", channel="whatsapp", text="¡Hola! Primer mensaje vía API." ) print(result.message.id, result.message.status) ``` ## La regla de la ventana de 24 horas Meta tiene regla estricta: - **Dentro de 24h** después que el cliente respondió: cualquier tipo de mensaje - **Fuera de 24h**: solo templates aprobados Diseña tus flujos en torno a eso. Usa templates para outbound proactivo (confirmación de pedido, OTPs, recordatorios), texto libre dentro de la ventana. ## Tipos de mensaje ### Texto ```typescript await zavu.messages.send({ to, channel: "whatsapp", text: "Hola" }) ``` ### Template (fuera de ventana) ```typescript await zavu.messages.send({ to, channel: "whatsapp", messageType: "template", content: { templateId: "tpl_pedido_confirmado", templateVariables: { "1": "Juan" } } }) ``` ### Media ```typescript await zavu.messages.send({ to, channel: "whatsapp", messageType: "image", content: { mediaUrl: "https://..." } }) ``` ### Interactivo (botones, listas) ```typescript await zavu.messages.send({ to, channel: "whatsapp", messageType: "buttons", text: "Elige opción", content: { buttons: [{ id: "1", title: "Comprar" }, { id: "2", title: "Soporte" }] } }) ``` ## Webhooks para recibir ```typescript export async function POST(req: Request) { const event = await req.json() if (event.type === "message.inbound") { await zavu.messages.send({ to: event.message.from, channel: "whatsapp", text: "Recibido" }) } return new Response("ok") } ``` Tipos de evento: - `message.inbound` — cliente envió - `message.delivered` — entregado - `message.read` — leído - `message.failed` — falló (con razón) - `button.reply` — cliente apretó botón - `template.status_changed` — template aprobado/rechazado ## Pitfalls comunes **Timeout de webhook**: Meta reintenta si no respondes 200 en 2 segundos. Reconoce rápido, procesa async. **Ciclos de rechazo de template**: Meta rechaza templates promocionales en categoría Utility. Lee las [guidelines de template](https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates). **Degradación de quality score**: tasa de bloqueos alta limita tu número. Verifica opt-ins, respeta requests de STOP. **Rate limits**: Meta aplica tiers (250/día → 1k → 10k → 100k). Verifica el negocio para aumentar. ## Precios snapshot (México, 2026) | Categoría | Costo por conversación 24h | |---|---| | Service (cliente inicia) | $0 | | Authentication | $0.40 MXN | | Utility | $0.60 MXN | | Marketing | $3.20 MXN | [Cálculo completo de precios](/es/blog/whatsapp-business-api-pricing). ## Eligiendo BSP | Proveedor | Markup | Setup | Contrato | Mejor para | |---|---|---|---|---| | [Zavu](https://www.zavu.dev/es) | 0% | $0 | Mes a mes | Devs multi-canal | | Twilio | 5-20% | $0 | Mes a mes | Voz + SMS también | | MessageBird | Variable | $12,000 MXN | 3 meses | Enterprise | | Gupshup | 10-25% | $0 | Mes a mes | LATAM y India | ## Recursos relacionados - [WhatsApp Cloud API tutorial](/es/blog/whatsapp-cloud-api-tutorial) - [Cómo crear chatbot en WhatsApp](/es/blog/como-crear-chatbot-whatsapp) - [Precios WhatsApp Business API](/es/blog/whatsapp-business-api-pricing) - [Zavu vs Twilio](/es/vs/twilio) - [Documentación técnica completa](https://docs.zavu.dev/quickstart) ## Conclusión La API WhatsApp en 2026 está madura y accesible. Elige BSP sin markup ni contrato, usa templates para outbound, texto libre dentro de ventana de 24h, e instrumenta con webhooks. [Zavu](/es/whatsapp-business-api) free tier cubre tus primeros 2,000 mensajes — sin tarjeta.