# Erreur WhatsApp 131048 : envois restreints, que faire ?

URL: https://wa.genuka.com/docs/errors/131048
Language: French

> Erreur WhatsApp 131048 : Meta restreint les envois du numéro après des blocages ou signalements spam. Comment lire la note de qualité et la faire remonter.

L'erreur WhatsApp 131048 signifie que Meta limite les envois de votre numéro parce que trop de
messages précédents ont été bloqués ou signalés comme spam par leurs destinataires. Ce n'est pas un
problème de vitesse mais de qualité. Suspendez vos campagnes, vérifiez la note de qualité du
numéro, puis reprenez avec des destinataires consentants.

## Que signifie l'erreur 131048 ?

> « Message failed to send because there are restrictions on how many messages can be sent from
> this phone number. This may be because too many previous messages were blocked or flagged as
> spam. »
> — [Meta, codes d'erreur de la Cloud API](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes#throttling-errors)

Meta renvoie vers trois choses : le statut de qualité dans le WhatsApp Manager, les limites
d'envoi de templates, et la qualité des templates. Le point commun est la **qualité des messages**
telle que Meta la mesure
([Meta, Send messages](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-quality)) :

* elle porte sur la manière dont vos messages ont été reçus **sur les 7 derniers jours**, avec plus
  de poids pour les plus récents ;
* elle combine les signaux des utilisateurs : blocages, signalements, mises en sourdine,
  archivages, et les raisons données au moment de bloquer ;
* sur un numéro à fort trafic, elle peut changer en quelques minutes.

La note du numéro, son statut et sa limite d'envoi s'affichent dans le WhatsApp Manager, sous
**Account tools > Phone numbers**.

## Quand l'erreur 131048 apparaît-elle ?

* **Après une campagne envoyée à une liste froide** : contacts importés sans accord, anciens
  clients qui ne vous attendaient pas.
* **Quand un même template accumule les retours négatifs** : sa propre note baisse, puis celle du
  numéro qui l'envoie.
* **Quand les messages se succèdent trop souvent** vers les mêmes personnes. Meta cite « trop de
  messages par jour » parmi les pratiques à éviter.

### Où la voir dans Genuka WA ?

| Canal                                                        | Ce que vous recevez                                                                                                                                                   |
| ------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Réponse de `POST /api/v1/messages`                           | `400`, `"error": "send_retryable"`, `meta.code: 131048`                                                                                                               |
| Webhook `message_status`, si Meta signale l'échec après coup | `data.status: "failed"`, `data.errors[0].code: 131048`                                                                                                                |
| Campagne                                                     | Quand Meta refuse dès l'appel, chaque destinataire touché est tenté jusqu'à trois fois, puis passe `failed`. Signalé par webhook, il passe `failed` sans nouvel essai |
| `GET /api/v1/numbers/{id}/health`                            | `qualityRating` (`GREEN`, `YELLOW`, `RED`) lu en direct chez Meta, et des `alerts` quand il a changé                                                                  |
| Webhook `phone_number_quality_update`                        | Le changement de qualité ou de palier, poussé par Meta                                                                                                                |
| `GET /api/v1/templates?sync=true`                            | `qualityScore.score` (`GREEN`, `YELLOW`, `RED`, `UNKNOWN`) de chaque template créé via Genuka WA, pour trouver celui qui pose problème                                |

Genuka WA classe 131048 en `retryable` : la restriction finit par se lever, et un nouvel essai plus
tard peut passer. Notre conseil : `meta.retryable: true` veut dire ici « plus tard », pas
« maintenant ». Les trois tentatives automatiques d'une campagne s'enchaînent en moins de deux
secondes et échouent en général aussi : ne relancez rien sur ce numéro tant que sa note n'est pas
remontée.

## Comment corriger l'erreur 131048 ?

1. **Suspendez les envois marketing de ce numéro.** Ne lancez aucune nouvelle campagne tant que la
   note n'est pas remontée : chaque message mal reçu pèse sur les 7 jours qui viennent.
2. **Lisez la note du numéro** avec `GET /api/v1/numbers/{id}/health`, ou dans le WhatsApp Manager.
3. **Trouvez le template en cause** : `GET /api/v1/templates?sync=true` renvoie
   `qualityScore.score` pour chaque template créé via Genuka WA ; pour ceux créés dans le WhatsApp
   Manager, lisez la note là-bas. Arrêtez ceux en `RED` ou `YELLOW`, et réécrivez-les avant de les
   réutiliser.
4. **Nettoyez votre audience** : gardez les contacts qui ont donné leur accord et qui lisent, retirez
   les autres, et respectez chaque désinscription.
5. **Reprenez progressivement**, avec de petits envois vers vos clients les plus engagés, en
   surveillant la note à chaque étape.

**curl**

```bash
curl https://wa.genuka.com/api/v1/numbers/con_1/health \
  -H "Authorization: Bearer $GENUKA_WA_API_KEY"
# {
#   "data": { "connectionId": "con_1", "qualityRating": "YELLOW", "messagesPerSecond": 80, ... },
#   "alerts": [ { "kind": "quality_dropped", "severity": "warning", "from": "GREEN", "to": "YELLOW", "message": "..." } ]
# }
```

**Node.js**

```ts
// À lancer avant chaque campagne : ne partez pas sur un numéro déjà dégradé.
export async function canLaunchCampaign(connectionId: string): Promise<boolean> {
  const response = await fetch(`https://wa.genuka.com/api/v1/numbers/${connectionId}/health`, {
    headers: { Authorization: `Bearer ${process.env.GENUKA_WA_API_KEY}` },
  });
  const { data } = await response.json();
  return data.qualityRating === "GREEN";
}
```

**Python**

```python
import os
import requests


def can_launch_campaign(connection_id: str) -> bool:
    """À lancer avant chaque campagne : ne partez pas sur un numéro déjà dégradé."""
    response = requests.get(
        f"https://wa.genuka.com/api/v1/numbers/{connection_id}/health",
        headers={
            "Authorization": f"Bearer {os.environ['GENUKA_WA_API_KEY']}",
            "User-Agent": "acme-crm/1.0 (+https://example.com)",
        },
        timeout=30,
    )
    response.raise_for_status()
    return response.json()["data"]["qualityRating"] == "GREEN"
```

## Comment éviter l'erreur 131048 ?

Les recommandations de Meta pour des messages de qualité
([Meta, Send messages](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-quality)) :

* respecter la politique de messagerie WhatsApp Business ;
* n'écrire qu'aux personnes qui ont accepté de recevoir vos messages ;
* envoyer des messages personnalisés et utiles ;
* éviter les messages de bienvenue ou de présentation sans objet précis ;
* éviter d'envoyer trop de messages par jour ;
* soigner le contenu et la longueur.

Côté intégration, branchez le webhook `phone_number_quality_update` et alertez dès qu'un numéro
passe en `YELLOW` : c'est le moment d'agir, avant le `RED`.

## Quels codes sont liés ?

* [132015](https://wa.genuka.com/docs/errors/132015) : un template en particulier est mis en pause pour mauvaise
  qualité.
* [131049](https://wa.genuka.com/docs/errors/131049) : un destinataire précis a atteint sa limite de messages
  marketing ; votre numéro n'est pas en cause.
* [130429](https://wa.genuka.com/docs/errors/130429) : un simple dépassement de débit, sans lien avec la qualité.

## FAQ

### Combien de temps dure la restriction 131048 ?

Meta ne publie pas de durée. La qualité étant calculée sur les 7 derniers jours, comptez au moins
plusieurs jours de messages bien reçus pour la voir remonter.

### Puis-je contourner la restriction avec un autre numéro du même compte ?

Ce n'est pas une solution : les limites d'envoi sont calculées au niveau du portefeuille
d'entreprise et partagées par tous ses numéros
([Meta, Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)),
et la cause, des messages mal reçus, vous suivrait.

### Les messages de service sont-ils touchés ?

Meta décrit une restriction sur le nombre de messages que le numéro peut envoyer, sans distinguer
les catégories. Priorisez les réponses à vos clients et les messages transactionnels pendant la
remontée.

## Sources

* [Meta — Error codes](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes)
* [Meta — Send messages, message quality](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-quality)
* [Meta — Template quality rating](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-quality)
* [Meta — Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)
