API de WhatsApp y CRM
POST/webhooks

Registrar webhook

Registra una nueva URL de endpoint de webhook para recibir notificaciones por callback.

API de WhatsApp y CRM
Necesitas una clave de API. Pídela a nuestro equipo de soporte o créala desde la plataforma.
POST https://api.getincloud.ai/v1/webhooks

Registra una nueva URL de endpoint de webhook para recibir notificaciones por callback.

Para más información sobre casos de uso de los Webhooks y ejemplos de integración, lee aquí el tutorial de Webhooks.

Si no sabes qué son los webhooks, lee este artículo.

Nota: la URL del endpoint del webhook debe ser accesible desde la Internet pública

y usar un dominio válido con resolución DNS correcta. Por ejemplo: https://mycompany.com/webhook

Nuestro sistema realizará una petición HTTP

a la URL del endpoint remoto que indiques cada vez que ocurra un nuevo evento de mensaje o de dispositivo.

La información se codificará en formato JSON como parte de los datos del cuerpo HTTP.

Tu servidor debe aceptar y leer el cuerpo de la petición HTTP POST y procesarlo en consecuencia.

Tu servidor debe responder con un código de estado HTTP 200-209. De lo contrario, se considerará una

notificación fallida y se reintentará.

Preguntas

Consulta las preguntas y respuestas frecuentes en este artículo del Centro de ayuda.

Recomendación de seguridad

Recomendamos encarecidamente usar HTTPS en lugar de HTTP, ya que la comunicación estaría cifrada de extremo a extremo.

Eventos de webhook

Los eventos de webhook compatibles son:

  • deal:stage:changed: Cuando un negocio del embudo de ventas se mueve a otra etapa (disponible en el plan Platform Professional y superiores)
  • deal:won: Cuando un negocio del embudo de ventas se cierra como ganado (disponible en el plan Platform Professional y superiores)
  • deal:lost: Cuando un negocio del embudo de ventas se cierra como perdido (disponible en el plan Platform Professional y superiores)
  • deal:assigned: Cuando un negocio del embudo de ventas se asigna a un agente o se desasigna (disponible en el plan Platform Professional y superiores)
  • deal:updated: Cuando cambia el título o el importe de un negocio del embudo de ventas (disponible en el plan Platform Professional y superiores)
  • deal:archived: Cuando un negocio del embudo de ventas se archiva (disponible en el plan Platform Professional y superiores)
  • deal:reopened: Cuando un negocio del embudo de ventas cerrado o archivado se reabre (disponible en el plan Platform Professional y superiores)
  • message:in:new: En cada nuevo mensaje entrante enviado por usuarios o grupos a tu dispositivo (restringido a los planes Platform)
  • message:out:new: En cada mensaje saliente entregado desde el número de WhatsApp conectado a otros usuarios (restringido a los planes Platform)
  • message:out:sent: En cada mensaje entregado correctamente (restringido a los planes Gateway)
  • message:out:ack: En cada actualización de estado de un mensaje saliente: recibido o leído por el usuario (restringido a los planes Platform Business y Enterprise)
  • message:update: Notifica cuando se actualiza el contenido de un mensaje existente: en nuevos votos de encuestas, en confirmación o cancelación de asistencia a eventos, en edición de mensajes
  • message:reaction: Notifica cuando se añade o se elimina una reacción a un mensaje. Solo es compatible con los planes Business y Enterprise
  • status:update: En cada nueva publicación de estado de usuario realizada por cualquiera de tus contactos guardados
  • channel:in: En cada mensaje recién recibido en cualquier canal que estés siguiendo
  • message:out:failed: En cada entrega de mensaje fallida (se superó el máximo de reintentos, multimedia no válido o número de teléfono no encontrado)
  • number:session: Se notifica cuando la sesión de WhatsApp del número se conecta, se desconecta o pierde la conexión
  • group:update: En cada actualización de grupo: nuevo grupo, cambio de nombre, cambio de asunto, participante añadido o eliminado, participante promovido o degradado, cambio de configuración del grupo
  • chat:update: En cada actualización de chat: cambios de estado del chat, el chat se asigna o se desasigna, el chat se resuelve o se reabre como no resuelto, el chat se archiva, el chat se elimina
  • contact:update: En cada actualización de contacto: se actualiza la información o los metadatos

A continuación encontrarás más detalles y ejemplos JSON de los distintos eventos de webhook.

Ejemplos de webhook

Explora decenas de ejemplos de payloads JSON de eventos de webhook y casos de uso reales en el artículo del Centro de ayuda.

Evento de nuevo mensaje entrante

Evento: message:in:new

Nota: este tipo de evento solo está disponible en los planes Platform. Más abajo encontrarás los eventos de webhook específicos de los planes Gateway.

Ejemplo de evento de webhook de nuevo mensaje de texto entrante (payload JSON)

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

{
  &quot;id&quot;: &quot;3EB03EBAF8863B70BA00AF&quot;,
  &quot;object&quot;: &quot;message&quot;,
  &quot;event&quot;: &quot;message:in:new&quot;,
  &quot;created&quot;: 1671225190,
  &quot;device&quot;: {
      &quot;id&quot;: &quot;61b37a069cba0c15d6c89757&quot;,
      &quot;phone&quot;: &quot;+4412345678&quot;,
      &quot;alias&quot;: &quot;Demo&quot;,
      &quot;plan&quot;: &quot;io-enterprise&quot;,
      &quot;version&quot;: 1
  },
  &quot;data&quot;: {
      &quot;id&quot;: &quot;3EB03EBAF8863B70BA00AF&quot;,
      &quot;type&quot;: &quot;text&quot;,
      &quot;flow&quot;: &quot;inbound&quot;,
      &quot;status&quot;: &quot;active&quot;,
      &quot;ack&quot;: &quot;delivered&quot;,
      &quot;from&quot;: &quot;+4412345678@c.us&quot;,
      &quot;fromNumber&quot;: &quot;+4412345678&quot;,
      &quot;to&quot;: &quot;1234567890@c.us&quot;,
      &quot;toNumber&quot;: &quot;+1234567890&quot;,
      &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
      &quot;timestamp&quot;: 1671225190,
      &quot;body&quot;: &quot;This is a sample inbound text message webhook event&quot;,
      &quot;chat&quot;: {
          &quot;id&quot;: &quot;1234567890@c.us&quot;,
          &quot;name&quot;: &quot;John Wick&quot;,
          &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;type&quot;: &quot;chat&quot;,
          &quot;status&quot;: &quot;active&quot;,
          &quot;waStatus&quot;: &quot;active&quot;,
          &quot;statusUpdatedAt&quot;: &quot;2022-08-23T08:40:45.722Z&quot;,
          &quot;deletedAt&quot;: &quot;2022-08-24T13:28:25.033Z&quot;,
          &quot;firstMessageAt&quot;: &quot;2022-08-19T10:59:08.000Z&quot;,
          &quot;lastMessageAt&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;lastOutboundMessageAt&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;lastInboundMessageAt&quot;: &quot;2022-12-15T22:00:00.000Z&quot;,
          &quot;lastReactionAt&quot;: &quot;2022-12-15T03:00:13.662Z&quot;,
          &quot;lastReactionEmoji&quot;: &quot;&quot;,
          &quot;stats&quot;: {
              &quot;notes&quot;: 0,
              &quot;localMessages&quot;: 53,
              &quot;inboundMessages&quot;: 0,
              &quot;outboundMessages&quot;: 0
          },
          &quot;labels&quot;: [
              &quot;sales&quot;,
              &quot;new-customer&quot;
          ],
          &quot;owner&quot;: {
              &quot;agent&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assigner&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assignedAt&quot;: &quot;2022-11-15T23:53:00.439Z&quot;
          },
          &quot;contact&quot;: {
              &quot;wid&quot;: &quot;1234567890@c.us&quot;,
              &quot;name&quot;: &quot;John&quot;,
              &quot;shortName&quot;: &quot;Wick&quot;,
              &quot;displayName&quot;: &quot;John Wick&quot;,
              &quot;formattedName&quot;: &quot;John Wick&quot;,
              &quot;formattedShortName&quot;: &quot;John Wick&quot;,
              &quot;syncedAt&quot;: &quot;2022-12-16T21:47:03.206Z&quot;,
              &quot;phone&quot;: &quot;+1234567890&quot;,
              &quot;image&quot;: {
                  &quot;url&quot;: &quot;https://pps.whatsapp.net/v/t61.1111-1/1234567_1234567_1234567_n.jpg?oe=1234567&amp;oh=123456712345671234567&quot;
              }
          }
      },
      &quot;events&quot;: {
          &quot;sent&quot;: {
              &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;
          }
      },
      &quot;meta&quot;: {
          &quot;rtl&quot;: false,
          &quot;containsEmoji&quot;: false,
          &quot;isGif&quot;: false,
          &quot;isStar&quot;: false,
          &quot;isGroup&quot;: false,
          &quot;isForwarded&quot;: false,
          &quot;isEphemeral&quot;: false,
          &quot;isNotification&quot;: false,
          &quot;isLive&quot;: false,
          &quot;isBroadcast&quot;: false,
          &quot;isBizNotification&quot;: false,
          &quot;isDoc&quot;: false,
          &quot;isLinkPreview&quot;: false,
          &quot;isPSA&quot;: false,
          &quot;isRevoked&quot;: false,
          &quot;isUnreadType&quot;: false,
          &quot;isFailed&quot;: false,
          &quot;notifyName&quot;: &quot;Support Team&quot;,
          &quot;source&quot;: &quot;android&quot;
      }
  }
}

</details>

Ejemplo de evento de webhook de nuevo mensaje multimedia entrante (payload JSON)

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

{
  &quot;id&quot;: &quot;3EB03EBAF8863B70BA001A&quot;,
  &quot;object&quot;: &quot;message&quot;,
  &quot;event&quot;: &quot;message:out:new&quot;,
  &quot;created&quot;: 1671225190,
  &quot;device&quot;: {
      &quot;id&quot;: &quot;61b37a069cba0c15d6c89757&quot;,
      &quot;phone&quot;: &quot;+4412345678&quot;,
      &quot;alias&quot;: &quot;Demo&quot;,
      &quot;plan&quot;: &quot;io-enterprise&quot;,
      &quot;version&quot;: 1
  },
  &quot;data&quot;: {
      &quot;id&quot;: &quot;3EB03EBAF8863B70BA001A&quot;,
      &quot;type&quot;: &quot;image&quot;,
      &quot;flow&quot;: &quot;outbound&quot;,
      &quot;status&quot;: &quot;active&quot;,
      &quot;ack&quot;: &quot;delivered&quot;,
      &quot;from&quot;: &quot;+4412345678@c.us&quot;,
      &quot;fromNumber&quot;: &quot;+4412345678&quot;,
      &quot;to&quot;: &quot;1234567890@c.us&quot;,
      &quot;toNumber&quot;: &quot;+1234567890&quot;,
      &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
      &quot;timestamp&quot;: 1671225190,
      &quot;body&quot;: &quot;This is a sample inbound image message webhook event&quot;,
      &quot;chat&quot;: {
          &quot;id&quot;: &quot;1234567890@c.us&quot;,
          &quot;name&quot;: &quot;Mike&quot;,
          &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;type&quot;: &quot;chat&quot;,
          &quot;status&quot;: &quot;active&quot;,
          &quot;waStatus&quot;: &quot;active&quot;,
          &quot;statusUpdatedAt&quot;: &quot;2022-08-23T08:40:45.722Z&quot;,
          &quot;deletedAt&quot;: &quot;2022-08-24T13:28:25.033Z&quot;,
          &quot;firstMessageAt&quot;: &quot;2022-08-19T10:59:08.000Z&quot;,
          &quot;lastMessageAt&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;lastOutboundMessageAt&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
          &quot;lastInboundMessageAt&quot;: &quot;2022-12-15T22:00:00.000Z&quot;,
          &quot;lastReactionAt&quot;: &quot;2022-12-15T03:00:13.662Z&quot;,
          &quot;lastReactionEmoji&quot;: &quot;&quot;,
          &quot;stats&quot;: {
              &quot;notes&quot;: 0,
              &quot;localMessages&quot;: 53,
              &quot;inboundMessages&quot;: 0,
              &quot;outboundMessages&quot;: 0
          },
          &quot;labels&quot;: [
              &quot;sales&quot;,
              &quot;new-customer&quot;
          ],
          &quot;owner&quot;: {
              &quot;agent&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assigner&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assignedAt&quot;: &quot;2022-11-15T23:53:00.439Z&quot;
          },
          &quot;contact&quot;: {
              &quot;wid&quot;: &quot;1234567890@c.us&quot;,
              &quot;name&quot;: &quot;Mike&quot;,
              &quot;shortName&quot;: &quot;Mike&quot;,
              &quot;displayName&quot;: &quot;Mike&quot;,
              &quot;formattedName&quot;: &quot;Mike&quot;,
              &quot;formattedShortName&quot;: &quot;Mike&quot;,
              &quot;syncedAt&quot;: &quot;2022-12-16T21:47:03.206Z&quot;,
              &quot;phone&quot;: &quot;+1234567890&quot;,
              &quot;image&quot;: {
                  &quot;url&quot;: &quot;https://pps.whatsapp.net/v/t61.1111-1/1234567_1234567_1234567_n.jpg?oe=1234567&amp;oh=123456712345671234567&quot;
              }
          }
      },
      &quot;media&quot;: {
          &quot;id&quot;: &quot;639ce7571e6e11586eb6ccb6&quot;,
          &quot;message&quot;: &quot;3EB03EBAF8863B70BA00&quot;,
          &quot;chat&quot;: &quot;1234567890@c.us&quot;,
          &quot;flow&quot;: &quot;out&quot;,
          &quot;status&quot;: &quot;available&quot;,
          &quot;caption&quot;: null,
          &quot;type&quot;: &quot;image&quot;,
          &quot;size&quot;: 196851,
          &quot;mime&quot;: &quot;image/jpeg&quot;,
          &quot;extension&quot;: &quot;jpeg&quot;,
          &quot;filename&quot;: &quot;image_out_4412345678@c.us_3EB03EBAF8863B70BA00.jpeg&quot;,
          &quot;createdAt&quot;: &quot;2022-12-16T21:47:03.814Z&quot;,
          &quot;expiresAt&quot;: &quot;2022-12-23T21:47:03.809Z&quot;,
          &quot;meta&quot;: {
              &quot;hasPreview&quot;: true,
              &quot;aspectRatio&quot;: 0.75
          },
          &quot;stats&quot;: {
              &quot;downloads&quot;: 0
          },
          &quot;preview&quot;: {
              &quot;image&quot;: &quot;iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3=&quot;,
              &quot;width&quot;: 47,
              &quot;height&quot;: 63,
              &quot;mime&quot;: &quot;image/jpeg&quot;
          },
          &quot;links&quot;: {
              &quot;resource&quot;: &quot;/v1/chat/61b37a069cba0c15d6c89757/files/639ce7571e6e11586eb6ccb6&quot;,
              &quot;download&quot;: &quot;/v1/chat/61b37a069cba0c15d6c89757/files/639ce7571e6e11586eb6ccb6/download&quot;,
              &quot;chat&quot;: &quot;/v1/chat/61b37a069cba0c15d6c89757/chats/1234567890@c.us&quot;,
              &quot;contact&quot;: &quot;/v1/chat/61b37a069cba0c15d6c89757/contacts/1234567890@c.us&quot;,
              &quot;message&quot;: &quot;/v1/chat/61b37a069cba0c15d6c89757/messages/3EB03EBAF8863B70BA00&quot;
          }
      },
      &quot;events&quot;: {
          &quot;sent&quot;: {
              &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;
          }
      },
      &quot;meta&quot;: {
          &quot;rtl&quot;: false,
          &quot;containsEmoji&quot;: false,
          &quot;isGif&quot;: false,
          &quot;isStar&quot;: false,
          &quot;isGroup&quot;: false,
          &quot;isForwarded&quot;: false,
          &quot;isEphemeral&quot;: false,
          &quot;isNotification&quot;: false,
          &quot;isLive&quot;: false,
          &quot;isBroadcast&quot;: false,
          &quot;isBizNotification&quot;: false,
          &quot;isDoc&quot;: false,
          &quot;isLinkPreview&quot;: false,
          &quot;isPSA&quot;: false,
          &quot;isRevoked&quot;: false,
          &quot;isUnreadType&quot;: false,
          &quot;isFailed&quot;: false,
          &quot;notifyName&quot;: &quot;Support Team&quot;
      }
  }
}

</details>

Evento de nuevo mensaje saliente

Evento: message:out:new

Nota: este tipo de evento solo está disponible en los planes Platform. Más abajo encontrarás los eventos de webhook específicos de los planes Gateway.

Ejemplo de evento de webhook de nuevo mensaje de texto saliente (payload JSON)

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

{
  &quot;id&quot;: &quot;3EB004B1D010CA0EF6A201&quot;,
  &quot;object&quot;: &quot;message&quot;,
  &quot;event&quot;: &quot;message:out:new&quot;,
  &quot;created&quot;: 1671220018,
  &quot;device&quot;: {
      &quot;id&quot;: &quot;61b37a069cba0c15d6c89757&quot;,
      &quot;phone&quot;: &quot;+44123456789&quot;,
      &quot;alias&quot;: &quot;Demo-2&quot;,
      &quot;plan&quot;: &quot;io-enterprise&quot;,
      &quot;version&quot;: 1
  },
  &quot;data&quot;: {
      &quot;id&quot;: &quot;3EB004B1D010CA0EF6A201&quot;,
      &quot;type&quot;: &quot;text&quot;,
      &quot;flow&quot;: &quot;outbound&quot;,
      &quot;status&quot;: &quot;active&quot;,
      &quot;ack&quot;: &quot;delivered&quot;,
      &quot;agent&quot;: &quot;5f71e36254800f533ab79148&quot;,
      &quot;from&quot;: &quot;44123456789@c.us&quot;,
      &quot;fromNumber&quot;: &quot;+44123456789&quot;,
      &quot;to&quot;: &quot;1234567890@c.us&quot;,
      &quot;toNumber&quot;: &quot;+1234567890&quot;,
      &quot;date&quot;: &quot;2022-12-15T22:00:00.000Z&quot;,
      &quot;timestamp&quot;: 1671220018,
      &quot;body&quot;: &quot;Hello! This is a sample outbound text message webhook event&quot;,
      &quot;chat&quot;: {
          &quot;id&quot;: &quot;1234567890@c.us&quot;,
          &quot;name&quot;: &quot;John&quot;,
          &quot;date&quot;: &quot;2022-12-15T22:00:00.000Z&quot;,
          &quot;type&quot;: &quot;chat&quot;,
          &quot;status&quot;: &quot;active&quot;,
          &quot;waStatus&quot;: &quot;active&quot;,
          &quot;statusUpdatedAt&quot;: &quot;2022-08-23T08:40:45.722Z&quot;,
          &quot;deletedAt&quot;: &quot;2022-08-24T13:28:25.033Z&quot;,
          &quot;firstMessageAt&quot;: &quot;2022-08-19T10:59:08.000Z&quot;,
          &quot;lastMessageAt&quot;: &quot;2022-12-15T22:06:32.000Z&quot;,
          &quot;lastOutboundMessageAt&quot;: &quot;2022-12-15T22:06:32.000Z&quot;,
          &quot;lastInboundMessageAt&quot;: &quot;2022-12-15T22:02:58.000Z&quot;,
          &quot;lastReactionAt&quot;: &quot;2022-12-15T03:39:03.000Z&quot;,
          &quot;lastReactionEmoji&quot;: &quot;&quot;,
          &quot;stats&quot;: {
              &quot;notes&quot;: 0,
              &quot;localMessages&quot;: 234,
              &quot;inboundMessages&quot;: 0,
              &quot;outboundMessages&quot;: 0
          },
          &quot;labels&quot;: [
              &quot;sales&quot;,
              &quot;customer&quot;
          ],
          &quot;owner&quot;: {
              &quot;agent&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assigner&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assignedAt&quot;: &quot;2022-11-15T23:53:00.439Z&quot;
          },
          &quot;contact&quot;: {
              &quot;wid&quot;: &quot;1234567890@c.us&quot;,
              &quot;name&quot;: &quot;John&quot;,
              &quot;shortName&quot;: &quot;John&quot;,
              &quot;displayName&quot;: &quot;John&quot;,
              &quot;formattedName&quot;: &quot;John&quot;,
              &quot;formattedShortName&quot;: &quot;John&quot;,
              &quot;syncedAt&quot;: &quot;2022-12-15T22:06:32.952Z&quot;,
              &quot;phone&quot;: &quot;+1234567890&quot;,
              &quot;image&quot;: {
                  &quot;url&quot;: &quot;https://pps.whatsapp.net/v/t61.123456-24/12345678_00011112222233334444_100135239294920312_n.jpg&quot;
              }
          }
      },
      &quot;events&quot;: {
          &quot;sent&quot;: {
              &quot;date&quot;: &quot;2022-12-15T22:06:33.108Z&quot;
          }
      },
      &quot;meta&quot;: {
          &quot;rtl&quot;: false,
          &quot;containsEmoji&quot;: false,
          &quot;isGif&quot;: false,
          &quot;isStar&quot;: false,
          &quot;isGroup&quot;: false,
          &quot;isForwarded&quot;: false,
          &quot;isEphemeral&quot;: false,
          &quot;isNotification&quot;: false,
          &quot;isLive&quot;: false,
          &quot;isBroadcast&quot;: false,
          &quot;isBizNotification&quot;: false,
          &quot;isDoc&quot;: false,
          &quot;isLinkPreview&quot;: false,
          &quot;isPSA&quot;: false,
          &quot;isRevoked&quot;: false,
          &quot;isUnreadType&quot;: false,
          &quot;isFailed&quot;: false,
          &quot;notifyName&quot;: &quot;Support Team&quot;
      }
  }
}

</details>

El mensaje es recibido y leído por el destinatario

Evento: message:out:ack

Nota: este tipo de evento solo está disponible en los planes Platform. Más abajo encontrarás los eventos de webhook específicos de los planes Gateway.

Ejemplo de evento de webhook de nuevo mensaje de texto saliente (payload JSON)

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

{
  &quot;id&quot;: &quot;3EB004B1D010CA0EF6A205&quot;,
  &quot;object&quot;: &quot;message&quot;,
  &quot;event&quot;: &quot;message:out:ack&quot;,
  &quot;created&quot;: 1671220018,
  &quot;ack&quot;: &quot;read&quot;,
  &quot;device&quot;: {
      &quot;id&quot;: &quot;61b37a069cba0c15d6c89757&quot;,
      &quot;phone&quot;: &quot;+44123456789&quot;,
      &quot;alias&quot;: &quot;Demo&quot;,
      &quot;plan&quot;: &quot;io-enterprise&quot;,
      &quot;version&quot;: 1
  },
  &quot;data&quot;: {
      &quot;id&quot;: &quot;3EB004B1D010CA0EF6A205&quot;,
      &quot;type&quot;: &quot;text&quot;,
      &quot;flow&quot;: &quot;outbound&quot;,
      &quot;status&quot;: &quot;active&quot;,
      &quot;ack&quot;: &quot;read&quot;,
      &quot;from&quot;: &quot;44123456789@c.us&quot;,
      &quot;fromNumber&quot;: &quot;+44123456789&quot;,
      &quot;to&quot;: &quot;1234567890@c.us&quot;,
      &quot;toNumber&quot;: &quot;+1234567890&quot;,
      &quot;date&quot;: &quot;2022-12-15T20:00:00.000Z&quot;,
      &quot;timestamp&quot;: 1671220018,
      &quot;body&quot;: &quot;This is a sample message read ack webhook event&quot;,
      &quot;chat&quot;: {
          &quot;id&quot;: &quot;1234567890@c.us&quot;,
          &quot;name&quot;: &quot;John&quot;,
          &quot;date&quot;: &quot;2022-12-15T21:00:00.000Z&quot;,
          &quot;type&quot;: &quot;chat&quot;,
          &quot;status&quot;: &quot;active&quot;,
          &quot;waStatus&quot;: &quot;active&quot;,
          &quot;statusUpdatedAt&quot;: &quot;2022-08-23T08:40:45.722Z&quot;,
          &quot;deletedAt&quot;: &quot;2022-08-24T13:28:25.033Z&quot;,
          &quot;firstMessageAt&quot;: &quot;2022-08-19T10:59:08.000Z&quot;,
          &quot;lastMessageAt&quot;: &quot;2022-12-16T21:25:38.000Z&quot;,
          &quot;lastOutboundMessageAt&quot;: &quot;2022-12-16T21:25:38.000Z&quot;,
          &quot;lastInboundMessageAt&quot;: &quot;2022-12-15T22:02:58.000Z&quot;,
          &quot;lastReactionAt&quot;: &quot;2022-12-15T03:43:13.662Z&quot;,
          &quot;lastReactionEmoji&quot;: &quot;&quot;,
          &quot;stats&quot;: {
              &quot;notes&quot;: 0,
              &quot;localMessages&quot;: 52,
              &quot;inboundMessages&quot;: 0,
              &quot;outboundMessages&quot;: 0
          },
          &quot;labels&quot;: [
              &quot;sales&quot;,
              &quot;new-customer&quot;
          ],
          &quot;owner&quot;: {
              &quot;agent&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assigner&quot;: &quot;5f71e36254800f533ab79148&quot;,
              &quot;assignedAt&quot;: &quot;2022-11-15T23:53:00.439Z&quot;
          },
          &quot;contact&quot;: {
              &quot;wid&quot;: &quot;1234567890@c.us&quot;,
              &quot;name&quot;: &quot;John&quot;,
              &quot;shortName&quot;: &quot;John&quot;,
              &quot;displayName&quot;: &quot;John&quot;,
              &quot;formattedName&quot;: &quot;John&quot;,
              &quot;formattedShortName&quot;: &quot;John&quot;,
              &quot;syncedAt&quot;: &quot;2022-12-16T21:26:37.821Z&quot;,
              &quot;phone&quot;: &quot;+1234567890&quot;,
              &quot;image&quot;: {
                  &quot;url&quot;: &quot;https://pps.whatsapp.net/v/t61.123456-24/12345678_00011112222233334444_100135239294920312_n.jpg&quot;
              }
          }
      },
      &quot;events&quot;: {
          &quot;sent&quot;: {
              &quot;date&quot;: &quot;2022-12-16T21:26:43.215Z&quot;
          },
          &quot;delivered&quot;: {
              &quot;date&quot;: &quot;2022-12-16T21:26:43.216Z&quot;
          }
      },
      &quot;meta&quot;: {
          &quot;rtl&quot;: false,
          &quot;containsEmoji&quot;: false,
          &quot;isGif&quot;: false,
          &quot;isStar&quot;: false,
          &quot;isGroup&quot;: false,
          &quot;isForwarded&quot;: false,
          &quot;isEphemeral&quot;: false,
          &quot;isNotification&quot;: false,
          &quot;isLive&quot;: false,
          &quot;isBroadcast&quot;: false,
          &quot;isBizNotification&quot;: false,
          &quot;isDoc&quot;: false,
          &quot;isLinkPreview&quot;: false,
          &quot;isPSA&quot;: false,
          &quot;isRevoked&quot;: false,
          &quot;isUnreadType&quot;: false,
          &quot;isFailed&quot;: false,
          &quot;notifyName&quot;: &quot;Support Team&quot;
      }
  }
}

</details>

Evento de mensaje enviado (solo planes Gateway)

Importante: los siguientes eventos de webhook solo están disponibles en los planes Gateway y están obsoletos en los demás planes.

Si usas un plan diferente, utiliza en su lugar el siguiente evento de webhook:

  • Usa message:out:new en lugar de message:out:sent

Este evento usa un payload JSON estructurado como un arreglo de objetos, por lo que se pueden notificar varios mensajes en la misma petición HTTP POST, hasta 25 elementos por notificación.

Ejemplo de estructura de datos del payload JSON

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

[
  {
    &quot;event&quot;: &quot;&lt;event type&gt;&quot;,
    &quot;date&quot;: &quot;2022-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;&lt;Message ID&gt;&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/&lt;Message ID&gt;&quot;,
    &quot;user&quot;: &quot;&lt;User ID&gt;&quot;,
    &quot;data&quot;: { ... }
  },
  {
    &quot;event&quot;: &quot;&lt;event type&gt;&quot;,
    &quot;date&quot;: &quot;2022-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;&lt;Message ID&gt;&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/&lt;Message ID&gt;&quot;,
    &quot;user&quot;: &quot;&lt;User ID&gt;&quot;,
    &quot;data&quot;: { ... }
  },
  ...
]

</details>

Ejemplo de cuerpo JSON de un POST para un evento específico de mensaje enviado

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

[
  {
    &quot;event&quot;: &quot;message:out:sent&quot;,
    &quot;date&quot;: &quot;2018-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;5bf612faa893b00016c0f13d&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/5bf612faa893b00016c0f13d&quot;,
    &quot;user&quot;: &quot;5bd75ab235623e00162a73dc&quot;,
    &quot;data&quot;: {
      &quot;id&quot;: &quot;5bf612faa893b00016c0f13d&quot;,
      &quot;phone&quot;: &quot;+1234567890&quot;,
      &quot;status&quot;: &quot;processed&quot;,
      &quot;deliveryStatus&quot;: &quot;delivered&quot;,
      &quot;createdAt&quot;: &quot;2022-11-22T02:22:50.955Z&quot;,
      &quot;sentAt&quot;: &quot;2022-11-22T02:29:29.254Z&quot;,
      &quot;failedAt&quot;: null,
      &quot;processedAt&quot;: &quot;2022-11-22T02:28:54.818Z&quot;,
      &quot;webhookStatus&quot;: &quot;pending&quot;,
      &quot;message&quot;: &quot;This is an automated message sent from getincloud API&quot;,
      &quot;priority&quot;: &quot;normal&quot;,
      &quot;schedule&quot;: {
        &quot;enabled&quot;: false
      },
      &quot;retry&quot;: {
        &quot;count&quot;: 1,
        &quot;lastRetryAt&quot;: &quot;2022-11-22T02:25:58.414Z&quot;
      },
      &quot;device&quot;: {
        &quot;id&quot;: &quot;3bf5d1ff2ff2bd001696ac42&quot;,
        &quot;phone&quot;: &quot;+1234567890&quot;,
        &quot;alias&quot;: &quot;My WA Delivery Device&quot;,
        &quot;description&quot;: &quot;Device 1 for customer support and product notifications&quot;,
        &quot;status&quot;: &quot;verified&quot;,
        &quot;session&quot;: {
          &quot;status&quot;: &quot;online&quot;,
          &quot;error&quot;: false,
          &quot;lastSyncAt&quot;: &quot;2018-12-02T10:11:16.008Z&quot;
        },
        &quot;createdAt&quot;: &quot;2018-11-20T09:21:03.898Z&quot;,
        &quot;queue&quot;: {
          &quot;total&quot;: 100,
          &quot;size&quot;: 0,
          &quot;available&quot;: 100
        },
        &quot;profile&quot;: {
          &quot;name&quot;: &quot;+1234567890&quot;,
          &quot;info&quot;: null,
          &quot;lastSyncAt&quot;: &quot;2022-11-22T22:14:33.334Z&quot;,
          &quot;imagePath&quot;: &quot;/v1/devices/3bf5d1ff2ff2bd001696ac42/profile/image&quot;
        },
        &quot;links&quot;: {
          &quot;device&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42&quot;
          },
          &quot;scan&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/scan&quot;
          },
          &quot;sync&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/sync&quot;
          },
          &quot;health&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/health&quot;
          },
          &quot;profileImage&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/profile/image&quot;
          },
          &quot;messages&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/messages?devices=3bf5d1ff2ff2bd001696ac42&quot;
          }
        },
        &quot;stats&quot;: {
          &quot;total&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;minutes&quot;: {
            &quot;sent&quot;: 4,
            &quot;failed&quot;: 0,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 48,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;quarter&quot;: {
            &quot;sent&quot;: 4,
            &quot;failed&quot;: 0,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 48,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;hour&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;day&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;week&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;month&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;year&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          }
        }
      }
    }
  }
]

</details>

Evento de fallo en la entrega del mensaje

Evento: message:out:failed

Este evento usa un payload JSON estructurado como un arreglo de objetos, por lo que se pueden notificar varios mensajes en la misma petición HTTP POST, hasta 25 elementos por notificación.

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

[
  {
    &quot;event&quot;: &quot;&lt;event type&gt;&quot;,
    &quot;date&quot;: &quot;2022-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;&lt;Message ID&gt;&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/&lt;Message ID&gt;&quot;,
    &quot;user&quot;: &quot;&lt;User ID&gt;&quot;,
    &quot;data&quot;: { ... }
  },
  {
    &quot;event&quot;: &quot;&lt;event type&gt;&quot;,
    &quot;date&quot;: &quot;2022-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;&lt;Message ID&gt;&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/&lt;Message ID&gt;&quot;,
    &quot;user&quot;: &quot;&lt;User ID&gt;&quot;,
    &quot;data&quot;: { ... }
  },
  ...
]

</details>

Ejemplo de cuerpo JSON de un POST para un evento de webhook de mensaje fallido

<details>

<summary>Haz clic para mostrar el ejemplo de payload JSON</summary>

[
  {
    &quot;event&quot;: &quot;message:out:failed&quot;,
    &quot;date&quot;: &quot;2018-12-08T15:01:48.518Z&quot;,
    &quot;entity&quot;: &quot;message&quot;,
    &quot;entityId&quot;: &quot;5bf612faa893b00016c0f13d&quot;,
    &quot;entityUrl&quot;: &quot;https://api.getincloud.ai/v1/messages/5bf612faa893b00016c0f13d&quot;,
    &quot;user&quot;: &quot;5bd75ab235623e00162a73dc&quot;,
    &quot;data&quot;: {
      &quot;id&quot;: &quot;5bf612faa893b00016c0f13d&quot;,
      &quot;phone&quot;: &quot;+1234567890&quot;,
      &quot;status&quot;: &quot;failed&quot;,
      &quot;deliveryStatus&quot;: &quot;failed&quot;,
      &quot;createdAt&quot;: &quot;2022-11-22T02:22:50.955Z&quot;,
      &quot;sentAt&quot;: &quot;2022-11-22T02:29:29.254Z&quot;,
      &quot;failedAt&quot;: null,
      &quot;processedAt&quot;: &quot;2022-11-22T02:28:54.818Z&quot;,
      &quot;webhookStatus&quot;: &quot;pending&quot;,
      &quot;message&quot;: &quot;This is an automated message sent from the API&quot;,
      &quot;priority&quot;: &quot;normal&quot;,
      &quot;schedule&quot;: {
        &quot;enabled&quot;: false
      },
      &quot;retry&quot;: {
        &quot;count&quot;: 1,
        &quot;lastRetryAt&quot;: &quot;2022-11-22T02:25:58.414Z&quot;
      },
      &quot;device&quot;: {
        &quot;id&quot;: &quot;3bf5d1ff2ff2bd001696ac42&quot;,
        &quot;phone&quot;: &quot;+1234567890&quot;,
        &quot;alias&quot;: &quot;My WA Delivery Device&quot;,
        &quot;description&quot;: &quot;Device 1 for customer support and product notifications&quot;,
        &quot;status&quot;: &quot;verified&quot;,
        &quot;session&quot;: {
          &quot;status&quot;: &quot;online&quot;,
          &quot;error&quot;: false,
          &quot;lastSyncAt&quot;: &quot;2022-12-02T10:11:16.008Z&quot;
        },
        &quot;createdAt&quot;: &quot;2022-11-20T09:21:03.898Z&quot;,
        &quot;queue&quot;: {
          &quot;total&quot;: 100,
          &quot;size&quot;: 0,
          &quot;available&quot;: 100
        },
        &quot;profile&quot;: {
          &quot;name&quot;: &quot;+1234567890&quot;,
          &quot;info&quot;: null,
          &quot;lastSyncAt&quot;: &quot;2022-11-22T22:14:33.334Z&quot;,
          &quot;imagePath&quot;: &quot;/v1/devices/3bf5d1ff2ff2bd001696ac42/profile/image&quot;
        },
        &quot;links&quot;: {
          &quot;device&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42&quot;
          },
          &quot;scan&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/scan&quot;
          },
          &quot;sync&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/sync&quot;
          },
          &quot;health&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/health&quot;
          },
          &quot;profileImage&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/devices/3bf5d1ff2ff2bd001696ac42/profile/image&quot;
          },
          &quot;messages&quot;: {
            &quot;method&quot;: &quot;GET&quot;,
            &quot;url&quot;: &quot;https://api.getincloud.ai/v1/messages?devices=3bf5d1ff2ff2bd001696ac42&quot;
          }
        },
        &quot;stats&quot;: {
          &quot;total&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;minutes&quot;: {
            &quot;sent&quot;: 4,
            &quot;failed&quot;: 0,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 48,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;quarter&quot;: {
            &quot;sent&quot;: 4,
            &quot;failed&quot;: 0,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 48,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;hour&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;day&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;week&quot;: {
            &quot;sent&quot;: 10,
            &quot;failed&quot;: 1,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 114,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;month&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          },
          &quot;year&quot;: {
            &quot;sent&quot;: 565,
            &quot;failed&quot;: 103,
            &quot;media&quot;: 0,
            &quot;totalUpstreamSize&quot;: 0,
            &quot;totalDeliveryTime&quot;: 13331,
            &quot;totalUpstreamSpeed&quot;: 0
          }
        }
      }
    }
  }
]

</details>


Prueba este endpoint en el probador de API en vivo

>¿Necesitas ayuda? Explora todos los tutoriales, más de 100 ejemplos de casos de uso y juega con el probador de API en vivo con ejemplos de código listos para usar en más de 15 lenguajes de programación, incluidos JavaScript/Node.js, PHP, Python, C#, Java, Ruby, Swift, Kotlin, Powershell, cURL y más.

Autenticación

Envía tu API key en el encabezado Token en cada petición.

Cuerpo de la petición

CampoTipoObligatorioDescripción
namestringSíNombre interno del webhook, para tu referencia minLength: 1 · maxLength: 30
devicestringNoRestringe los eventos del webhook a un dispositivo específico. Indica aquí el ID del dispositivo (24 caracteres alfanuméricos). minLength: 24 · maxLength: 24 · pattern: ^[0-9A-Fa-f]{24}$
urlstringSíURL del endpoint del webhook. Debe ser una URL válida con esquema http o https y accesible desde Internet. No se permiten IPs ni dominios de redes locales o privadas. minLength: 6 · maxLength: 500
eventsarray<string>SíEvento o eventos que se notificarán en este endpoint de webhook. Consulta la descripción de eventos anterior para más información.

Respuestas

CódigoDescripción
201Clave de webhook creada
400Datos de consulta o de cuerpo de la petición no válidos
401No autorizado: token de API no válido o ausente
403Faltan los permisos requeridos
404Recurso no encontrado
409Conflicto
429Demasiadas peticiones: inténtalo de nuevo más tarde
500Error inesperado
501No implementado
503Servicio temporalmente no disponible: inténtalo de nuevo más tarde
// This code example requires you to have installed curl package
// Installation instructions here: https://curl.haxx.se/download.html

// Create new webhooks endpoint
curl --request POST \
  --url https://api.getincloud.ai/v1/webhooks \
  --header 'Content-Type: application/json' \
  --header 'Token: <api token goes here>' \
  --data '{"name":"My webhook server","url":"http://webhooks.company.com"}'


// Create new webhooks endpoint that accepts only certain events
curl --request POST \
  --url https://api.getincloud.ai/v1/webhooks \
  --header 'Content-Type: application/json' \
  --header 'Token: <api token goes here>' \
  --data '{"name":"My webhook server","url":"http://webhooks.company.com","events":["message:out:sent","message:out:failed"]}'
AnteriorObtener webhooks
¿Te sirvió esta página?