Cada mensaje enviado a través de BulkGate recibe su propio `ID del mensaje`. Es el único dato que nos permite localizar un mensaje concreto: en el portal, en la respuesta de la API y en el proveedor de entrega. Antes se llamaba `ID de SMS`; se trata del mismo valor, solo que entretanto cambió de nombre, porque hace tiempo que no enviamos únicamente SMS.

## Qué es el ID del mensaje

El `ID del mensaje` es un identificador de texto de un mensaje enviado a un destinatario.

- **BulkGate lo asigna automáticamente** en el momento en que acepta el mensaje. No puede elegirlo ni modificarlo después.
- **Corresponde a un mensaje para un número.** El envío de una [campaña](https://www.bulkgate.com/es/centro-de-ayuda/campanas/crear-una-campana-de-sms/) a mil números genera mil valores de `ID del mensaje` distintos, no uno compartido.
- **Su forma varía** según la interfaz a través de la que envíe. Trátelo como una cadena opaca: no deduzca de él la fecha, el canal ni ningún otro dato, y nunca intente construirlo usted mismo.

> [!TIP]
> Si necesita marcar los mensajes con un valor propio —un número de pedido, un ID de cliente—, para eso sirve la `Etiqueta (TAG)`, no el `ID del mensaje`. La diferencia se describe en [En qué se diferencia de los demás identificadores](#en-que-se-diferencia-de-los-demas-identificadores).

## Por qué antes se llamaba ID de SMS

El nombre `ID de SMS` procede de la época en que BulkGate solo enviaba SMS. Hoy Viber, WhatsApp y RCS viajan por el mismo camino, por lo que el identificador se llama `ID del mensaje`, tanto en el portal como en las interfaces más recientes.

Sin embargo, las API más antiguas no cambiaron el nombre de su campo para no romper las integraciones existentes:

| Dónde | Cómo se llama el campo |
|:--|:--|
| Portal | `ID del mensaje` |
| Simple API, Advanced API versión `1.0` | `sms_id` |
| Advanced API versión `2.0`, Integration API, contraseñas de un solo uso | `message_id` |
| Informe de entrega (webhook) | `smsID` |

En todos los casos se trata del **mismo valor**. Así que, si toma el `sms_id` de una respuesta de la Simple API y lo busca en el historial en `ID del mensaje`, encontrará ese mismo mensaje.

## Dónde encontrar el ID en el portal

1. En el menú, haga clic en `Informes`
2. Haga clic en `Historia`
3. Haga clic en la fila del mensaje: se despliega el detalle
4. El `ID del mensaje` está en la parte derecha del detalle; al hacer clic se selecciona el valor completo para que pueda copiarlo

También funciona a la inversa: si ya tiene el `ID del mensaje` y quiere encontrar el mensaje, abra `Filtrar` encima de la tabla y pegue el valor en el campo `ID del mensaje`. El mismo valor se incluye en la exportación del historial a `CSV`.

Qué muestra el historial y cómo filtrarlo se describe en [Historial](https://www.bulkgate.com/es/centro-de-ayuda/informes-y-estadisticas/historial/).

> [!IMPORTANT]
> El texto del mensaje no se conserva en el historial para siempre: en los registros más antiguos aparece `Este mensaje ha caducado.` en su lugar. El `ID del mensaje` y los demás datos se mantienen.

## Dónde encontrar el ID en la respuesta de la API

Las interfaces devuelven el `ID del mensaje` directamente en la respuesta a la solicitud de envío. Es el único momento en que lo obtiene de forma programática, así que guárdelo en ese paso.

| Interfaz | Cómo se llama el campo |
|:--|:--|
| [Simple API](https://www.bulkgate.com/es/documentacion/simple-api/simple-transactional/) | `sms_id` |
| [Advanced API `1.0`](https://www.bulkgate.com/es/documentacion/advanced-api/advanced-transactional/1.0/) | `sms_id` |
| [Advanced API `2.0`](https://www.bulkgate.com/es/documentacion/advanced-api/advanced-transactional/2.0/) | `message_id` |
| [Integration API](https://www.bulkgate.com/es/documentacion/integration-api/integration-transaccional/) | `message_id` |
| [Contraseñas de un solo uso](https://www.bulkgate.com/es/documentacion/otp-api/envio-de-contrasena-de-un-solo-uso/) | `message_id` |

Junto a él, todas devuelven también un array `part_id`, que se describe en [Qué es part_id](#que-es-part-id).

En el envío masivo, la respuesta contiene un array `response` con un registro independiente para cada destinatario. El `ID del mensaje` termina entonces con el número de orden del mensaje dentro del lote:

```json
{
    "data": {
        "response": [
            {
                "status": "accepted",
                "message_id": "transactional-64afe5f28ffc2-0",
                "part_id": ["transactional-64afe5f28ffc2-0"],
                "number": "420777777777",
                "channel": "sms"
            },
            {
                "status": "accepted",
                "message_id": "transactional-64afe5f28ffc2-1",
                "part_id": ["transactional-64afe5f28ffc2-1"],
                "number": "420777777778",
                "channel": "sms"
            }
        ]
    }
}
```

## Qué es part_id

Un SMS largo no se entrega a la red del operador de una sola pieza: se divide en varios mensajes independientes que el teléfono del destinatario vuelve a unir. Cada una de esas partes tiene su propio ID, y `part_id` es la lista de ellos. Cuándo y por qué se divide un mensaje se describe en [Concatenación de mensajes](https://www.bulkgate.com/es/centro-de-ayuda/sms/concatenacion-de-mensajes/).

El array sigue tres reglas:

- **El último elemento coincide siempre con el `ID del mensaje`**: no lleva ningún sufijo.
- **Las partes anteriores llevan el sufijo `_1`, `_2`**, etc., en el orden en que se compone el mensaje.
- **Un mensaje que no se ha dividido tiene un único elemento** en `part_id`, idéntico al `ID del mensaje`. Esto incluye todos los SMS de una sola parte y todos los mensajes de Viber, WhatsApp y RCS, que nunca se dividen en partes.

Así, la respuesta para un SMS dividido en tres partes tiene este aspecto:

```json
{
    "data": {
        "status": "accepted",
        "sms_id": "tmpde1bcd4b1d1",
        "part_id": [
            "tmpde1bcd4b1d1_1",
            "tmpde1bcd4b1d1_2",
            "tmpde1bcd4b1d1"
        ],
        "number": "420777777777"
    }
}
```

> [!IMPORTANT]
> Cada parte se factura como un SMS independiente. El número de elementos de `part_id` es, por tanto, también el número de mensajes que paga: tres en el ejemplo anterior, aunque haya enviado uno.

> [!TIP]
> Para emparejar respuestas e informes de entrega basta con el `ID del mensaje`. El `part_id` resulta útil cuando quiere saber ya en el momento del envío en cuántas partes se ha dividido el mensaje, sin esperar a que aparezca en el historial.

## Dónde encontrar el ID en un webhook

El informe de entrega llega a la dirección que haya configurado, y el `ID del mensaje` está en su parámetro `smsID`. Utilícelo para emparejar el informe con el mensaje que envió.

- **De forma individual**, la solicitud llega mediante `GET` con los valores en la query string; consulte [Informe de entrega](https://www.bulkgate.com/es/documentacion/administracion-de-la-api/api-confirmaciones-de-entrega-y-sms-entrantes/).
- **De forma masiva**, llega una única solicitud `POST` con un array de registros en `JSON`; consulte [Informe de entrega masivo](https://www.bulkgate.com/es/documentacion/administracion-de-la-api/api-confirmaciones-de-entrega-masivas-y-mensajes-entrantes/).

Dónde se configura la dirección para los informes de entrega se describe en [Webhooks](https://www.bulkgate.com/es/documentacion/administracion-de-la-api/webhooks/).

> [!NOTE]
> Un mismo mensaje puede generar varios informes con el mismo `smsID`: el estado `2` significa que el mensaje está en cola en el operador y que el resultado llegará más tarde. Cuente con ver el mismo valor más de una vez.

> [!WARNING]
> Los mensajes entrantes y las respuestas, que reconocerá por `status` con el valor `10`, no llevan el parámetro `smsID`. No son un informe de un mensaje que usted haya enviado, sino un mensaje nuevo del destinatario.

## Para qué sirve el ID del mensaje

- **Notificar un problema de entrega.** Sin el `ID del mensaje` no podemos localizar un mensaje concreto en el proveedor de entrega. El procedimiento completo se describe en [El mensaje no se ha entregado](https://www.bulkgate.com/es/centro-de-ayuda/informacion-general/mensaje-no-entregado/); a una notificación puede adjuntar hasta tres valores de `ID del mensaje` distintos.
- **Emparejamiento en su propio sistema.** Guarde el `ID del mensaje` de la respuesta de la API junto al pedido o al cliente, y asigne a ellos los informes de entrega entrantes según el parámetro `smsID`.
- **Buscar un mensaje en el historial.** El `ID del mensaje` es el único filtro que lleva exactamente a un mensaje; por número o por campaña encontrará varios.

## En qué se diferencia de los demás identificadores

El detalle del mensaje en el historial muestra, junto al `ID del mensaje`, otros identificadores. Es fácil confundirlos, pero cada uno responde a una pregunta distinta:

| Identificador | Qué identifica | Quién lo asigna |
|:--|:--|:--|
| `ID del mensaje` | Un mensaje para un destinatario | BulkGate |
| `ID de campaña` | Toda una [campaña](https://www.bulkgate.com/es/centro-de-ayuda/campanas/crear-una-campana-de-sms/), es decir, todos los mensajes enviados juntos | BulkGate |
| `Etiqueta (TAG)` | Cualquier cosa que marque usted mismo: un pedido, un cliente, una ejecución de un script | Usted |
| `Application ID` | La [aplicación](https://www.bulkgate.com/es/documentacion/administracion-de-la-api/tokens-de-api/) desde la que se envió el mensaje | BulkGate |

> [!TIP]
> La `Etiqueta (TAG)` es la única de ellos que asigna usted mismo. Si la rellena al enviar, podrá filtrar después el historial por ella sin conocer ningún `ID del mensaje`; resulta práctico cuando necesita encontrar todos los mensajes de un mismo pedido.
