# Resumen de la API de mensajería v2

La API de mensajería v2 es un único endpoint REST/JSON para crear mensajes salientes a través de todos los canales que Pushwoosh admite:

- Push: iOS, Android, Huawei, Baidu, macOS, Amazon, Windows, Safari, Chrome, Firefox, IE
- Correo electrónico
- SMS
- Telegram, Kakao, LINE, WhatsApp, Viber

El **canal** se selecciona por el tipo de payload (`payload` para push / SMS / mensajería, `email_payload` para correo electrónico).

La **segmentación** se selecciona por el tipo de solicitud (`segment` para segmentos de audiencia, `transactional` para listas explícitas de dispositivos o usuarios).

## URL base

```
https://api.pushwoosh.com
```

Si utiliza una región dedicada o una implementación privada, confirme la URL base exacta con su Gerente de Éxito del Cliente de Pushwoosh.

## Autenticación

Cada solicitud debe incluir un encabezado `Authorization` con un [token de acceso a la API](/es/developer/api-reference/api-access-token/#server-api-token) de Pushwoosh del lado del servidor:

```
Authorization: Token SU_TOKEN_DE_API
```

Use el mismo token que ya emite para las llamadas a la API de servidor a servidor. No exponga este token en las aplicaciones cliente.

## Métodos

- [`Notify`](/es/developer/api-reference/messaging-api-v2/notify/): `POST /messaging/v2/notify`. Crear y enviar un único mensaje (de segmento o transaccional).
- [`Cancel`](/es/developer/api-reference/messaging-api-v2/cancel/): `POST /messaging/v2/cancel`. Cancelar un mensaje creado previamente que aún no ha sido entregado.
- [`Update`](/es/developer/api-reference/messaging-api-v2/update/): `POST /messaging/v2/update`. Reemplazar un mensaje aún programado con una nueva definición.

## Formato de solicitud y respuesta

- Tipo de contenido: `application/json`.
- Los nombres de los campos usan `snake_case`. Los grupos `oneof` aparecen como objetos anidados con exactamente una clave establecida.
- Los valores de enumeración (Enum) se serializan como sus nombres de cadena (por ejemplo, `"IOS"`, `"MESSAGE_TYPE_MARKETING"`).
- Las respuestas exitosas devuelven HTTP 200 con un cuerpo JSON; los errores usan el sobre de error estándar de gRPC-Gateway — `{ "code": ..., "message": ..., "details": [...] }`.

## Inicio rápido

```bash title="Enviar un push a un segmento"
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
  -H "Authorization: Token SU_TOKEN_DE_API" \
  -H "Content-Type: application/json" \
  -d '{
    "segment": {
      "application": "XXXXX-XXXXX",
      "platforms": ["IOS", "ANDROID"],
      "code": "active_users",
      "payload": {
        "content": {
          "localized_content": {
            "en": {
              "ios":     { "body": "Hello from v2!" },
              "android": { "body": "Hello from v2!" }
            }
          }
        }
      },
      "schedule": { "at": "2026-05-01T12:00:00Z" },
      "message_type": "MESSAGE_TYPE_MARKETING"
    }
  }'
```

## Envío de correo electrónico a través de SMTP

Si un servicio ya utiliza SMTP, puede enviar correos electrónicos transaccionales a través de la [puerta de enlace SMTP](/es/developer/api-reference/smtp-gateway/) en lugar de llamar a `Notify` directamente. La puerta de enlace reenvía cada mensaje a esta API como un `Notify` transaccional, por lo que se aplican las mismas reglas de autenticación y de payload de correo electrónico.

## Próximos pasos

<CardGrid>
  <LinkCard title="Notify" href="/developer/api-reference/messaging-api-v2/notify/" />
  <LinkCard title="Cancel" href="/developer/api-reference/messaging-api-v2/cancel/" />
  <LinkCard title="Update" href="/developer/api-reference/messaging-api-v2/update/" />
  <LinkCard title="Referencia de payload" href="/developer/api-reference/messaging-api-v2/payload-reference/" />
  <LinkCard title="Referencia de payload de correo electrónico" href="/developer/api-reference/messaging-api-v2/email-payload-reference/" />
  <LinkCard title="Puerta de enlace SMTP" href="/developer/api-reference/smtp-gateway/" />
  <LinkCard title="Migración desde v1" href="/developer/api-reference/messaging-api-v2/migration-from-v1/" />
</CardGrid>