Skip to main content

Status details

A status says what happened to a message; a status detail says why. It is a two-level code category.reason returned next to the status:

Rules:

  • The detail is present only when the reason is known. Otherwise there is no such field, and the response is exactly as before.
  • The status itself does not change: a message with undelivered.no_viber_user keeps its undelivered status.
  • A detail belongs to the channel the message is on. If an undelivered Viber message is resent by SMS, the Viber reason no longer applies and the detail disappears.
  • New codes are added over time, existing ones are never renamed. Treat an unknown code as "no detail" and keep processing the status.

Categories: undelivered — the message did not reach the recipient; rejected — it was refused before delivery because of the sender, the template or the content.

CodeDescription
undelivered.no_viber_userThe number has no Viber
undelivered.no_whatsapp_userThe number cannot receive WhatsApp: no account or an outdated app
undelivered.blocked_by_userThe recipient has blocked the sender
undelivered.opted_outThe recipient has opted out of marketing messages
undelivered.marketing_limitThe messenger limited marketing messages to this recipient
undelivered.no_suitable_deviceNo device of the recipient can receive the message
undelivered.no_routeNo delivery route to the number
undelivered.provider_errorFailure on the side of the delivery channel
rejected.spamBlocked as spam
rejected.blacklisted_wordThe text contains a forbidden word
rejected.sender_not_permittedThe sender is not approved or not allowed to send
rejected.message_type_blockedThis message type is not allowed for the sender
rejected.outside_service_windowWhatsApp: 24 hours have passed since the recipient last wrote — send a template
rejected.template_not_foundTemplate not found
rejected.template_unavailableThe template is paused or disabled
rejected.template_parametersThe parameters do not match the template
rejected.invalid_textThe text is empty or too long
rejected.invalid_mediaInvalid attachment: image, video, file or its caption
rejected.invalid_buttonInvalid button or button link
rejected.invalid_carouselInvalid carousel
rejected.invalid_parametersOther invalid message parameters

Example — JSON status of a Viber message that was not delivered because the number has no Viber:

{
"msg_id": 123456789,
"type": "viber",
"status": "REJECTED",
"success": false,
"updated": "2026-10-20T12:34:00+03:00",
"status_detail": "undelivered.no_viber_user"
}