> ## 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.

# Mensajes

> Enviar texto, media, respuestas rápidas y plantillas con la acción send_message, según la ventana de 24h.

Todos los envíos de WhatsApp salen por una sola acción, **`send_message`**, dentro
del endpoint `POST /conversation/actions`. Una misma acción cubre los cuatro modos
—texto, media, respuesta rápida y plantilla—; cuál puedes usar depende del estado
de la [ventana de 24h](/es/conversations) de la conversación.

## Qué modo aplica según la ventana

| Modo             | Ventana abierta | Ventana cerrada       |
| ---------------- | --------------- | --------------------- |
| Texto            | ✅               | ❌ `WINDOW_CLOSED`     |
| Media            | ✅               | ❌ `WINDOW_CLOSED`     |
| Respuesta rápida | ✅               | ❌ `WINDOW_CLOSED`     |
| **Plantilla**    | ✅               | ✅ — reabre la ventana |

<Tip>
  La **plantilla** es el único mensaje enviable con la ventana cerrada. Además,
  enviarla reabre la ventana, habilitando texto, media y respuesta rápida otra vez.
</Tip>

## Los cuatro modos de `send_message`

Cada `send_message` manda **un solo tipo de contenido**: texto (`body`), media
(`file_uuid`), una respuesta rápida (`quick_reply`) o una plantilla (`template`).
Los tres primeros admiten además una plantilla de *fallback* para cuando la
ventana está cerrada (ver abajo).

<Tabs>
  <Tab title="Texto">
    Texto plano, hasta 4096 caracteres.

    ```jsonc theme={null}
    {
      "type": "send_message",
      "body": "Hola 👋, ¿en qué te puedo ayudar?"
    }
    ```
  </Tab>

  <Tab title="Media">
    Imagen, video, audio o documento: pasa un `file_uuid` de un archivo ya subido
    y confirmado, con `body` como caption opcional. El tipo se deduce del archivo;
    el audio no admite caption. El flujo de subida está en
    [Subir multimedia](/es/action-groups/upload-media).

    ```jsonc theme={null}
    {
      "type": "send_message",
      "file_uuid": "7b8a1c2d-3e4f-5678-90ab-cdef12345678",
      "body": "Tu comprobante 📄"
    }
    ```
  </Tab>

  <Tab title="Respuesta rápida">
    Una respuesta rápida preconfigurada en el dashboard, identificada por `name`
    (sin distinguir mayúsculas). Puede emitir varios mensajes.

    ```jsonc theme={null}
    {
      "type": "send_message",
      "quick_reply": { "name": "Bienvenida" }
    }
    ```
  </Tab>

  <Tab title="Plantilla">
    Una plantilla aprobada por Meta — el único modo que funciona con la ventana
    cerrada. `language` es obligatorio (formato Meta `lower_UPPER`, ej. `es_MX`).
    Ver [Plantillas](/es/templates).

    ```jsonc theme={null}
    {
      "type": "send_message",
      "template": {
        "name": "confirmacion_cita",
        "language": "es_MX",
        "body_variables": [{ "index": 1, "value": "Ana" }]
      }
    }
    ```
  </Tab>
</Tabs>

## Enviar

El envío es una acción dentro del grupo. Manda un `POST /conversation/actions` con
un `send_message` en el array `actions`:

```bash theme={null}
curl -X POST "https://app.1to1.ai/api/v1/public/{slug}/conversation/actions" \
  -H "Authorization: Bearer sk_1to1_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation": {
      "phone": "+5215512345678",
      "channel": "ch_7A9K2M4Q"
    },
    "actions": [
      {
        "type": "send_message",
        "body": "Hola 👋, ¿en qué te puedo ayudar?"
      }
    ]
  }'
```

Responde `202`: el envío corre en background. Consulta el resultado en el estado de
la conversación o en el activity log. Para encadenar varios envíos u otras acciones
en un mismo request, ver [Acciones](/es/action-groups/overview).

## Fallback de plantilla para la ventana cerrada

Un `send_message` de texto, media o respuesta rápida puede incluir además un
`template` opcional: si al ejecutarse la ventana está **cerrada**, se envía la
plantilla en vez del primario; si está **abierta**, se envía el primario. Sin
`template`, un primario con la ventana cerrada falla con `WINDOW_CLOSED`.

```bash theme={null}
curl -X POST "https://app.1to1.ai/api/v1/public/{slug}/conversation/actions" \
  -H "Authorization: Bearer sk_1to1_tu_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "conversation": {
      "phone": "+5215512345678",
      "channel": "ch_7A9K2M4Q"
    },
    "actions": [
      {
        "type": "send_message",
        "body": "Hola 👋",
        "template": {
          "name": "recordatorio",
          "language": "es_MX"
        }
      }
    ]
  }'
```

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Plantillas" icon="file-lines" href="/es/templates">
    Crear y enviar plantillas para reabrir la ventana.
  </Card>

  <Card title="Acciones" icon="layer-group" href="/es/action-groups/overview">
    Encadenar envíos, etiquetas, notas y ejecución de AI en un request.
  </Card>
</CardGroup>
