Skip to content

    Arabic or English · ↑↓ to move · Enter to open · Esc to close

    العربية
    On this page

    Errors

    One error envelope for every v2 error, with a stable code, the HTTP status, what it means and what to do — plus the full catalog.

    Every error has the same shape. Branch on error.code (stable), not on the message (it may be reworded).

    422 Unprocessable Entity
    {
      "error": {
        "code": "SAFETY_SUPPRESSED",
        "message": "The recipient opted out of messages from this number.",
        "details": {
          "to": "2010****4567"
        },
        "docsUrl": "https://mursilat.com/developers/v2/errors#SAFETY_SUPPRESSED",
        "requestId": "req_6604bedc8c489f20e582691a"
      }
    }
    FieldMeaning
    codeMeaningStable machine code. Every code is listed below with its own link.
    messageMeaningHuman-readable English explanation (may change).
    detailsMeaningOptional extra data: the field at fault, retryAt, limits…
    docsUrlMeaningA link straight to the code in this catalog.
    requestIdMeaningAlso in the X-Request-Id header. Quote it to support.

    5xx answers never carry internals (INTERNAL_ERROR). Codes marked retryable can succeed later unchanged — honour Retry-After / details.retryAt; the others need a change on your side.

    Error catalog

    174 codes

    CodeStatusMeaningWhat to do
    ACCOUNT_KEY_REQUIREDAuthenticationStatus401fix the requestMeaningThis endpoint needs an account key, not a number key.What to doUse Authorization: Bearer wsl_live_… (number keys only send messages from their number).
    API_KEY_EXPIREDAuthenticationStatus401fix the requestMeaningThe key expired.What to doCreate a new key (or rotate before expiry).
    API_KEY_INVALIDAuthenticationStatus401fix the requestMeaningThe API key is not valid.What to doCopy the key again from Settings → API keys (it is shown only once; create a new one if lost).
    API_KEY_REQUIREDAuthenticationStatus401fix the requestMeaningNo API key was sent.What to doSend Authorization: Bearer wsl_live_…
    API_KEY_REVOKEDAuthenticationStatus401fix the requestMeaningThe key was revoked.What to doUse another key or create a new one.
    IMPERSONATION_ACTION_FORBIDDENAuthenticationStatus403fix the requestMeaningNot allowed during a support session.What to doThe account owner must do it.
    IP_NOT_ALLOWEDAuthenticationStatus403fix the requestMeaningThe key is limited to other IP addresses.What to doCall from an allowed IP or edit the key allowlist.
    KEY_NUMBER_RESTRICTEDAuthenticationStatus403fix the requestMeaningNumber-restricted keys cannot do account-wide actions.What to doUse a key with access to all numbers.
    NUMBER_NOT_ALLOWEDAuthenticationStatus403fix the requestMeaningThe key is restricted to other numbers.What to doUse a key that includes this number.
    SCOPE_REQUIREDAuthenticationStatus403fix the requestMeaningThe key lacks the scope of this endpoint.What to doAdd the scope in details.required to the key.
    USER_SUSPENDEDAuthenticationStatus403fix the requestMeaningThe account is suspended.What to doContact support.
    API_KEY_NOT_FOUNDAuthenticationStatus404fix the requestMeaningKey not found.What to doCheck the id.
    API_KEY_LIMIT_REACHEDAuthenticationStatus409fix the requestMeaningToo many active keys (20).What to doRevoke an unused key.
    API_TEMPORARY_BANAuthenticationStatus429retryableMeaningSending through the API is paused for this number after abuse-level traffic.What to doSlow down and retry after retryAfterSeconds.
    AUTH_TOO_MANY_FAILURESAuthenticationStatus429retryableMeaningToo many failed authentications from your IP.What to doFix the key and wait Retry-After seconds.
    RATE_LIMITEDAuthenticationStatus429retryableMeaningRate limit of this key reached.What to doWait Retry-After seconds; watch X-RateLimit-Remaining.
    API_KEY_EXPIRY_INVALIDRequestStatus400fix the requestMeaningexpiresInDays must be 1–730.What to doFix the value.
    API_KEY_GRACE_INVALIDRequestStatus400fix the requestMeaninggraceMinutes must be 0–1440.What to doFix the value.
    API_KEY_IP_ALLOWLIST_INVALIDRequestStatus400fix the requestMeaningInvalid IP / CIDR in the allowlist.What to doUse IPv4/IPv6 addresses or CIDR ranges.
    API_KEY_NAME_INVALIDRequestStatus400fix the requestMeaningKey name is required (1–80).What to doSend a name.
    API_KEY_NUMBERS_INVALIDRequestStatus400fix the requestMeaningnumbers must be "ALL" or your number ids.What to doChoose ALL or valid number ids.
    API_KEY_SCOPES_INVALIDRequestStatus400fix the requestMeaningUnknown or missing scopes.What to doPick scopes from the list.
    CONFIRMATION_REQUIREDRequestStatus400fix the requestMeaningA destructive action needs an explicit confirm parameter.What to doAdd the confirm parameter described in the docs.
    IDEMPOTENCY_KEY_INVALIDRequestStatus400fix the requestMeaningIdempotency-Key must be 1–191 visible ASCII characters.What to doUse e.g. order-1042-confirm.
    IDEMPOTENCY_KEY_REQUIREDRequestStatus400fix the requestMeaningIdempotency-Key header is required.What to doSend one unique value per logical request.
    PAGINATION_CURSOR_INVALIDRequestStatus400fix the requestMeaningcursor is invalid.What to doPass nextCursor unchanged.
    PAGINATION_LIMIT_INVALIDRequestStatus400fix the requestMeaninglimit is out of range.What to doUse 1–100.
    VALIDATION_FAILEDRequestStatus400fix the requestMeaningThe request is invalid.What to doSee details.errors / details.field.
    ROUTE_NOT_FOUNDRequestStatus404fix the requestMeaningNo such endpoint.What to doCheck method and path (/api/v2/…).
    IDEMPOTENCY_IN_PROGRESSRequestStatus409retryableMeaningThe first request with this key is still running.What to doRetry in a few seconds.
    IDEMPOTENCY_KEY_REUSEDRequestStatus409fix the requestMeaningThis Idempotency-Key was used with a different request.What to doUse a new key for a new request.
    UNSUPPORTED_CONTENT_TYPERequestStatus415fix the requestMeaningBody must be JSON (or multipart for uploads).What to doSet Content-Type: application/json.
    API_ACCESS_NOT_IN_PLANPlanStatus403fix the requestMeaningYour plan does not include API access.What to doUpgrade to a plan with API.
    AUTO_REPLIES_NOT_IN_PLANPlanStatus403fix the requestMeaningYour plan does not include auto-replies.What to doUpgrade.
    FEATURE_NOT_IN_PLANPlanStatus403fix the requestMeaningYour plan does not include this feature.What to doUpgrade (details.feature).
    GROUPS_NOT_IN_PLANPlanStatus403fix the requestMeaningYour plan does not include groups.What to doUpgrade.
    MESSAGES_QUOTA_EXCEEDEDPlanStatus403fix the requestMeaningNo messages left in your plan.What to doBuy a message pack or upgrade.
    NO_ACTIVE_PLANPlanStatus403fix the requestMeaningNo active plan.What to doSubscribe.
    PLAN_NUMBERS_LIMIT_REACHEDPlanStatus403fix the requestMeaningYour plan’s number limit is reached.What to doUpgrade or delete a number.
    WEBHOOKS_NOT_IN_PLANPlanStatus403fix the requestMeaningYour plan does not include webhooks.What to doUpgrade.
    NUMBER_ID_REQUIREDNumbersStatus400fix the requestMeaningnumberId is required with an account key.What to doSend numberId.
    SESSION_NOT_CONNECTEDNumbersStatus400retryableMeaningThe number is not connected.What to doReconnect (scan the QR again) and retry.
    NUMBER_NOT_FOUNDNumbersStatus404fix the requestMeaningNumber not found in this account.What to doCheck numberId (GET /v2/numbers).
    NUMBER_ALREADY_CONNECTEDNumbersStatus409fix the requestMeaningThe number is already connected.What to doNothing to pair.
    NUMBER_BANNEDNumbersStatus409fix the requestMeaningWhatsApp restricted this number.What to doContact support; do not reconnect repeatedly.
    NUMBER_NOT_CONNECTEDNumbersStatus409retryableMeaningThe number is not connected.What to doReconnect it first.
    NUMBER_NOT_PAIRINGNumbersStatus409fix the requestMeaningThe number is not waiting for pairing.What to doCall POST /reconnect first.
    PAIRING_CODE_UNAVAILABLENumbersStatus409fix the requestMeaningA pairing code is not available; use the QR.What to doFetch GET /qr.
    SESSION_OWNED_BY_OTHER_INSTANCENumbersStatus409retryableMeaningThe number is running on another server instance.What to doRetry in a minute.
    CONTACT_CHECK_TOO_MANYNumbersStatus422fix the requestMeaningUp to 50 numbers per check.What to doSplit the list; for big lists create a campaign (it checks safely).
    PAIRING_CODE_FAILEDNumbersStatus502retryableMeaningWhatsApp did not return a pairing code.What to doRetry or use the QR.
    INTERACTIVE_INVALIDMessagesStatus400fix the requestMeaningInvalid buttons / list / link button (INTERACTIVE_* codes).What to doSee details.field and the interactive limits.
    INTERACTIVE_RESERVED_TITLEMessagesStatus400fix the requestMeaningAn option title is an opt-out keyword.What to doRename it (e.g. "إلغاء الطلب").
    INVALID_RECIPIENTMessagesStatus400fix the requestMeaningInvalid phone number.What to doDigits with country code, e.g. 201001234567.
    MESSAGE_CONTACT_INVALIDMessagesStatus400fix the requestMeaningInvalid contact card.What to doSee details.reason / index.
    MESSAGE_EVENT_INVALIDMessagesStatus400fix the requestMeaningInvalid event dates.What to doSee details.reason.
    MESSAGE_FIELD_INVALIDMessagesStatus400fix the requestMeaningA field has the wrong shape.What to doSee details.field / details.reason.
    MESSAGE_FIELD_REQUIREDMessagesStatus400fix the requestMeaningA required field is missing.What to doSee details.field.
    MESSAGE_LOCATION_INVALIDMessagesStatus400fix the requestMeaningLatitude / longitude out of range.What to dolat −90..90, lng −180..180.
    MESSAGE_MEDIA_REQUIREDMessagesStatus400fix the requestMeaningA file / media is required.What to doSend media.url, media.id or a multipart file.
    MESSAGE_MENTIONS_GROUP_ONLYMessagesStatus400fix the requestMeaningMentions work in groups only.What to doRemove mentions.
    MESSAGE_POLL_INVALIDMessagesStatus400fix the requestMeaningInvalid poll.What to doSee details.reason.
    MESSAGE_REACTION_INVALIDMessagesStatus400fix the requestMeaningemoji must be one emoji (or "").What to doSend one emoji.
    MESSAGE_TEXT_TOO_LONGMessagesStatus400fix the requestMeaningText over its limit.What to doSee details.limit.
    MESSAGE_TYPE_NOT_SUPPORTEDMessagesStatus400fix the requestMeaningThis type cannot be sent from a linked device.What to dodetails.reason explains; use the suggested alternative.
    MESSAGE_TYPE_REQUIREDMessagesStatus400fix the requestMeaningtype is required.What to doSee the message types.
    MESSAGE_UNEXPECTED_FIELDMessagesStatus400fix the requestMeaningA field of another message type.What to doRemove details.field.
    MESSAGE_VIDEO_NOTE_TOO_LONGMessagesStatus400fix the requestMeaningVideo notes are ≤60 s.What to doTrim the video.
    SCHEDULE_AT_INVALIDMessagesStatus400fix the requestMeaningscheduleAt must be 1 minute – 30 days ahead (ISO 8601).What to doSend an ISO time like 2026-11-01T09:00:00+02:00.
    MESSAGE_MEDIA_NOT_FOUNDMessagesStatus404fix the requestMeaningUnknown media id (or another number’s).What to doUpload again on the same number.
    MESSAGE_NOT_FOUNDMessagesStatus404fix the requestMeaningMessage not found.What to doUse the id returned by POST /v2/messages (kept 30 days).
    MESSAGE_REPLY_TARGET_NOT_FOUNDMessagesStatus404fix the requestMeaningreplyTo is not a message of this chat.What to doUse a message id of this chat.
    MESSAGE_DELETE_WINDOW_PASSEDMessagesStatus409fix the requestMeaningDelete for everyone is possible for 48 h.What to doDelete for me instead.
    MESSAGE_EDIT_WINDOW_PASSEDMessagesStatus409fix the requestMeaningEdits are possible for 15 minutes.What to doSend a new message.
    MESSAGE_NOT_CANCELLABLEMessagesStatus409fix the requestMeaningThe scheduled message is already being sent.What to doDelete it after it is sent.
    MESSAGE_NOT_DELETABLEMessagesStatus409fix the requestMeaningThis message cannot be deleted for everyone.What to doDelete for me (forEveryone=false).
    MESSAGE_NOT_EDITABLEMessagesStatus409fix the requestMeaningThis message cannot be edited / reacted to.What to doOnly your own sent text messages.
    MESSAGE_NOT_SENT_YETMessagesStatus409fix the requestMeaningThe message is scheduled and not sent yet.What to doCancel it with DELETE instead.
    SCHEDULE_LIMIT_REACHEDMessagesStatus409fix the requestMeaningToo many scheduled messages are waiting (1 000 per account).What to doCancel some or send now.
    MESSAGE_MEDIA_EXPIREDMessagesStatus410fix the requestMeaningThe upload expired (24 h).What to doUpload again.
    MESSAGE_MEDIA_TOO_LARGEMessagesStatus413fix the requestMeaningFile over the type limit.What to doSee details.limitBytes.
    MESSAGE_MEDIA_TYPE_NOT_ALLOWEDMessagesStatus415fix the requestMeaningThe bytes do not match the type.What to doSend the right file or type.
    MESSAGE_MEDIA_FETCH_FAILEDMessagesStatus422retryableMeaningmedia.url could not be fetched safely.What to doUse a public https URL that answers within 20 s.
    MESSAGE_STICKER_INVALIDMessagesStatus422fix the requestMeaningThe image cannot become a sticker.What to doUse a smaller PNG/WebP.
    SCHEDULE_MEDIA_URL_ONLYMessagesStatus422fix the requestMeaningScheduled media must use media.url.What to doUse a public https URL; uploads are kept only until sent.
    SCHEDULING_DISABLEDMessagesStatus422fix the requestMeaningScheduled messages are not enabled (available on request).What to doSend now without scheduleAt, or ask support to enable scheduling.
    LIMITS_INVALIDNumber ShieldStatus400fix the requestMeaningInvalid limits.What to doIntegers within bounds; maxPerHour ≤ maxPerDay.
    STATS_RANGE_INVALIDNumber ShieldStatus400fix the requestMeaningInvalid date range.What to doYYYY-MM-DD, ≤ 92 days.
    ACCOUNT_NUMBER_ROTATIONNumber ShieldStatus403fix the requestMeaningA new number was linked right after a ban: messages to new contacts wait for a review.What to doContact support; an administrator reviews the account.
    ACCOUNT_RESTRICTEDNumber ShieldStatus403fix the requestMeaningThe account is restricted: only replies to people who wrote in the last 24h are allowed.What to doContact support; an administrator reviews and lifts the restriction.
    SAFETY_NUMBER_BANNEDNumber ShieldStatus403fix the requestMeaningWhatsApp restricted the number.What to doContact support.
    NUMBER_NOT_CONNECTED_YETNumber ShieldStatus409fix the requestMeaningConnect the number once first.What to doPair it.
    NUMBER_PAUSE_NOT_YOURSNumber ShieldStatus409retryableMeaningThis pause protects the number and cannot be lifted from the API.What to doIt ends on its own at details.until.
    SESSION_PHONE_UNKNOWNNumber ShieldStatus409retryableMeaningThe number’s phone is not known yet.What to doReconnect and retry.
    SAFETY_CONTENT_BLOCKEDNumber ShieldStatus422fix the requestMeaningContent blocked to protect the number (reasons[]).What to doRemove shorteners / links for young numbers / vary identical texts; reason CONTENT_PROHIBITED (+ category) = prohibited content to new contacts.
    SAFETY_SUPPRESSEDNumber ShieldStatus422fix the requestMeaningThe recipient opted out.What to doDo not message them.
    SAFETY_NUMBER_PAUSEDNumber ShieldStatus423retryableMeaningThe number is paused (by you or by the Number Shield).What to doRetry at retryAt; replies to recent chats still work.
    ACCOUNT_COD_CAP_REACHEDNumber ShieldStatus429retryableMeaningThe account's daily cap of cash-on-delivery order messages is used up.What to doRetry at retryAt (next local midnight); the cap grows with the account level.
    ACCOUNT_DAILY_CAP_REACHEDNumber ShieldStatus429retryableMeaningThe account's daily budget of messages to new contacts (all numbers together) is used up.What to doRetry at retryAt (next local midnight); the budget grows with the account level.
    SAFETY_DAILY_CAP_REACHEDNumber ShieldStatus429retryableMeaningDaily limit of the number reached (warm-up or your limit).What to doRetry at retryAt (next local midnight).
    SAFETY_HOURLY_CAP_REACHEDNumber ShieldStatus429retryableMeaningHourly limit reached.What to doRetry at retryAt.
    SAFETY_NUMBER_BUSYNumber ShieldStatus429retryableMeaningAnother send of the number is in flight.What to doRetry shortly.
    SAFETY_PACINGNumber ShieldStatus429retryableMeaningMessages to new contacts are spaced out.What to doRetry at retryAt; better: let campaigns pace for you.
    SAFETY_QUIET_HOURSNumber ShieldStatus429retryableMeaningCampaigns wait during quiet hours.What to doRetry at retryAt.
    CAMPAIGN_CONTENT_INVALIDCampaignsStatus400fix the requestMeaningInvalid campaign content.What to doSee details.field.
    CAMPAIGN_NOT_CANCELLABLECampaignsStatus400fix the requestMeaningThis campaign cannot be cancelled.What to doIt already ended.
    CAMPAIGN_RECIPIENTS_REQUIREDCampaignsStatus400fix the requestMeaningGive recipients, contactListId or audience (exactly one).What to doPick one source.
    URL_SHORTENERCampaignsStatus400fix the requestMeaningLink shorteners are blocked.What to doUse the full link.
    AUP_NOT_ACCEPTEDCampaignsStatus403fix the requestMeaningThe account owner has not accepted the acceptable use policy yet.What to doSign in to the dashboard once and accept the policy.
    CAMPAIGN_NOT_FOUNDCampaignsStatus404fix the requestMeaningCampaign not found.What to doCheck the id.
    CAMPAIGN_ACTIVECampaignsStatus409fix the requestMeaningRunning campaigns cannot be deleted.What to doCancel it first.
    CAMPAIGN_NOT_DRAFTCampaignsStatus409fix the requestMeaningOnly drafts can be started.What to doCheck the status.
    CAMPAIGN_RESUME_BLOCKEDCampaignsStatus409fix the requestMeaningThe platform paused this campaign; you cannot resume it.What to doSee details.pauseReason; time-boxed pauses resume after pausedUntil.
    CAMPAIGN_STATE_CHANGEDCampaignsStatus409retryableMeaningThe campaign changed meanwhile.What to doRead it again and retry.
    CAMPAIGN_PURGEDCampaignsStatus410fix the requestMeaningRecipients were deleted after the campaign ended (privacy).What to doOnly totals remain; export during the keep window next time.
    CAMPAIGN_NO_RECIPIENTSCampaignsStatus422fix the requestMeaningNo valid recipients.What to doCheck the phone numbers.
    CAMPAIGN_OPT_IN_REQUIREDCampaignsStatus422fix the requestMeaningConfirm that recipients agreed to receive your messages.What to doSend optInConfirmed: true (only for real opt-ins).
    CAMPAIGN_TOO_MANY_RECIPIENTSCampaignsStatus422fix the requestMeaningAt most 10 000 inline recipients.What to doUse a contact list.
    CONTENT_PROHIBITEDCampaignsStatus422fix the requestMeaningThe campaign contains prohibited content (details.category); the account receives a strike.What to doRemove the prohibited topic (loans, betting, crypto signals, adult, political, weapons/drugs, WhatsApp links, impersonation).
    LIST_QUALITY_LOWCampaignsStatus422fix the requestMeaningThe recipient list looks low quality (details.reason: NOT_ON_WHATSAPP / SEQUENTIAL_NUMBERS / NEVER_SEEN_BOUGHT_LIST).What to doSend only to people who agreed to hear from you; remove invalid / generated numbers.
    AUTO_REPLY_DELAY_INVALIDAuto-repliesStatus400fix the requestMeaningdelaySeconds needs 0 ≤ min ≤ max ≤ 120.What to doFix the values.
    AUTO_REPLY_KEYWORDS_REQUIREDAuto-repliesStatus400fix the requestMeaningKeyword rules need keywords.What to doAdd trigger.keywords.
    AUTO_REPLY_PATTERNS_REQUIREDAuto-repliesStatus400fix the requestMeaningRegular-expression rules need at least one pattern.What to doAdd trigger.patterns (1–10 patterns).
    AUTO_REPLY_REGEX_INVALIDAuto-repliesStatus400fix the requestMeaningA pattern is not a valid RE2 regular expression, uses a feature RE2 does not support (lookarounds, backreferences, atomic / possessive), contains non-ASCII digits, tashkeel / tatweel or invisible characters, exceeds the limits (200 chars, {n} ≤ 100, complexity) or matches an empty message.What to dodetails: patternIndex, reason, position (1-based) and messages {en, ar}. Fix that pattern; test it with POST /auto-replies/test.
    AUTO_REPLY_REGEX_RULE_LIMITAuto-repliesStatus400fix the requestMeaningAn account can have at most 50 regular-expression rules.What to doDelete or merge REGEX rules (details.limit, details.used).
    AUTO_REPLY_REGEX_TOO_MANY_PATTERNSAuto-repliesStatus400fix the requestMeaningA rule can have at most 10 patterns.What to doCombine alternatives with | or split the rule.
    AUTO_REPLY_SCHEDULE_REQUIREDAuto-repliesStatus400fix the requestMeaningAway rules need business hours.What to doAdd schedule.
    INVALID_SCHEDULEAuto-repliesStatus400fix the requestMeaningInvalid schedule or time zone.What to doUse HH:mm and an IANA time zone.
    AUTO_REPLY_ACCOUNT_WIDE_READ_ONLYAuto-repliesStatus403fix the requestMeaningRules for all numbers are read-only for keys restricted to some numbers.What to doUse a key with access to all numbers.
    AUTO_REPLY_NOT_FOUNDAuto-repliesStatus404fix the requestMeaningRule not found on this number.What to doCheck ids.
    AUTO_REPLY_REGEX_ENGINE_UNAVAILABLEAuto-repliesStatus503retryableMeaningRegular expressions are temporarily unavailable.What to doRetry later; literal keyword rules keep working.
    OTP_INPUT_INVALIDOTPStatus400fix the requestMeaningInvalid OTP request.What to doSee details.field.
    OTP_NOT_FOUNDOTPStatus404fix the requestMeaningOTP not found.What to doUse the otpId from POST /v2/otp (kept 7 days).
    OTP_ACCOUNT_RATE_LIMITEDOTPStatus429retryableMeaningToo many different OTP recipients for your account this hour.What to doWait; OTPs are for people who just asked for one.
    OTP_RECIPIENT_RATE_LIMITEDOTPStatus429retryableMeaningToo many codes to this recipient (5 per hour).What to doLet the user wait; never loop sends.
    OTP_VERIFY_RATE_LIMITEDOTPStatus429retryableMeaningToo many verification calls from this key.What to doSlow down.
    GROUP_ID_INVALIDGroupsStatus400fix the requestMeaningInvalid group id.What to doUse 1203…@g.us.
    GROUP_NOT_FOUNDGroupsStatus404fix the requestMeaningThe number is not in that group.What to doList groups first.
    GROUPS_UNAVAILABLEGroupsStatus502retryableMeaningWhatsApp did not return the groups.What to doRetry shortly.
    URL_PORT_NOT_ALLOWEDWebhooksStatus400fix the requestMeaningOnly ports 443 / 80.What to doUse the default https port.
    URL_PRIVATE_ADDRESSWebhooksStatus400fix the requestMeaningURL points to a private / internal address.What to doUse a public https URL.
    WEBHOOK_EVENTS_INVALIDWebhooksStatus400fix the requestMeaningUnknown event type.What to doSee GET /v2/webhooks/events.
    WEBHOOK_URL_NOT_SETWebhooksStatus400fix the requestMeaningNo webhook URL set.What to doPUT the webhook first.
    WEBHOOK_VERSION_INVALIDWebhooksStatus400fix the requestMeaningversion must be 2.What to doUse 2.
    WEBHOOK_DELIVERY_NOT_FOUNDWebhooksStatus404fix the requestMeaningDelivery not found.What to doKept 7 days.
    NO_NUMBERWebhooksStatus409fix the requestMeaningAdd a number first.What to doEvents always belong to a number.
    WEBHOOK_DISABLEDWebhooksStatus409fix the requestMeaningThe webhook is disabled (receiver answered 410).What to doSave the URL again.
    DELIVERY_PAYLOAD_EXPIREDWebhooksStatus410fix the requestMeaningRedelivery is possible only during the retry window (~1 h).What to doRebuild the state from your side (e.g. GET /v2/messages/{id}).
    WIDGET_DOMAIN_INVALIDWebsite button & linksStatus400fix the requestMeaningAn allowed domain is not a valid website domain.What to doUse host names like example.com or *.example.com (no paths).
    WIDGET_DOMAINS_REQUIREDWebsite button & linksStatus400fix the requestMeaningAt least one allowed website domain is required.What to doSend allowedDomains, e.g. ["example.com"].
    WIDGET_DOMAINS_TOO_MANYWebsite button & linksStatus400fix the requestMeaningToo many allowed domains (max 20).What to doUse a wildcard like *.example.com.
    WIDGET_NAME_INVALIDWebsite button & linksStatus400fix the requestMeaningName is required (1–80 characters).What to doSend a short name.
    WIDGET_NUMBER_INVALIDWebsite button & linksStatus400fix the requestMeaningnumberId (or an agent numberId) is not one of your numbers.What to doUse an id from GET /v2/numbers.
    WIDGET_NUMBER_NO_PHONEWebsite button & linksStatus400fix the requestMeaningThe number was never linked: its phone is unknown.What to doLink the number first.
    WIDGET_SETTINGS_INVALIDWebsite button & linksStatus400fix the requestMeaningA widget setting is invalid (details.field, details.reason).What to doFix the named field.
    WIDGET_BRANDING_LOCKEDWebsite button & linksStatus403fix the requestMeaningHiding "Powered by Mursilat" needs the Growth plan or higher.What to doUpgrade, or keep branding.show = true.
    WIDGET_LIMIT_REACHEDWebsite button & linksStatus403fix the requestMeaningYour plan allows no more website buttons.What to doDelete one or upgrade (growth: 5, business: unlimited).
    WIDGET_ORIGIN_NOT_ALLOWEDWebsite button & linksStatus403fix the requestMeaningPublic click from a site that is not in the allowed domains.What to doAdd the domain to allowedDomains.
    WIDGET_NOT_FOUNDWebsite button & linksStatus404fix the requestMeaningWebsite button not found.What to doCheck the widgetId (GET /v2/widgets).
    WIDGET_CLICK_RATE_LIMITEDWebsite button & linksStatus429retryableMeaningLegacy: no longer returned. Over a burst limit the click answers 200 with ref null (the visitor still reaches WhatsApp).What to doNothing to do.
    WIDGET_RATE_LIMITEDWebsite button & linksStatus429retryableMeaningToo many website-button requests from one network.What to doRetry after Retry-After seconds.
    INTERNAL_ERRORServerStatus500retryableMeaningUnexpected error.What to doRetry; contact support with the requestId.
    API_V2_NOT_CONFIGUREDServerStatus503retryableMeaningAPI keys are not available yet on this server.What to doRetry later.
    ENCRYPTION_NOT_CONFIGUREDServerStatus503retryableMeaningSecrets cannot be stored safely right now.What to doRetry later.
    SCHEDULING_UNAVAILABLEServerStatus503retryableMeaningScheduling is temporarily unavailable.What to doSend now or retry later.