Skip to main content
X entrega chat.received, chat.sent y actividad relacionada de X Chat con texto cifrado en el payload. Descifra con el Chat XDK. Los tipos de evento privados de X Chat requieren autorización del usuario que monitoreas. Los adjuntos de archivos cifrados de X Chat usan media_hash_key y la descarga de multimedia de X Chat—no expansions=attachments.media_keys / media.fields=variants de la Post API.

Tipos de evento


1. Elige el modo de entrega

Activity stream (a menudo lo más simple para bots): GET /2/activity/stream con un Bearer token de app (opcional backfill_minutes, start_time, end_time según OpenAPI). Filtra en el cliente por chat.received / chat.sent. Suscripciones de Activity: gestiona suscripciones duraderas con:
  • POST /2/activity/subscriptions — crear
  • GET /2/activity/subscriptions — listar (paginado)
  • PUT /2/activity/subscriptions/{subscription_id} — actualizar
  • DELETE /2/activity/subscriptions/{subscription_id} o DELETE /2/activity/subscriptions?ids= — eliminar
Los cuerpos de solicitud y los scopes requeridos se definen en la operación OpenAPI de cada ruta. Crear una suscripción de la X Activity API (XAA) requiere autorización de contexto de usuario (OAuth 2.0 de contexto de usuario con los scopes correspondientes, como dm.read para eventos de chat) para el usuario cuya actividad monitoreas. Webhooks: si terminas los eventos en tu endpoint HTTPS, registra un webhook con POST /2/webhooks, pasa los challenges CRC y luego crea tus suscripciones de actividad con POST /2/activity/subscriptions, haciendo referencia a tu webhook_id (consulta las operaciones Webhooks y Activity en OpenAPI). El XDK de Python/TypeScript puede exponer helpers para webhooks y actividad cuando tu versión del SDK los incluya.
Suscríbete también a chat.sent si necesitas copias salientes. Otros lenguajes: llama directamente a las mismas rutas HTTPS /2/activity/* (token de contexto de usuario para crear suscripciones, Bearer token de app para el stream).

2. CRC (solo webhooks)

Si usas webhooks, responde a los Challenge-Response Checks (GET crc_token) con HMAC-SHA256 del token usando tu consumer secret, en la forma JSON que espera tu producto de webhooks (normalmente sha256=<base64>).

3. Descifra con el Chat XDK

Campos en vivo: payload.encoded_event, opcional payload.conversation_key_change_event. Deduplica por event_uuid. JavaScript usa tipos de evento en camelCase (message); los demás bindings usan "Message" y campos en snake_case.
Historial: GET /2/chat/conversations/{id}/events + decrypt_events — consulta Primeros pasos.

Forma del payload (en vivo)


Prácticas

  • Verifica las firmas del webhook según los requisitos de la plataforma
  • Cachea las claves de conversación y las claves públicas de los remitentes
  • Aplica los blobs de cambio de clave antes de descifrar mensajes dependientes
  • Deduplica por event_uuid