Send a broadcast's failed recipients again
POST/v1/agents/:agentId/broadcasts/:broadcastId/retry
x-scope: "broadcasts:write"
x-rate-limit-per-minute: 10
Sends the template again to the recipients whose message failed, as the dashboard's Retry
does. The answer is 202 with the broadcast, sending again. Only once the broadcast has
finished: one still sending is 409 broadcast_still_sending (retry when it has
finished), and one with no failed recipient is 422 invalid_request. A broadcast cut off by
a restart can stay sending; contact support then. The template is checked again, as on
sendBroadcast: one paused, changed or deleted since the send is 422 template_not_approved,
template_not_broadcastable or template_not_found. Retrying a paused
broadcast also sends to its recipients still pending, the ones Mojeeb hadn't reached; a
paused broadcast with no failed recipient can't be retried, so contact support to resume it.
It reads the template from Meta, so it shares the WhatsApp template endpoints' budget of 10
requests a minute per key.
Request
Responses
- 202
- 401
- 403
- 404
- 409
- 422
- 429
- 500
- 503
The broadcast, sending again.
Response Headers
Correlation id for this request — paste into support tickets.
Authentication failed. Single code (invalid_api_key) covers every
sub-case: missing header, wrong scheme, malformed, unknown, revoked or
expired key. The message field disambiguates for humans debugging.
One exception: when the key could not be checked because of a server-side
fault, the status is still 401 but type is internal_error and code
is internal_server_error; retry with backoff.
Response Headers
Correlation id for this request — paste into support tickets.
Authenticated, but not allowed. insufficient_scope (the key lacks
broadcasts:read or broadcasts:write), agent_not_authorized (the key
is limited to other agents) or feature_not_available (broadcasts aren't
on your company's plan).
Response Headers
Correlation id for this request — paste into support tickets.
not_found when the broadcast isn't the agent's, or (sending) the
connection_id isn't one of the agent's WhatsApp numbers;
agent_not_found when the agent is not one of your company's agents.
Response Headers
Correlation id for this request — paste into support tickets.
Nothing was sent. idempotency_key_in_progress: a request with this
Idempotency-Key is still running (wait Retry-After). connection_inactive
or connection_needs_reconnection: the WhatsApp number must be reconnected in
the dashboard before its templates can be checked. broadcast_still_sending
(retryBroadcast): the broadcast hasn't finished; retry when it has.
Response Headers
Correlation id for this request — paste into support tickets.
Seconds to wait before retrying.
invalid_request_body when the body isn't valid JSON, a field has the wrong type or format, or a field breaks a limit in its schema; param names the field. A query parameter that doesn't parse is invalid_request_body too.
invalid_request for a rule beyond the format, such as a note that is only spaces or a
cursor this list didn't give out.
Response Headers
Correlation id for this request — paste into support tickets.
Per-key rate limit hit. Default is 60/min/key; an endpoint with an
x-rate-limit-per-minute of its own counts in a budget of its own
(today the WhatsApp template endpoints and sendBroadcast, which share one
that allows 10/min/key, and sendConversationMessage, which allows 20/min/key), and its 429
reports that limit in X-RateLimit-Limit. Retry-After tells you when to retry;
X-RateLimit-Reset is the Unix timestamp of the next window.
Per-success-response
X-RateLimit-*headers are a known gap; on 2xx responses these headers are NOT currently emitted. Customers should rely on 429 +Retry-Afterfor backoff signals.
Response Headers
Correlation id for this request — paste into support tickets.
Seconds to wait before retrying.
The per-minute request limit of the endpoint called. Every key has the same limits today.
Remaining requests in the current window. 0 on rejection.
Unix timestamp at which the current window resets.
Unexpected server-side failure. Retry with exponential backoff. If
the failure persists, send us the correlation_id.
Response Headers
Correlation id for this request — paste into support tickets.
A temporary fault; nothing was changed, so retry with backoff. One exception: a template
create, edit or delete that Meta didn't answer in time may still have been made, so read the
template before trying again.
meta_unavailable: Meta didn't return what was asked (an outage, a
timeout or Meta's own rate limit). access_unavailable: Mojeeb
couldn't check this key's access.
Response Headers
Correlation id for this request — paste into support tickets.