> For the complete documentation index, see [llms.txt](https://www.docpartner.dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.docpartner.dev/api/sms-partner/gestion-des-webhooks.md).

# Webhooks

Gérer les statuts et réponses de vos campagnes SMS

## Réponse sur un numéro court

Après l’envoi d’une campagne depuis notre numéro court, SMS Partner vous permet de recevoir des réponses.\
Pour en savoir plus, [**contactez nous**](https://www.smspartner.fr/contact).

{% hint style="info" %}

#### À noter

Pour recevoir les réponses, vous devez paramétrer votre URL de réception des réponses

dans votre onglet [API SMS](https://my.smspartner.fr/dashboard/api/paramaters)
{% endhint %}

<figure><img src="https://2528554477-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F4e8Q5BglDmkxCRHmV0sb%2Fuploads%2Fgit-blob-db9fd9ebeae18abfad5ff0920c9bd4f6308e2261%2FCapture%20d%E2%80%99e%CC%81cran%202025-12-03%20a%CC%80%2014.32.41.png?alt=media" alt=""><figcaption></figcaption></figure>

**Exemple de réponse JSON envoyé en POST**

```json
{
"type":"response",
"phone_number":"+336....",
"text":"test",
"message_id":1111111
}

```

**Pour un STOP SMS la réponse du webhook sera**

```json
{
"type":"stop",
"phone_number":"+336...",
"text":"Stop",
"message_id":111111
}
```

## Réponse sur numéro long (numéro virtuel)

SMS Partner vous propose la location d'un numéro long (exemple: 06 XX XX XX XX)\
Pour en savoir plus sur la création d'un numéro long dédié, [contactez nous](https://www.smspartner.fr/contact/).

#### Exemple de réponse simple (160 caractères maximum)

```json
{
  "msisdn": "33xxxxxxxxx",
  "to": "33xxxxxxxxx",
  "messageId": "1235-1234-1233-4665",
  "text": "Test",
  "type": "text",
  "keyword": "Test",
  "message-timestamp": "2016-03-10 09:51:46"
}
```

#### Exemple de réponse sur SMS long (+160 caractères)

```json
{
  "msisdn": "33xxxxxxxxx",
  "to": "33xxxxxxxxx",
  "messageId": "a1b2c3d4-e5f6-40a1-80b2-c9d0e1f....", //au format UUID
  "concat": "true",
  "concat-ref": "171",
  "concat-total": "2",
  "concat-part": "1",
  "text": "   Message long....",
  "type": "text",
  "keyword": "MESSAGELONG",
  "message-timestamp": "2016-03-09 16:00:30"
}
 
{
  "msisdn": "33xxxxxxxxx",
  "to": "33xxxxxxxxx",
  "messageId": "a1b2c3d4-e5f6-40a1-80b2-c9d0e1...", //au format UUID
  "concat": "true",
  "concat-ref": "171",
  "concat-total": "2",
  "concat-part": "2",
  "text": "....très long",
  "type": "text",
  "keyword": "TRESLONG",
  "message-timestamp": "2016-03-09 16:00:31"
}
```

## DLR - récupération des statuts des SMS

**Le statut de délivrabilité des SMS peut être envoyé via le webhook en POST**

{% code overflow="wrap" %}

```json
{
"status":"delivered",
"msgId":"11111111",
"date":1764768485,
"phone":"+336.......",
"cost":"0.049",
"currency":"EUR",
"tag":"...."
}
```

{% endcode %}

Les différents statuts sont

* delivered : Le SMS a été délivré
* not delivered : Le SMS n'a pas été délivré
* waiting: Le SMS est en attente chez l'opérateur

## RCS - récupération des évenements

Les événements RCS sont envoyés en POST (JSON) sur les URL renseignées à l'envoi (urlDlr, urlResponse) ou, à défaut, sur celles de votre compte (Paramètres API).

| Champ           | Description                                                                                                                                                                                                                                                                                                                                                        |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `type`          | Type d'événement en minuscules (`delivered`, `read`, `reply`, `action`, `message`, `response`)                                                                                                                                                                                                                                                                     |
| `phone_number`  | Numéro du destinataire (format international)                                                                                                                                                                                                                                                                                                                      |
| `transmit_id`   | Identifiant du message RCS                                                                                                                                                                                                                                                                                                                                         |
| `message_id`    | Identifiant de la campagne (`messageId` de la réponse d'envoi), `null` pour une conversation hors campagne                                                                                                                                                                                                                                                         |
| `date`          | Date de l'événement, heure de Paris, `AAAA-MM-JJ hh:mm:ss`                                                                                                                                                                                                                                                                                                         |
| `text`          | Texte saisi, ou libellé de la suggestion cliquée ; vide pour un fichier ou une position seuls                                                                                                                                                                                                                                                                      |
| `postback_data` | Valeur `postbackData` de la suggestion cliquée — présent uniquement pour une suggestion                                                                                                                                                                                                                                                                            |
| `file`          | Présent uniquement si le destinataire a envoyé une image, un audio, une vidéo ou un fichier. **`url` et `thumbnail_url` sont des liens temporaires signés fournis par Google** : téléchargez le fichier dès réception du webhook si vous souhaitez le conserver. `thumbnail_url`, `file_name` et `size_bytes` peuvent être absents (`null`) selon le type de média |
| `location`      | Présent uniquement pour un partage de position (`latitude`, `longitude` en degrés décimaux)                                                                                                                                                                                                                                                                        |

Le mot-clé **STOP** envoyé par le destinataire est traité par SMS Partner (désabonnement) et transmis comme un `response` normal.

**Accusés de réception:**

```json
{
  "type": "delivered",
  "phone_number": "+336...",
  "transmit_id": "15d1-4429-8bbe-467f6f19efaa",
  "message_id": 11,
  "date": "2026-10-03 10:21:45"
}
```

**Lecture:**

```json
{
  "type": "read",
  "phone_number": "+336...",
  "transmit_id": "15d1-4429-8bbe-467f6f19efaa",
  "message_id": 11,
  "date": "2026-10-03 10:22:03"
}
```

**reply, clic sur une suggestion de réponse**

```json
{
  "type": "reply",
  "phone_number": "+336...",
  "transmit_id": "a1b2c3d4-…",
  "message_id": 107255221,
  "date": "2026-10-03 10:22:10",
  "text": "Oui, je confirme", //libellé de la suggestion,
  "postback_data": "confirm_rdv"
}
```

**action, clic sur un bouton d'action (ouvrir une URL, appeler, voir une position)**

```json
{
  "type": "action",
  "phone_number": "+336...",
  "transmit_id": "a1b2c3d4-…",
  "message_id": 107255221,
  "date": "2026-10-03 10:22:30",
  "text": "Voir l'itinéraire",
  "postback_data": "open_map"
}
```

**response, message libre du destinataire**

Texte saisi, fichier, position, ou STOP. file et location ne sont présents que si le message en contient ; text est vide pour un fichier ou une position seuls.

```json
{
  "type": "response",
  "phone_number": "+336...",
  "transmit_id": "e5f6a7b8-…",
  "message_id": null,
  "date": "2026-10-03 10:25:00",
  "text": "Voici la photo",
  "file": {
    "url": "https://rcs-user-content-eu.googleapis.com/…",
    "mime_type": "image/jpeg",
    "file_name": "IMG_1234.jpg",
    "size_bytes": 182340,
    "thumbnail_url": "https://rcs-user-content-eu.googleapis.com/…"
  },
  "location": { "latitude": 48.8566, "longitude": 2.3522 }
}
```

{% hint style="warning" %}
**Fichiers reçus : liens temporaires:**

Les URL file.url et file.thumbnail\_url sont des liens signés fournis par Google, **valables quelques jours seulement** (vous recevrez ensuite une erreur 403). **SMS Partner ne conserve pas le fichier** : si vous souhaitez le garder, **téléchargez-le dès réception du webhook et stockez-le de votre côté**. Le file.mime\_type vous indique le format (image/jpeg, image/png, video/mp4, audio/ogg, application/pdf…).
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://www.docpartner.dev/api/sms-partner/gestion-des-webhooks.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
