Chaque message envoyé via BulkGate reçoit son propre `ID du message`. C'est la seule valeur qui nous permet de retrouver un message précis — dans le portail, dans la réponse de l'API et chez le prestataire de livraison. Il s'appelait auparavant `SMS ID` ; il s'agit de la même valeur, simplement renommée entre-temps, car nous n'envoyons plus seulement des SMS depuis longtemps.

## Qu'est-ce que l'ID du message

L'`ID du message` est un identifiant textuel d'un message destiné à un destinataire.

- **BulkGate l'attribue automatiquement** dès qu'il accepte le message. Vous ne pouvez ni le choisir, ni le modifier par la suite.
- **Il correspond à un message pour un numéro.** L'envoi d'une [campagne](https://www.bulkgate.com/fr/centre-d-aide/campagne/creation-d-une-campagne-sms/) à mille numéros crée mille valeurs d'`ID du message` différentes, et non une seule valeur commune.
- **Sa forme varie** selon l'interface par laquelle vous envoyez. Considérez-le comme une chaîne opaque — n'en déduisez ni la date, ni le canal, ni quoi que ce soit d'autre, et n'essayez jamais d'en construire un vous-même.

> [!TIP]
> Si vous devez marquer des messages avec une valeur qui vous est propre — un numéro de commande, un identifiant client — c'est à cela que sert l'`Étiquette (TAG)`, et non l'`ID du message`. La différence est décrite dans [En quoi il diffère des autres identifiants](#en-quoi-il-differe-des-autres-identifiants).

## Pourquoi il s'appelait auparavant SMS ID

Le nom `SMS ID` date de l'époque où BulkGate n'envoyait que des SMS. Aujourd'hui, Viber, WhatsApp et RCS empruntent le même chemin, l'identifiant s'appelle donc `ID du message` — dans le portail et dans les interfaces plus récentes.

Les anciennes API n'ont toutefois pas renommé leur champ, afin de ne pas casser les intégrations existantes :

| Où | Nom du champ |
|:--|:--|
| Portail | `ID du message` |
| Simple API, Advanced API version `1.0` | `sms_id` |
| Advanced API version `2.0`, Integration API, mots de passe à usage unique | `message_id` |
| Confirmation de livraison (webhook) | `smsID` |

Dans tous les cas, il s'agit de la **même valeur**. Si vous prenez le `sms_id` d'une réponse de la Simple API et que vous le recherchez dans l'historique sous `ID du message`, vous trouverez exactement ce message.

## Où trouver l'ID dans le portail

1. Dans le menu, cliquez sur `Rapports`
2. Cliquez sur `Historique`
3. Cliquez sur la ligne du message — le détail se déplie
4. L'`ID du message` se trouve à droite du détail ; un clic sélectionne toute la valeur pour que vous puissiez la copier

Cela fonctionne aussi dans l'autre sens : si vous avez déjà l'`ID du message` et souhaitez retrouver le message correspondant, ouvrez `Filtre` au-dessus du tableau et collez la valeur dans le champ `ID du message`. La même valeur figure dans l'export de l'historique au format `CSV`.

Ce qu'affiche l'historique et comment le filtrer est décrit dans [Historique](https://www.bulkgate.com/fr/centre-d-aide/rapports-et-statistiques/historique/).

> [!IMPORTANT]
> Le texte du message n'est pas conservé indéfiniment dans l'historique — pour les enregistrements plus anciens, `Le texte du message a expiré` s'affiche à sa place. L'`ID du message` et les autres informations sont conservés.

## Où trouver l'ID dans la réponse de l'API

Les interfaces renvoient l'`ID du message` directement dans la réponse à la requête d'envoi — c'est le seul moment où vous l'obtenez par programmation, enregistrez-le donc dès cette étape.

| Interface | Nom du champ |
|:--|:--|
| [Simple API](https://www.bulkgate.com/fr/documentation/simple-api/simple-transactional/) | `sms_id` |
| [Advanced API `1.0`](https://www.bulkgate.com/fr/documentation/advanced-api/advanced-transactional/1.0/) | `sms_id` |
| [Advanced API `2.0`](https://www.bulkgate.com/fr/documentation/advanced-api/advanced-transactional/2.0/) | `message_id` |
| [Integration API](https://www.bulkgate.com/fr/documentation/integration-api/integration-transactional/) | `message_id` |
| [Mots de passe à usage unique](https://www.bulkgate.com/fr/documentation/otp-api/envoi-mot-de-passe-a-usage-unique/) | `message_id` |

En plus, chacune d'elles renvoie aussi un tableau `part_id` — décrit dans [Qu'est-ce que part_id](#qu-est-ce-que-part-id).

Lors d'un envoi en masse, la réponse contient un tableau `response` avec un enregistrement distinct pour chaque destinataire. L'`ID du message` se termine alors par le numéro d'ordre du message dans le lot :

```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'est-ce que part_id

Un SMS long n'est pas transmis au réseau de l'opérateur d'un seul tenant — il est divisé en plusieurs messages distincts que le téléphone du destinataire rassemble ensuite. Chacune de ces parties a son propre ID, et `part_id` en est la liste. Quand et pourquoi un message est divisé est décrit dans [Concaténation des messages](https://www.bulkgate.com/fr/centre-d-aide/sms/concatenation-des-messages/).

Le tableau suit trois règles :

- **Le dernier élément correspond toujours à l'`ID du message`** — il n'a pas de suffixe.
- **Les parties précédentes portent le suffixe `_1`, `_2`** et ainsi de suite, dans l'ordre d'assemblage du message.
- **Un message qui n'a pas été divisé a un seul élément** dans `part_id`, identique à l'`ID du message`. C'est le cas de chaque SMS en une seule partie ainsi que de tous les messages Viber, WhatsApp et RCS — ceux-ci ne sont jamais divisés en parties.

La réponse pour un SMS divisé en trois parties ressemble donc à ceci :

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

> [!IMPORTANT]
> Chaque partie est facturée comme un SMS distinct. Le nombre d'éléments dans `part_id` correspond donc aussi au nombre de messages que vous payez — trois dans l'exemple ci-dessus, alors que vous n'en avez envoyé qu'un.

> [!TIP]
> Pour associer les réponses et les confirmations de livraison, l'`ID du message` suffit. Le `part_id` est utile lorsque vous voulez savoir, dès l'envoi, en combien de parties le message a été divisé, sans attendre qu'il apparaisse dans l'historique.

## Où trouver l'ID dans un webhook

La confirmation de livraison arrive à l'adresse que vous avez définie, et l'`ID du message` se trouve dans son paramètre `smsID`. Utilisez-le pour associer la confirmation au message que vous avez envoyé.

- **Individuellement**, la requête arrive en `GET` avec les valeurs dans la chaîne de requête (query string) — voir [Confirmation de livraison](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/api-confirmations-de-livraison-et-sms-entrants/).
- **En masse**, une seule requête `POST` arrive avec un tableau d'enregistrements en `JSON` — voir [Confirmation de livraison groupée](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/api-confirmations-de-livraison-groupees-et-messages-entrants/).

L'endroit où définir l'adresse de confirmation de livraison est décrit dans [Webhooks](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/webhooks/).

> [!NOTE]
> Un même message peut déclencher plusieurs confirmations avec le même `smsID` — le statut `2` signifie que le message est en file d'attente chez l'opérateur et que le résultat arrivera plus tard. Attendez-vous à voir la même valeur plus d'une fois.

> [!WARNING]
> Les messages entrants et les réponses, que vous reconnaissez au `status` de valeur `10`, ne comportent pas de paramètre `smsID`. Il ne s'agit pas d'une confirmation pour un message que vous avez envoyé, mais d'un nouveau message du destinataire.

## À quoi sert l'ID du message

- **Signaler un problème de livraison.** Sans l'`ID du message`, nous ne pouvons pas retrouver un message précis chez le prestataire de livraison. La procédure complète est décrite dans [Le message n'a pas été remis](https://www.bulkgate.com/fr/centre-d-aide/informations-generales/message-non-remis/) — vous pouvez joindre jusqu'à trois valeurs d'`ID du message` différentes à un même signalement.
- **Association dans votre propre système.** Enregistrez l'`ID du message` issu de la réponse de l'API avec la commande ou le client, et faites-y correspondre les confirmations de livraison entrantes grâce au paramètre `smsID`.
- **Retrouver un message dans l'historique.** L'`ID du message` est le seul filtre qui mène à exactement un message ; par numéro ou par campagne, vous en trouverez plusieurs.

## En quoi il diffère des autres identifiants

Le détail du message dans l'historique affiche d'autres identifiants à côté de l'`ID du message`. Ils sont faciles à confondre, mais chacun répond à une question différente :

| Identifiant | Ce qu'il identifie | Qui le définit |
|:--|:--|:--|
| `ID du message` | Un message pour un destinataire | BulkGate |
| `ID de la campagne` | Toute une [campagne](https://www.bulkgate.com/fr/centre-d-aide/campagne/creation-d-une-campagne-sms/), c'est-à-dire tous les messages envoyés ensemble | BulkGate |
| `Étiquette (TAG)` | Tout ce que vous marquez vous-même — une commande, un client, une exécution de script | Vous |
| `Application ID` | L'[application](https://www.bulkgate.com/fr/documentation/administration-api-et-tokens/tokens-d-api/) depuis laquelle le message a été envoyé | BulkGate |

> [!TIP]
> L'`Étiquette (TAG)` est le seul d'entre eux que vous définissez vous-même. Si vous la renseignez lors de l'envoi, vous pourrez ensuite filtrer l'historique en fonction d'elle sans connaître aucun `ID du message` — pratique lorsque vous devez retrouver tous les messages liés à une même commande.
