# Plantillas de autenticación de WhatsApp

Una plantilla de autenticación entrega un código de verificación de un solo uso. Meta redacta el texto cuando creas la plantilla. Al enviarla, proporciona el código como parámetro del cuerpo.

## Antes de enviar

Decide si usar una plantilla gestionada por Bird o crear una plantilla en tu propia cuenta de negocio.

Enviar las plantillas de catálogo predefinidas de Bird, `bird_otp` y `bird_otp_authifly`, no requiere verificación de tu parte. Esas plantillas residen en las WhatsApp Business Accounts propias de Bird, y la ruta de envío gestionado nunca comprueba el estado de verificación de tu negocio.

Cuando la cuenta de negocio conectada reporta `not_verified`, Bird rechaza la creación o duplicación de plantillas de autenticación con `412` [`E15043`](/docs/api/errors/E15043) `WhatsAppTemplateBusinessNotVerified`. Revisa la cuenta conectada y su último estado sincronizado. Consulta [Verificación de negocio de WhatsApp](/docs/knowledge-base/whatsapp/business-verification) para el proceso de verificación y el manejo de estados.

La creación de plantillas de utilidad y marketing no se ve afectada por esta restricción; puedes seguir creándolas y editándolas sin importar tu estado de verificación.

Crea plantillas en el panel de control, con la [CLI de `bird`](/docs/cli), o a través del [servidor MCP](/docs/ai/mcp-server). Consulta [Creación de plantillas de WhatsApp](/docs/guides/whatsapp/authoring-templates) para el flujo completo.

## Enviar un código de verificación

`POST /v1/whatsapp/messages` con un objeto `template` que nombra un slug de catálogo:

**TypeScript**

```typescript
const msg = await bird.whatsapp.send({
  to: "+14155550100",
  template: {
    slug: "bird_otp",
    language: "en",
    components: [{ type: "body", parameters: [{ type: "text", text: "481920" }] }],
  },
});
console.log(msg.id, msg.status);
```

Examples: [TypeScript](/es-es/documentacion/guides/whatsapp/templates/authentication.ts.md) · [Python](/es-es/documentacion/guides/whatsapp/templates/authentication.py.md) · [Go](/es-es/documentacion/guides/whatsapp/templates/authentication.go.md) · [PHP](/es-es/documentacion/guides/whatsapp/templates/authentication.php.md) · [CLI](/es-es/documentacion/guides/whatsapp/templates/authentication.cli.md) · [MCP](/es-es/documentacion/guides/whatsapp/templates/authentication.mcp.md) · [cURL](/es-es/documentacion/guides/whatsapp/templates/authentication.curl.md)

Cuatro reglas son específicas de esta categoría:

- **Omite `from`.** Una plantilla gestionada por Bird elige su propio remitente, según la categoría y la región, por lo que establecer `from` devuelve `422` [`E15018`](/docs/api/errors/E15018) `WhatsAppSenderNotAllowed`. Es lo contrario de un envío libre, que requiere `from`; vale la pena recordarlo si llegas aquí desde las páginas de mensajes interactivos.
- **`to` debe ser un número de teléfono E.164.** Una plantilla de autenticación no puede dirigirse a un ID de usuario con alcance de negocio; eso es `422` [`E15014`](/docs/api/errors/E15014) `WhatsAppRecipientNotSupportedForTemplate`.
- **El cuerpo acepta exactamente un parámetro posicional: el código.** Cero parámetros, o nombrar el parámetro, devuelve `422` [`E15003`](/docs/api/errors/E15003) `WhatsAppTemplateParameterMismatch`. Autenticación es la única categoría que Meta escribe posicionalmente; todas las demás nombran sus parámetros.
- **No se necesita ventana de atención al cliente.** Los envíos con plantilla no están limitados por ventana, que es justamente la razón por la que existe una plantilla de código de verificación: tiene que llegar a alguien que nunca te ha escrito antes.

Consulta los idiomas disponibles para `bird_otp` o `bird_otp_authifly` en el catálogo de plantillas. Si el idioma que solicitas no está disponible, el envío falla en lugar de usar otro idioma.

## El botón de copiar código

Meta escribe el cuerpo de una plantilla de autenticación por sí mismo, como un formato predefinido con un único marcador de código, así que tú proporcionas flags en lugar de texto. El componente de botón es opcional en un envío: si no incluyes uno, Bird lo añade por ti, con el mismo código del cuerpo. También puedes proporcionarlo tú:

```json
{ "type": "button", "parameters": [{ "type": "text", "text": "481920" }] }
```

En cualquier caso, exactamente un botón llega a WhatsApp, y es el botón de copiar código: al pulsarlo, copia el código al portapapeles. Bird solo admite `copy_code`; los otros dos comportamientos de botón que Meta documenta para plantillas de autenticación, autocompletado con un toque y sin toque, no están disponibles en Bird actualmente.

La creación del botón de una plantilla sigue la misma estructura: un botón `otp`, y la plantilla no acepta ningún otro tipo de botón. Proporcionas `add_security_recommendation` (un booleano que se muestra en el cuerpo) y `code_expiration_minutes` (de 1 a 90, que se muestra en el pie) en lugar de escribir texto.

## Qué permite Meta en una plantilla de autenticación

Meta fija la estructura de una plantilla de autenticación y revisa su contenido: no se permiten URL, medios ni emojis en ninguna parte de la plantilla, y el parámetro de código tiene un límite de 15 caracteres. La categoría también cambia la forma en que WhatsApp entrega el mensaje, enviándolo solo al dispositivo principal del destinatario. Consulta [Directrices de plantillas](/docs/knowledge-base/whatsapp/template-guidelines) para ver la estructura fija, los límites de caracteres y el proceso de revisión completo.

## Costo

La categoría y el destino determinan el precio. Consulta [Tarifas de autenticación internacional de WhatsApp](/docs/knowledge-base/whatsapp/authentication-international-rates) para saber cómo puede cambiar el precio si envías a un país distinto de tu ubicación principal, y [Costo y facturación](/docs/guides/whatsapp/sending-whatsapp#cost-and-billing) para saber cuándo se cobra un envío. Las cifras de tarifas están en [Precios de WhatsApp](/products/whatsapp/pricing).

## Aspectos a tener en cuenta

- **Las plantillas predefinidas de Bird no se entregan a nueve países.** `bird_otp` y `bird_otp_authifly` envían desde las WhatsApp Business Accounts propias de Bird, y esas cuentas no llevan mensajes de autenticación a Egipto, India, Indonesia, Malasia, Nigeria, Pakistán, Arabia Saudita, Sudáfrica ni los Emiratos Árabes Unidos. Ese envío se rechaza con `422` [`E15063`](/docs/api/errors/E15063) `WhatsAppDestinationRestricted` antes de que se cobre nada. Una plantilla que creaste en tu propia cuenta, enviada desde tu propio número, llega a estos países con normalidad. [Verify](/docs/guides/verify/countries#where-whatsapp-cannot-carry-a-passcode) también llega a ellos, moviendo el código de verificación a otro canal por su cuenta.
- **Un envío con plantilla propia requiere `from`, y debe estar en la misma WhatsApp Business Account que la plantilla.** Un remitente en una cuenta diferente se rechaza con `422` [`E15023`](/docs/api/errors/E15023) `WhatsAppSenderWABAMismatch` antes de que se cobre nada.
- **Solo un idioma cuya versión esté aprobada y activa se puede enviar.** Un idioma en borrador, pendiente, rechazado o pausado no.
- **Meta puede recategorizar una plantilla por iniciativa propia.** No hay forma de rechazarlo, y arrastra las reglas de precio y entrega que siguen a la categoría.
- **La categoría de la plantilla y la categoría de su idioma pueden diferir.** Consulta [Plantillas de WhatsApp](/docs/guides/whatsapp/templates#listing-templates-from-the-api) para saber cómo la ruta de envío resuelve esto.
- **Una plantilla de autenticación ingestada no se puede duplicar.** Bird no puede leer el texto generado por WhatsApp para convertirlo en la configuración a partir de la cual se construye una plantilla nueva; eso es `422` [`E15024`](/docs/api/errors/E15024) `WhatsAppTemplateContentNotDuplicable`. Crea una nueva con su propia recomendación de seguridad y expiración de código.

## Próximos pasos

- [Plantillas de WhatsApp](/docs/guides/whatsapp/templates): explorar el catálogo y el contrato compartido de envío por plantilla
- [Plantillas de utilidad](/docs/guides/whatsapp/templates/utility): actualizaciones de pedidos, recordatorios de citas y avisos de cuenta
- [Verificación empresarial de WhatsApp](/docs/knowledge-base/whatsapp/business-verification): cómo funciona la verificación y qué más desbloquea

## Related resources

- [Connecting WhatsApp to Bird: from buying a number to a live channel](/learn/whatsapp/connecting-whatsapp-to-bird) (video)
- [What is the 24-hour customer service window on WhatsApp?](/explained/whatsapp/what-is-the-24-hour-customer-service-window) (answer)
- [WhatsApp message builder](/tools/whatsapp-message-builder) (tool)
- [WhatsApp](/products/whatsapp) (product)

[Get an implementation brief](/learn/workspace?topic=whatsapp)
