# WhatsApp error 131048: sends restricted — cause and fix

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

> WhatsApp error 131048: Meta restricts the number's sends after blocks or spam reports. How to read the quality rating and bring it back up.

WhatsApp error 131048 means Meta is limiting how many messages your number can send, because too
many earlier messages were blocked or reported as spam by their recipients. It is a quality
problem, not a speed problem. Pause your campaigns, check the number's quality rating, then resume
with recipients who opted in.

## What does error 131048 mean?

> "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, Cloud API error codes](https://developers.facebook.com/documentation/business-messaging/whatsapp/support/error-codes#throttling-errors)

Meta points to three things: the quality status in WhatsApp Manager, template messaging limits,
and template quality. What they share is **message quality** as Meta measures it
([Meta, Send messages](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-quality)):

* it reflects how your messages were received **over the past seven days**, weighted by recency;
* it combines user feedback signals: blocks, reports, mutes, archives, and the reasons people give
  when they block you;
* on a high-traffic number, it can change within minutes.

The number's rating, status and messaging limit are shown in WhatsApp Manager under **Account
tools > Phone numbers**.

## When does error 131048 happen?

* **After a campaign sent to a cold list**: contacts imported without consent, old customers who
  were not expecting you.
* **When one template keeps collecting negative feedback**: its own rating drops, then the rating
  of the number sending it.
* **When messages follow each other too often** to the same people. Meta lists "sending too many
  messages per day" among the practices to avoid.

### Where do you see it in Genuka WA?

| Channel                                                            | What you get                                                                                                                                                           |
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `POST /api/v1/messages` response                                   | `400`, `"error": "send_retryable"`, `meta.code: 131048`                                                                                                                |
| `message_status` webhook, when Meta reports the failure afterwards | `data.status: "failed"`, `data.errors[0].code: 131048`                                                                                                                 |
| Campaign                                                           | When Meta refuses on the call, each affected recipient is attempted up to three times, then turns `failed`. Reported by webhook, it turns `failed` with no new attempt |
| `GET /api/v1/numbers/{id}/health`                                  | `qualityRating` (`GREEN`, `YELLOW`, `RED`) read live from Meta, plus `alerts` when it changed                                                                          |
| `phone_number_quality_update` webhook                              | The quality or tier change, pushed by Meta                                                                                                                             |
| `GET /api/v1/templates?sync=true`                                  | `qualityScore.score` (`GREEN`, `YELLOW`, `RED`, `UNKNOWN`) for each template created through Genuka WA, to find the one causing trouble                                |

Genuka WA classifies 131048 as `retryable`: the restriction eventually lifts, and a later attempt
can go through. Our advice: here `meta.retryable: true` means "later", not "now". A campaign's
three automatic attempts follow each other within two seconds and usually fail too: launch nothing
more on this number until its rating has recovered.

## How do I fix error 131048?

1. **Pause the number's marketing sends.** Launch no new campaign until the rating recovers: every
   badly received message weighs on the next seven days.
2. **Read the number's rating** with `GET /api/v1/numbers/{id}/health`, or in WhatsApp Manager.
3. **Find the template at fault**: `GET /api/v1/templates?sync=true` returns `qualityScore.score` for
   each template created through Genuka WA; for those created in WhatsApp Manager, read the rating
   there. Stop the ones at `RED` or `YELLOW`, and rewrite them before using them again.
4. **Clean your audience**: keep the contacts who opted in and who read, drop the others, and honor
   every opt-out.
5. **Resume gradually**, with small sends to your most engaged customers, checking the rating at
   each step.

**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
// Run before every campaign: do not start on a number that is already degraded.
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:
    """Run before every campaign: do not start on a number that is already degraded."""
    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"
```

## How do I prevent error 131048?

Meta's guidelines for high-quality messages
([Meta, Send messages](https://developers.facebook.com/documentation/business-messaging/whatsapp/messages/send-messages#message-quality)):

* follow the WhatsApp Business Messaging Policy;
* only message people who opted in to receive messages from you;
* make messages personalized and useful;
* avoid open-ended welcome or introductory messages;
* avoid sending too many messages per day;
* optimize content and length.

On the integration side, wire up the `phone_number_quality_update` webhook and alert as soon as a
number turns `YELLOW`: that is the moment to act, before `RED`.

## Related error codes

* [132015](https://wa.genuka.com/en/docs/errors/132015): one specific template is paused for low quality.
* [131049](https://wa.genuka.com/en/docs/errors/131049): one recipient reached their marketing message limit; your
  number is not the issue.
* [130429](https://wa.genuka.com/en/docs/errors/130429): plain throughput overflow, unrelated to quality.

## FAQ

### How long does a 131048 restriction last?

Meta publishes no duration. Since quality is computed over the past seven days, expect at least
several days of well-received messages before it recovers.

### Can I work around it with another number on the same account?

It is not a fix: messaging limits are calculated at business portfolio level and shared by all of
its numbers
([Meta, Messaging limits](https://developers.facebook.com/documentation/business-messaging/whatsapp/messaging-limits)),
and the cause, badly received messages, would follow you.

### Are service messages affected?

Meta describes a restriction on how many messages the number can send, without distinguishing
categories. Prioritize replies to your customers and transactional messages while the rating
recovers.

## 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)
