---
title: "Webhook - Eventos de Treble"
method: POST
path: "/treble-webhooks"
tags: ["Webhooks"]
---

# Webhook - Eventos de Treble

`POST /treble-webhooks`

Este endpoint debe ser implementado en TU servidor (por ejemplo: https://tudominio.com/treble-webhooks). Treble llamará a este webhook para diferentes tipos de eventos. Debes configurar la URL de este webhook en el panel de administración de Treble.

## Request body

- union
  - HSMStatusUpdateEvent — Evento que se dispara cuando cambia el estado de un HSM (Highly Structured Message)
    - `event_type` 'hsm.status', required — Tipo de evento, siempre 'hsm.status' para actualizaciones de estado de HSM
    - `event_id` string, required — Identificador único del evento
    - `timestamp` string, date-time, required — Marca de tiempo del evento en formato ISO 8601
    - `status` 'APPROVED' | 'REJECTED' | 'PAUSED' | 'DISABLED' | 'PENDING_DELETION', required — Nuevo estado del HSM
    - `name` string, required — Nombre o identificador del HSM
    - `affected_conversation_ids` integer[], required — IDs de las conversaciones afectadas por el cambio de estado
  - ConversationClosedEvent — Evento que se dispara cuando se cierra una conversación entre un usuario y la empresa
    - `event_type` 'session.close', required — Tipo de evento, siempre 'session.close' para conversaciones cerradas
    - `event_id` string, required — Identificador único del evento
    - `timestamp` string, date-time, required — Marca de tiempo del evento en formato ISO 8601
    - `session` Session, required
      - `external_id` string, required — ID externo único de la sesión
      - `closed_at` string, date-time, required — Fecha y hora en que se cerró la conversación
    - `user` UserInfo, required
      - `country_code` string, required — Código de país del usuario
      - `cellphone` string, required — Número de teléfono del usuario sin el código de país
    - `company` CompanyInfo, required
      - `id` integer, required — ID de la empresa en Treble
      - `cellphone` string, required — Número de teléfono de la empresa
    - `messages` Message[], required — Mensajes intercambiados durante la conversación
      - `sender` 'user' | 'company', required — Quien envió el mensaje (usuario o empresa)
      - `type` 'text' | 'hsm' | 'image' | 'video' | 'audio' | 'document' | 'location', required — Tipo de mensaje
      - `text` TextMessage
        - `message` string, required — Contenido del mensaje de texto
      - `hsm` HSMMessage
        - `message` string, required — Contenido del mensaje HSM
      - `image` MediaContent
        - `url` string, required — URL del archivo multimedia
        - `message` string — Pie de foto o descripción del contenido multimedia
      - `video` MediaContent
        - `url` string, required — URL del archivo multimedia
        - `message` string — Pie de foto o descripción del contenido multimedia
      - `audio` MediaContent
        - `url` string, required — URL del archivo multimedia
        - `message` string — Pie de foto o descripción del contenido multimedia
      - `document` MediaContent
        - `url` string, required — URL del archivo multimedia
        - `message` string — Pie de foto o descripción del contenido multimedia
      - `location` LocationContent
        - `latitude` number, float, required — Latitud de la ubicación
        - `longitude` number, float, required — Longitud de la ubicación
      - `created_at` string, date-time, required — Fecha y hora en que se creó el mensaje
      - `delivered_at` string, date-time, nullable, required — Fecha y hora en que se entregó el mensaje
      - `read_at` string, date-time, nullable, required — Fecha y hora en que se leyó el mensaje
    - `user_session_keys` ExtendedUserSessionKey[], required — Claves de sesión del usuario recopiladas durante la conversación
      - `key` string, required — Nombre de la variable
      - `value` string, required — Valor de la variable
      - `type` string, nullable — Tipo de la variable. Puede ser null o un tipo específico como 'location'.
    - `hsm` HSMInfo, required
      - `name` string, required — Nombre o identificador del HSM
      - `text` string, required — Texto principal del HSM
      - `answers` object[], required — Respuestas posibles para el HSM
        - `message` string, required — Texto de la respuesta
      - `header` union, required — Encabezado del HSM (puede ser texto o multimedia)
        - HSMHeaderText
          - `type` 'text', required — Tipo de encabezado
          - `message` string, required — Texto del encabezado
        - HSMHeaderMedia
          - `type` 'image' | 'video' | 'document', required — Tipo de medio del encabezado
          - `url` string, required — URL del archivo multimedia del encabezado
      - `footer` string, nullable, required — Pie de página del HSM
      - `buttons` object, nullable, required — Botones del HSM
        - `type` 'actions' | 'otp', required — Categoría de botones
        - `options` union[], required — Opciones de botones
          - union
            - HSMButtonQuickReply
              - …
            - HSMButtonCallToAction
              - …
            - HSMButtonOTP
              - …
  - DeploymentFailureEvent — Evento que se dispara cuando ocurre una falla en el despliegue de una conversación
    - `event_type` 'deployment.failure', required — Tipo de evento, siempre 'deployment.failure' para fallas en despliegue
    - `event_id` string, required — Identificador único del evento
    - `timestamp` string, date-time, required — Marca de tiempo del evento en formato ISO 8601
    - `failure_reason` 'FAILURE' | 'FAILURE_BY_HUMAN_HANDOVER' | 'REVOKED' | 'INVALID_PHONE' | 'FAILURE_BY_RATE_LIMIT' | 'COMPANY_RATE_LIMIT' | 'FAILURE_BY_TIER_CAPACITY' | 'MISSING_PARAMETER' | 'PARAMETER_MISMATCH' | 'FAILURE_BY_BLOCKED_CONTACT' | 'FAILURE_BY_OPTOUT_CONTACT' | 'INVALID_POLL' | 'CHARACTER_LIMIT_HEADER' | 'CHARACTER_LIMIT_BODY' | 'FAILURE_BY_DISABLED_HSM' | 'FAILURE_BY_SPAM_RATE_LIMIT' | 'FAILURE_BY_EXPERIMENT_NUMBER' | 'FAILURE_BY_UNABLE_TO_CONTACT', required — Razón específica de la falla del despliegue
    - `user` UserInfo, required
      - `country_code` string, required — Código de país del usuario
      - `cellphone` string, required — Número de teléfono del usuario sin el código de país
    - `conversation_id` integer, required — ID de la conversación relacionada con el despliegue
    - `failed_at` string, date-time, required — Marca de tiempo en que ocurrió la falla
    - `user_session_keys` ExtendedUserSessionKey[], required — Claves de sesión del usuario recopiladas durante la conversación
      - `key` string, required — Nombre de la variable
      - `value` string, required — Valor de la variable
      - `type` string, nullable — Tipo de la variable. Puede ser null o un tipo específico como 'location'.

## Response `200`

Respuesta exitosa

- object — Objeto JSON con la confirmación de recepción. El servicio debe responder en menos de 5 segundos.

---

[API](https://skmtc.net/treble/apis/api-de-treble-poll.md) · [All operations](https://skmtc.net/treble/apis/api-de-treble-poll/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/treble/api-de-treble-poll/versions/049bfb1c0ab6/schema)
