> ## Documentation Index
> Fetch the complete documentation index at: https://dev.docs.1to1ai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Detalle de plantilla

> Consulta una plantilla por nombre e idioma y obtén las variables que hay que rellenar al enviarla.

<Info>
  **Endpoint** · `GET /templates/{name}/{language}`
</Info>

<Note>
  Endpoint de **solo consulta**: devuelve información y no modifica nada. No se manda dentro del array `actions` — se llama directo.
</Note>

Devuelve el detalle de una plantilla aprobada, identificada por su clave natural `(name, language)` — la misma que maneja Meta y la que ves en el dashboard. Además del estado y la categoría, la respuesta trae el bloque `parameters` **ya calculado**: qué variables lleva el cuerpo, si el encabezado espera un parámetro y qué botones URL admiten un valor dinámico.

Ese es el valor de esta consulta: Meta serializa los marcadores de posición (`{{1}}`, `{{2}}`, ...) dentro de la estructura `components` de la plantilla, y aquí llegan ya interpretados. No hay que parsear el formato de Meta para saber qué rellenar.

El flujo típico es leer primero y actuar después: consultas qué espera la plantilla y luego mandas la acción de envío con los valores en su lugar.

<Tip>
  Las plantillas se crean y se aprueban en el dashboard, y ahí mismo aparece su nombre y su idioma. Esta referencia no publica el listado completo de plantillas del negocio, así que el nombre lo tomas del dashboard.
</Tip>

**Parámetros**

Los tres van en la ruta. No hay parámetros de query.

* `slug` — identificador del negocio en la URL (**obligatorio**). Debe coincidir con el negocio del token.
* `name` — nombre de la plantilla tal como aparece en el dashboard (**obligatorio**). Alfanumérico y guion bajo. Se acepta cualquier combinación de mayúsculas y minúsculas: el servidor normaliza a minúsculas.
* `language` — código de idioma de Meta (**obligatorio**): `es`, `es_MX`, `en_US`, `pt_BR`. El servidor normaliza al formato `lower_UPPER`.

### Respuesta

```json theme={null}
{
  "data": {
    "name": "confirmacion_cita",
    "language": "es_MX",
    "status": "APPROVED",
    "category": "UTILITY",
    "body_text": "Hola {{1}}, tu cita quedó confirmada para las {{2}}.",
    "parameters": {
      "body_variables": [
        { "index": 1, "example": "Ana" },
        { "index": 2, "example": "10:00 AM" }
      ],
      "header_parameter": { "type": "image", "example": "4::aW1hZ2U=" },
      "button_parameters": [
        { "index": 0, "sub_type": "url", "example": "cita-12345" }
      ]
    }
  }
}
```

* `status` — estado en Meta. La API pública solo expone plantillas `APPROVED`.
* `category` — categoría de Meta: `MARKETING`, `UTILITY` o `AUTHENTICATION`.
* `body_text` — el cuerpo aprobado, con sus marcadores de posición. Puede ser `null`.
* `parameters.body_variables` — una entrada por marcador de posición del cuerpo, con su `index` (posición desde 1) y el `example` cargado en Meta al aprobar la plantilla (`null` si no hay). Arreglo vacío si el cuerpo no lleva variables.
* `parameters.header_parameter` — `type` (`text`, `image`, `video` o `document`) y `example`. Es `null` cuando el encabezado no espera ningún parámetro.
* `parameters.button_parameters` — solo los botones URL con marcador de posición: `index` del botón, `sub_type` (`url`) y `example`. Los botones de respuesta rápida no aparecen aquí.

### Ejemplo

Una sola lectura, sin efectos: el `GET` no envía nada ni toca la conversación, solo devuelve qué espera la plantilla.

```bash theme={null}
curl -X GET "https://app.1to1.ai/api/v1/public/{slug}/templates/confirmacion_cita/es_MX" \
  -H "Authorization: Bearer sk_1to1_tu_api_key"
```

Con esa respuesta ya sabes que el cuerpo lleva dos variables, así que la acción de envío queda así:

```jsonc theme={null}
{
  "type": "send_message",
  "template": {
    "name": "confirmacion_cita",
    "language": "es_MX",
    "body_variables": [
      { "index": 1, "value": "Ana" },
      { "index": 2, "value": "10:00 AM" }
    ]
  }
}
```

### Errores

| Código                  | HTTP | Cuándo                                                                                            |
| ----------------------- | ---- | ------------------------------------------------------------------------------------------------- |
| `INVALID_REQUEST`       | 400  | El `name` o el `language` no cumplen el formato esperado.                                         |
| `TEMPLATE_NOT_FOUND`    | 404  | No existe una plantilla con ese nombre e idioma en el negocio.                                    |
| `TEMPLATE_AMBIGUOUS`    | 409  | El mismo `(name, language)` existe en 2 o más canales de WhatsApp conectados. Contacta a soporte. |
| `TEMPLATE_NOT_APPROVED` | 422  | La plantilla existe pero su estado en Meta es `PENDING` o `REJECTED`.                             |

Los códigos comunes de autenticación, permisos y límite de tasa están en [Errores](/es/errors).

Los datos que devuelve esta consulta alimentan el campo `template` de las acciones de envío: [Enviar mensaje](/es/action-groups/send-message) y [Enviar respuesta rápida o plantilla](/es/action-groups/send-quick-reply-or-template). El concepto de plantilla y la ventana de 24 horas están en [Plantillas](/es/templates).
