API Reference

Reference

Error reference

Interpret HTTP status, error.code and error.numeric_code together for the current operation. A numeric code can refine a cause while preserving the original HTTP status and code. Use error.message for diagnosis, not program branches, and keep request_id.

Error response format

Read HTTP status, error.code and error.numeric_code together in the context of the current operation. Numeric codes are strings. Keep request_id for diagnosis; it is not an idempotency key or a task identifier.

request_id
Required string generated by the server for this HTTP request; also returned in X-Request-Id. Share it when reporting a problem.
client_request_id
Optional string echoed only when the request carries a valid X-Request-Id header. It helps client reconciliation and does not replace the server request_id.
error.code
Stable snake_case machine-readable code retained for compatibility. Interpret it with the operation and HTTP status.
error.numeric_code
Five-digit string that can refine the cause without changing the legacy code or HTTP status. It is not a globally unique operation identifier.
error.message
Human-readable English diagnostic text. It can vary with the provider cause and may change; do not parse it or use it for program branches.
Illustrative error JSON
{
  "request_id": "req_example",
  "error": {
    "code": "invalid_request",
    "numeric_code": "10000",
    "message": "Invalid request parameters"
  },
  "client_request_id": "<CLIENT_REQUEST_ID>"
}

400 Bad Request

  • auth_mode_phone_required20019

    Provide provider_data.phone when creating the account for this authorization mode.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "auth_mode_phone_required",
        "numeric_code": "20019",
        "message": "Phone number is required for this auth mode"
      }
    }
    
  • create_api_key_failed11101

    The operation was rejected. Check the request and keep request_id for diagnosis.

    What to do: List or query existing resources to check whether creation already took effect before creating another. Correct the underlying cause and keep request_id; do not create duplicates automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_api_key_failed",
        "numeric_code": "11101",
        "message": "Failed to create API key"
      }
    }
    
  • invalid_conversation_type37000

    type must be user, group or channel.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_conversation_type",
        "numeric_code": "37000",
        "message": "Field 'type' must be one of: user, group, channel"
      }
    }
    
  • invalid_provider30000

    Check the channel identifier in the URL.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_provider",
        "numeric_code": "30000",
        "message": "Invalid provider parameter"
      }
    }
    
  • invalid_reply_token36006

    The reply token cannot be read. Copy data.message.reply_token from the inbound event unchanged.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_reply_token",
        "numeric_code": "36006",
        "message": "Invalid or unreadable reply_token"
      }
    }
    
  • invalid_request10000

    Check the JSON body and required fields.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_request",
        "numeric_code": "10000",
        "message": "Invalid request parameters"
      }
    }
    
  • invalid_target_workspace11003

    The workspace override target is empty or malformed. Remove the override header and use the API key belonging to the intended workspace.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_target_workspace",
        "numeric_code": "11003",
        "message": "Invalid target workspace"
      }
    }
    
  • provider_invalid_request30001

    Check the channel-specific fields and formats.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "provider_invalid_request",
        "numeric_code": "30001",
        "message": "Provider rejected the request"
      }
    }
    
  • rotate_api_key_failed11103

    The operation was rejected. Check the request and keep request_id for diagnosis.

    What to do: Check the target key under the current workspace before changing or rotating it. A missing target is not repaired by retrying. After an unknown rotation result, confirm which credentials remain usable without exposing key material.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "rotate_api_key_failed",
        "numeric_code": "11103",
        "message": "Failed to rotate API key"
      }
    }
    
  • unsupported_action30005

    This account action is not recognized; use a documented action.

    What to do: Use a channel and action listed as supported. Repeating the same request does not add capabilities or grant beta access.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unsupported_action",
        "numeric_code": "30005",
        "message": "Action not supported"
      }
    }
    
  • unsupported_conversation_type37001

    The channel does not support this operation; choose a supported operation.

    What to do: Use a channel and action listed as supported. Repeating the same request does not add capabilities or grant beta access.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unsupported_conversation_type",
        "numeric_code": "37001",
        "message": "Operation not supported for this conversation type"
      }
    }
    
  • unsupported_message_type36000

    Choose a message.type supported by this channel.

    What to do: Use a channel and action listed as supported. Repeating the same request does not add capabilities or grant beta access.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unsupported_message_type",
        "numeric_code": "36000",
        "message": "Message type not supported"
      }
    }
    
  • unsupported_provider_auth_mode20018

    Choose an auth_mode supported by this channel.

    What to do: Use a channel and action listed as supported. Repeating the same request does not add capabilities or grant beta access.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unsupported_provider_auth_mode",
        "numeric_code": "20018",
        "message": "Auth mode not supported by this provider"
      }
    }
    
  • update_api_key_failed11102

    The operation was rejected. Check the request and keep request_id for diagnosis.

    What to do: Check the target key under the current workspace before changing or rotating it. A missing target is not repaired by retrying. After an unknown rotation result, confirm which credentials remain usable without exposing key material.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_api_key_failed",
        "numeric_code": "11102",
        "message": "Failed to update API key"
      }
    }
    
  • update_workspace_failed41001

    The operation was rejected. Check the request and keep request_id for diagnosis.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_workspace_failed",
        "numeric_code": "41001",
        "message": "Failed to update workspace"
      }
    }
    
  • wallet_invalid_request20021

    Check the wallet account request and any optional Idempotency-Key header.

    What to do: Correct the parameters for this operation and channel before requesting again. Repeating an unchanged invalid request will not resolve the error.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_invalid_request",
        "numeric_code": "20021",
        "message": "Invalid wallet account request"
      }
    }
    

401 Unauthorized

  • invalid_api_key11001

    Check whether the API key is correct and enabled.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "invalid_api_key",
        "numeric_code": "11001",
        "message": "Invalid API key"
      }
    }
    
  • missing_api_key11000

    Add the X-Api-Key header.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "missing_api_key",
        "numeric_code": "11000",
        "message": "Missing X-Api-Key header"
      }
    }
    

403 Forbidden

  • beta_feature_not_enabled41002

    The workspace needs private-beta access for calling APIs and explicit call-event subscriptions.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "beta_feature_not_enabled",
        "numeric_code": "41002",
        "message": "Beta feature not enabled"
      }
    }
    
  • cors_forbidden11009

    The CORS origin, method or headers are not allowed. Check the calling environment.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "cors_forbidden",
        "numeric_code": "11009",
        "message": "CORS preflight request is not allowed"
      }
    }
    
  • post_inaccessible39005

    Posts & Comments

    Check the account and the target identifiers actually required by this endpoint. post_not_found confirms that the post is missing. comment_not_found means the target top-level comment was not found after verification, not that all replies were searched. post_inaccessible means inaccessible; it does not prove absence or identify the cause. Keep the error and investigate before choosing the next action.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "post_inaccessible",
        "numeric_code": "39005",
        "message": "Post is not accessible"
      }
    }
    
  • workspace_override_forbidden11002

    The request attempts a workspace override that this API key is not allowed to use. Remove the override header and use the API key belonging to the intended workspace.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "workspace_override_forbidden",
        "numeric_code": "11002",
        "message": "Workspace override is not allowed"
      }
    }
    

404 Not Found

  • account_not_found20020

    Check account_id and use an X-Api-Key for the workspace that owns the account. An account not found in this workspace cannot be accessed with this key.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_not_found",
        "numeric_code": "20020",
        "message": "Account not found"
      }
    }
    
  • account_operation_not_found20029

    The operation is absent or outside this workspace. Check the original operation_id and API key scope.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_operation_not_found",
        "numeric_code": "20029",
        "message": "Account operation not found"
      }
    }
    
  • call_not_found38003

    Calls

    The call does not exist under this account and workspace.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "call_not_found",
        "numeric_code": "38003",
        "message": "Call not found"
      }
    }
    
  • comment_not_found39001

    Posts & Comments

    Check the account and the target identifiers actually required by this endpoint. post_not_found confirms that the post is missing. comment_not_found means the target top-level comment was not found after verification, not that all replies were searched. post_inaccessible means inaccessible; it does not prove absence or identify the cause. Keep the error and investigate before choosing the next action.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "comment_not_found",
        "numeric_code": "39001",
        "message": "Comment not found"
      }
    }
    
  • contact_not_found35000

    The contact was not found under this account; check the identifier.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "contact_not_found",
        "numeric_code": "35000",
        "message": "Contact not found"
      }
    }
    
  • conversation_not_found37002

    The channel could not find this conversation; check the identifier and account.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "conversation_not_found",
        "numeric_code": "37002",
        "message": "Conversation not found"
      }
    }
    
  • group_not_found34004

    The group was not found under this account; check the group ID.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "group_not_found",
        "numeric_code": "34004",
        "message": "Group not found"
      }
    }
    
  • not_found10001

    Check the API path and method.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "not_found",
        "numeric_code": "10001",
        "message": "Endpoint not found"
      }
    }
    
  • post_not_found39000

    Posts & Comments

    Check the account and the target identifiers actually required by this endpoint. post_not_found confirms that the post is missing. comment_not_found means the target top-level comment was not found after verification, not that all replies were searched. post_inaccessible means inaccessible; it does not prove absence or identify the cause. Keep the error and investigate before choosing the next action.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "post_not_found",
        "numeric_code": "39000",
        "message": "Post not found"
      }
    }
    
  • target_workspace_not_found11004

    The overridden workspace was not found or is unavailable. Verify workspace ownership, remove the override header and use the intended workspace’s API key; repeated requests do not grant access.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "target_workspace_not_found",
        "numeric_code": "11004",
        "message": "Target workspace not found"
      }
    }
    

409 Conflict

  • account_allocation_busy20011

    Account allocation is busy; retry after a short delay.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_allocation_busy",
        "numeric_code": "20011",
        "message": "Allocation is busy in the current region; please retry later"
      }
    }
    
  • account_already_authorized20016

    The account has already completed authorization and this action refuses duplicate authorization. Refresh the authorization state and reuse the completed result; do not repeatedly authorize or cancel in a loop.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_already_authorized",
        "numeric_code": "20016",
        "message": "Account is already authorized; re-authentication is not required"
      }
    }
    
  • account_binding_not_found30006

    The account has no active channel connection binding; check its status.

    What to do: Query authorization and runtime status, then choose refresh, start or reconnect only when appropriate for the intended state and channel. A connection problem alone does not prove logout. Confirm running before dependent business operations.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_binding_not_found",
        "numeric_code": "30006",
        "message": "Account is not bound to an available server"
      }
    }
    
  • account_webhook_already_exists40008

    Webhook Endpoints

    List the account’s independent endpoints using account_id and update the existing active endpoint. To switch, deactivate the old active endpoint before activating another. Do not automatically retry creation or reactivation.

    What to do: Read the endpoint configuration and account scope before resubmitting. PATCH replaces settings; retain the intended subscriptions, signing configuration and retry policy. For an active-endpoint conflict, update the existing endpoint or deactivate it before enabling another.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "account_webhook_already_exists",
        "numeric_code": "40008",
        "message": "Account already has an active webhook endpoint"
      }
    }
    
  • billing_quote_changed20027

    The workspace price or pricing basis changed. Confirm the original result, then request a new quote.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "billing_quote_changed",
        "numeric_code": "20027",
        "message": "Pricing changed; request a new quote"
      }
    }
    
  • billing_quote_expired20026

    The quote expired. Confirm any earlier creation result before requesting another quote.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "billing_quote_expired",
        "numeric_code": "20026",
        "message": "Billing quote expired"
      }
    }
    
  • billing_quote_invalid20025

    The quote does not match this workspace or request. Confirm the original result, then obtain a matching quote.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "billing_quote_invalid",
        "numeric_code": "20025",
        "message": "Billing quote does not match this request"
      }
    }
    
  • call_already_active38000

    Calls

    The account already has a managed active call. Check the known call and the intended action; this error alone does not instruct you to end a call or repeatedly query the same failing operation.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "call_already_active",
        "numeric_code": "38000",
        "message": "Account already has an active call"
      }
    }
    
  • duplicate_provider_account20015

    This channel identity is already connected to another account in this workspace.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "duplicate_provider_account",
        "numeric_code": "20015",
        "message": "A provider account with the same identity already exists in this workspace"
      }
    }
    
  • no_allocatable_server20013

    No capacity is available in this region; query regions for an allocatable option.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "no_allocatable_server",
        "numeric_code": "20013",
        "message": "No allocatable server in the current region"
      }
    }
    
  • provider_account_mismatch20017

    The channel identity in the request does not match the account binding.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "provider_account_mismatch",
        "numeric_code": "20017",
        "message": "Authenticated provider account does not match the bound account; re-scan with the original account"
      }
    }
    
  • provider_not_ready30009

    The connection is not ready. Check authorization and runtime_status before retrying.

    What to do: Query authorization and runtime status, then choose refresh, start or reconnect only when appropriate for the intended state and channel. A connection problem alone does not prove logout. Confirm running before dependent business operations.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "provider_not_ready",
        "numeric_code": "30009",
        "message": "Provider client is not ready"
      }
    }
    
  • wallet_account_creation_in_progress20030

    Another wallet account is being created in this workspace. Wait for it to complete before trying again.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_account_creation_in_progress",
        "numeric_code": "20030",
        "message": "Account creation is in progress; please wait"
      }
    }
    
  • wallet_idempotency_conflict20024

    This idempotency key belongs to different business parameters. Reconcile the original operation before starting another.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_idempotency_conflict",
        "numeric_code": "20024",
        "message": "Idempotency key was used for a different request"
      }
    }
    
  • wallet_insufficient_funds20023

    The wallet cannot cover this account purchase. The owner can top up, then confirm the original request.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_insufficient_funds",
        "numeric_code": "20023",
        "message": "Insufficient wallet balance"
      }
    }
    
  • wallet_workspace_disabled20022

    New wallet purchases are disabled; do not assume existing account operations are cancelled.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_workspace_disabled",
        "numeric_code": "20022",
        "message": "New wallet purchases are disabled"
      }
    }
    
  • workspace_account_quota_exceeded20014

    The workspace messaging account limit has been reached; check usage and quota.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "workspace_account_quota_exceeded",
        "numeric_code": "20014",
        "message": "Workspace account quota exceeded"
      }
    }
    

422 Unprocessable Entity

  • contact_not_found35000

    GET /contacts/info reported Conversation not found. Check the target identifier and the account used for the lookup.

    What to do: Check the target identifier, resource ownership and current workspace. Do not treat a confirmed missing or inaccessible target as a temporary service failure to retry automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "contact_not_found",
        "numeric_code": "35000",
        "message": "Conversation not found"
      }
    }
    

500 Internal Server Error

  • block_contact_failed35005

    Block contact: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "block_contact_failed",
        "numeric_code": "35005",
        "message": "Failed to block contact"
      }
    }
    
  • call_control_failed38004

    Calls

    The call could not be queried or ended. Check the current operation and call state.

    What to do: Query the managed call and its call_id/state before creating or ending another call. Preparing is not dialing or answered; ended and failed are terminal states. A failed state alone is not a reason to repeat hangup.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "call_control_failed",
        "numeric_code": "38004",
        "message": "Failed to control call"
      }
    }
    
  • create_account_failed20002

    Create account: resource creation failed or could not be confirmed.

    What to do: List or query existing resources to check whether creation already took effect before creating another. Correct the underlying cause and keep request_id; do not create duplicates automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_account_failed",
        "numeric_code": "20002",
        "message": "Failed to create account"
      }
    }
    
  • create_call_failed38002

    Calls

    Create a call: resource creation failed or could not be confirmed.

    What to do: List or query existing resources to check whether creation already took effect before creating another. Correct the underlying cause and keep request_id; do not create duplicates automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_call_failed",
        "numeric_code": "38002",
        "message": "Failed to create call"
      }
    }
    
  • create_contact_failed35003

    Add contact: resource creation failed or could not be confirmed.

    What to do: List or query existing resources to check whether creation already took effect before creating another. Correct the underlying cause and keep request_id; do not create duplicates automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_contact_failed",
        "numeric_code": "35003",
        "message": "Failed to create contact"
      }
    }
    
  • create_group_failed34002

    Create a group: resource creation failed or could not be confirmed.

    What to do: List or query existing resources to check whether creation already took effect before creating another. Correct the underlying cause and keep request_id; do not create duplicates automatically.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_group_failed",
        "numeric_code": "34002",
        "message": "Failed to create group"
      }
    }
    
  • create_webhook_endpoint_failed40001

    Create webhook endpoint: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the endpoint configuration and account scope before resubmitting. PATCH replaces settings; retain the intended subscriptions, signing configuration and retry policy. For an active-endpoint conflict, update the existing endpoint or deactivate it before enabling another.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "create_webhook_endpoint_failed",
        "numeric_code": "40001",
        "message": "Failed to create webhook endpoint"
      }
    }
    
  • deactivate_webhook_endpoint_failed40004

    Deactivate webhook endpoint: stopping or deactivation could not be confirmed; preserving the intended stopped state matters.

    What to do: Query the current state to confirm whether stopping or deactivation took effect. Do not start or reconnect a resource that you intended to stop.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "deactivate_webhook_endpoint_failed",
        "numeric_code": "40004",
        "message": "Failed to deactivate webhook endpoint"
      }
    }
    
  • delete_account_failed20004

    Delete account: the deletion result could not be confirmed.

    What to do: Query the resource to determine whether deletion already succeeded, then decide whether another delete is needed. Keep request_id and follow this endpoint’s documented success response.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "delete_account_failed",
        "numeric_code": "20004",
        "message": "Failed to delete account"
      }
    }
    
  • delete_label_failed37014

    Delete label: the deletion result could not be confirmed.

    What to do: Query the resource to determine whether deletion already succeeded, then decide whether another delete is needed. Keep request_id and follow this endpoint’s documented success response.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "delete_label_failed",
        "numeric_code": "37014",
        "message": "Failed to delete label"
      }
    }
    
  • delete_webhook_endpoint_failed40005

    Delete webhook endpoint: the deletion result could not be confirmed.

    What to do: Query the resource to determine whether deletion already succeeded, then decide whether another delete is needed. Keep request_id and follow this endpoint’s documented success response.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "delete_webhook_endpoint_failed",
        "numeric_code": "40005",
        "message": "Failed to delete webhook endpoint"
      }
    }
    
  • edit_message_failed36005

    Edit message: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "edit_message_failed",
        "numeric_code": "36005",
        "message": "Failed to edit message"
      }
    }
    
  • get_account_failed20001

    Get account: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_account_failed",
        "numeric_code": "20001",
        "message": "Failed to get account"
      }
    }
    
  • get_auth_state_failed20006

    Get authentication state: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_auth_state_failed",
        "numeric_code": "20006",
        "message": "Failed to get account auth state"
      }
    }
    
  • get_contact_failed35002

    Get contact: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_contact_failed",
        "numeric_code": "35002",
        "message": "Failed to get contact"
      }
    }
    
  • get_contact_membership_failed35004

    Check contact membership: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_contact_membership_failed",
        "numeric_code": "35004",
        "message": "Failed to get contact membership"
      }
    }
    
  • get_conversation_failed37004

    Get conversation: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_conversation_failed",
        "numeric_code": "37004",
        "message": "Failed to get conversation"
      }
    }
    
  • get_group_failed34001

    Get group details: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_group_failed",
        "numeric_code": "34001",
        "message": "Failed to get group"
      }
    }
    
  • get_group_invite_code_failed34010

    Get group invite link: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_group_invite_code_failed",
        "numeric_code": "34010",
        "message": "Failed to get group invite code"
      }
    }
    
  • get_session_failed20005

    Read the current account session: the service could not load the current session.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_session_failed",
        "numeric_code": "20005",
        "message": "Failed to get account session"
      }
    }
    
  • get_webhook_endpoint_failed40002

    Get webhook endpoint: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_webhook_endpoint_failed",
        "numeric_code": "40002",
        "message": "Failed to get webhook endpoint"
      }
    }
    
  • get_workspace_failed41000

    Get current workspace: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_workspace_failed",
        "numeric_code": "41000",
        "message": "Failed to get workspace"
      }
    }
    
  • leave_group_failed34003

    Leave a group: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "leave_group_failed",
        "numeric_code": "34003",
        "message": "Failed to leave group"
      }
    }
    
  • list_accounts_failed20000

    List accounts: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_accounts_failed",
        "numeric_code": "20000",
        "message": "Failed to list accounts"
      }
    }
    
  • list_api_keys_failed11100

    List API keys: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_api_keys_failed",
        "numeric_code": "11100",
        "message": "Failed to list API keys"
      }
    }
    
  • list_blocklist_failed35007

    Get blocklist: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_blocklist_failed",
        "numeric_code": "35007",
        "message": "Failed to list blocklist"
      }
    }
    
  • list_contacts_failed35001

    List contacts: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_contacts_failed",
        "numeric_code": "35001",
        "message": "Failed to list contacts"
      }
    }
    
  • list_conversation_labels_failed37012

    List conversation labels: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_conversation_labels_failed",
        "numeric_code": "37012",
        "message": "Failed to list conversation labels"
      }
    }
    
  • list_conversation_members_failed37005

    List conversation members: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_conversation_members_failed",
        "numeric_code": "37005",
        "message": "Failed to list conversation members"
      }
    }
    
  • list_conversations_failed37003

    List conversations: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_conversations_failed",
        "numeric_code": "37003",
        "message": "Failed to list conversations"
      }
    }
    
  • list_group_join_requests_failed34007

    List group join requests: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_group_join_requests_failed",
        "numeric_code": "34007",
        "message": "Failed to list group join requests"
      }
    }
    
  • list_groups_failed34000

    List groups: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_groups_failed",
        "numeric_code": "34000",
        "message": "Failed to list groups"
      }
    }
    
  • list_provider_regions_failed30011

    List provider regions: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_provider_regions_failed",
        "numeric_code": "30011",
        "message": "Failed to list provider regions"
      }
    }
    
  • list_webhook_endpoints_failed40000

    List webhook endpoints: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_webhook_endpoints_failed",
        "numeric_code": "40000",
        "message": "Failed to list webhook endpoints"
      }
    }
    
  • mark_conversation_read_failed37006

    Mark a conversation as read: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "mark_conversation_read_failed",
        "numeric_code": "37006",
        "message": "Failed to mark conversation as read"
      }
    }
    
  • mark_conversation_unread_failed37007

    Mark a conversation as unread: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "mark_conversation_unread_failed",
        "numeric_code": "37007",
        "message": "Failed to mark conversation as unread"
      }
    }
    
  • mute_conversation_failed37008

    Mute conversation notifications: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "mute_conversation_failed",
        "numeric_code": "37008",
        "message": "Failed to mute conversation"
      }
    }
    
  • pin_conversation_failed37010

    Pin conversation: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "pin_conversation_failed",
        "numeric_code": "37010",
        "message": "Failed to pin conversation"
      }
    }
    
  • pin_message_failed36002

    Pin / unpin message: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "pin_message_failed",
        "numeric_code": "36002",
        "message": "Failed to pin message"
      }
    }
    
  • react_message_failed36004

    React to message: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "react_message_failed",
        "numeric_code": "36004",
        "message": "Failed to react to message"
      }
    }
    
  • request_conversation_history_failed37016

    Request conversation history: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Check the WhatsApp private conversation and before anchor. Keep request_id for HTTP diagnosis only. History events may arrive after an HTTP timeout; do not retry automatically or treat no event, an empty batch or a short batch as completion.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "request_conversation_history_failed",
        "numeric_code": "37016",
        "message": "Failed to request conversation history"
      }
    }
    
  • revoke_message_failed36003

    Revoke message: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "revoke_message_failed",
        "numeric_code": "36003",
        "message": "Failed to revoke message"
      }
    }
    
  • run_action_failed20007

    Run an account action: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "run_action_failed",
        "numeric_code": "20007",
        "message": "Failed to run account action"
      }
    }
    
  • run_auth_action_failed20010

    Run an authorization action: the authorization action failed; check the existing flow rather than assuming authorization must restart.

    What to do: Query the current authorization flow and check whether user action is required. Do not start another authorization attempt merely because this request failed; do not resubmit an expired or finished session.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "run_auth_action_failed",
        "numeric_code": "20010",
        "message": "Failed to run auth action"
      }
    }
    
  • run_runtime_action_failed20008

    Change runtime state: the runtime action failed; this response alone does not establish the final connection state.

    What to do: Query authorization and runtime status, then choose refresh, start or reconnect only when appropriate for the intended state and channel. A connection problem alone does not prove logout. Confirm running before dependent business operations.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "run_runtime_action_failed",
        "numeric_code": "20008",
        "message": "Failed to run runtime action"
      }
    }
    
  • run_session_action_failed20009

    Run a session action: the authorization action failed; check the existing flow rather than assuming authorization must restart.

    What to do: Query the current authorization flow and check whether user action is required. Do not start another authorization attempt merely because this request failed; do not resubmit an expired or finished session.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "run_session_action_failed",
        "numeric_code": "20009",
        "message": "Failed to run session action"
      }
    }
    
  • send_message_failed36001

    Message sending failed or its result could not be confirmed.

    What to do: Confirm whether the original message or reply was created before sending again. A timeout or failed response can leave the outcome unknown; a later query with no matching reply does not prove nothing was written. Do not automatically resend.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "send_message_failed",
        "numeric_code": "36001",
        "message": "Failed to send message"
      }
    }
    
  • set_contact_note_failed35008

    Set contact note: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "set_contact_note_failed",
        "numeric_code": "35008",
        "message": "Failed to set contact note"
      }
    }
    
  • set_group_join_approval_mode_failed34009

    Set group join approval mode: the group change failed; channel rejection or missing administrator permission may be involved.

    What to do: Check the group, current membership, the required administrator permission and the current result. Resolve access or permission issues before repeating the change; an unknown write result must be reconciled first.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "set_group_join_approval_mode_failed",
        "numeric_code": "34009",
        "message": "Failed to set group join approval mode"
      }
    }
    
  • set_label_members_failed37015

    Add / remove label on conversations: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "set_label_members_failed",
        "numeric_code": "37015",
        "message": "Failed to set label members"
      }
    }
    
  • unblock_contact_failed35006

    Unblock contact: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unblock_contact_failed",
        "numeric_code": "35006",
        "message": "Failed to unblock contact"
      }
    }
    
  • unmute_conversation_failed37009

    Enable conversation notifications: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unmute_conversation_failed",
        "numeric_code": "37009",
        "message": "Failed to unmute conversation"
      }
    }
    
  • unpin_conversation_failed37011

    Unpin conversation: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unpin_conversation_failed",
        "numeric_code": "37011",
        "message": "Failed to unpin conversation"
      }
    }
    
  • update_account_failed20003

    Update account: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_account_failed",
        "numeric_code": "20003",
        "message": "Failed to update account"
      }
    }
    
  • update_group_info_failed34006

    Update group info: the group change failed; channel rejection or missing administrator permission may be involved.

    What to do: Check the group, current membership, the required administrator permission and the current result. Resolve access or permission issues before repeating the change; an unknown write result must be reconciled first.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_group_info_failed",
        "numeric_code": "34006",
        "message": "Failed to update group info"
      }
    }
    
  • update_group_join_requests_failed34008

    Approve / reject join requests: the group change failed; channel rejection or missing administrator permission may be involved.

    What to do: Check the group, current membership, the required administrator permission and the current result. Resolve access or permission issues before repeating the change; an unknown write result must be reconciled first.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_group_join_requests_failed",
        "numeric_code": "34008",
        "message": "Failed to update group join requests"
      }
    }
    
  • update_group_members_failed34005

    Update group members: the group change failed; channel rejection or missing administrator permission may be involved.

    What to do: Check the group, current membership, the required administrator permission and the current result. Resolve access or permission issues before repeating the change; an unknown write result must be reconciled first.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_group_members_failed",
        "numeric_code": "34005",
        "message": "Failed to update group members"
      }
    }
    
  • update_webhook_endpoint_failed40003

    Update webhook endpoint: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the endpoint configuration and account scope before resubmitting. PATCH replaces settings; retain the intended subscriptions, signing configuration and retry policy. For an active-endpoint conflict, update the existing endpoint or deactivate it before enabling another.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "update_webhook_endpoint_failed",
        "numeric_code": "40003",
        "message": "Failed to update webhook endpoint"
      }
    }
    
  • upsert_label_failed37013

    Create or update label: an unclassified error interrupted this change; the resulting resource state needs confirmation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "upsert_label_failed",
        "numeric_code": "37013",
        "message": "Failed to upsert label"
      }
    }
    

501 Not Implemented

  • unsupported_by_provider30003

    The channel does not support this operation; choose a supported operation.

    What to do: Use a channel and action listed as supported. Repeating the same request does not add capabilities or grant beta access.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "unsupported_by_provider",
        "numeric_code": "30003",
        "message": "Operation not supported by this provider"
      }
    }
    

502 Bad Gateway

  • get_post_failed39006

    Posts & Comments

    Get account post: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "get_post_failed",
        "numeric_code": "39006",
        "message": "Failed to get post"
      }
    }
    
  • list_post_comments_failed39003

    Posts & Comments

    List top-level post comments: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_post_comments_failed",
        "numeric_code": "39003",
        "message": "Failed to list post comments"
      }
    }
    
  • list_posts_failed39002

    Posts & Comments

    List account posts: the service could not produce a valid query result.

    What to do: Keep request_id and check the requested identifiers and account access. Retry this read only after checking the cause; a failed query does not prove an empty or missing resource.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "list_posts_failed",
        "numeric_code": "39002",
        "message": "Failed to list posts"
      }
    }
    
  • provider_adapter_not_found30004

    The channel service is unavailable. Check status or try again later; confirm the result before retrying writes.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "provider_adapter_not_found",
        "numeric_code": "30004",
        "message": "Provider adapter unavailable"
      }
    }
    
  • provider_unavailable30002

    The channel service is unavailable. Check status or try again later; confirm the result before retrying writes.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "provider_unavailable",
        "numeric_code": "30002",
        "message": "Provider service unavailable"
      }
    }
    
  • reply_post_comment_failed39004

    Posts & Comments

    Check the post, confirmed top-level comment and error classification. If the write outcome is unknown, keep request_id and investigate before any resend; absence in a later read is not enough to justify retrying.

    What to do: Confirm whether the original message or reply was created before sending again. A timeout or failed response can leave the outcome unknown; a later query with no matching reply does not prove nothing was written. Do not automatically resend.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "reply_post_comment_failed",
        "numeric_code": "39004",
        "message": "Failed to confirm comment reply; result may be unknown, do not automatically retry"
      }
    }
    

503 Service Unavailable

  • allocation_service_unavailable20012

    Account allocation is temporarily unavailable; retry shortly.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "allocation_service_unavailable",
        "numeric_code": "20012",
        "message": "Allocation service is temporarily unavailable"
      }
    }
    
  • call_service_unavailable38001

    Calls

    The calling service is unavailable. Check the Provider/Gateway connection and configuration.

    What to do: Query the managed call and its call_id/state before creating or ending another call. Preparing is not dialing or answered; ended and failed are terminal states. A failed state alone is not a reason to repeat hangup.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "call_service_unavailable",
        "numeric_code": "38001",
        "message": "Call service unavailable"
      }
    }
    
  • internal_auth_not_configured11006

    The authorization-session service is unavailable or not configured for this request. Contact the service operator to check the authorization-session service.

    What to do: Keep request_id and the structured codes, and investigate the current operation before taking another action.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "internal_auth_not_configured",
        "numeric_code": "11006",
        "message": "Internal endpoint authentication is not configured"
      }
    }
    
  • wallet_unavailable20028

    Wallet data or configuration is temporarily unavailable. A failed write can have an unknown result; reconcile the original operation.

    What to do: Read the current resource state and confirm the previous outcome before repeating this change. Keep request_id; do not automatically repeat a write whose outcome is unknown.

    Illustrative JSON; message varies with the actual cause
    {
      "request_id": "req_example",
      "error": {
        "code": "wallet_unavailable",
        "numeric_code": "20028",
        "message": "Wallet service is unavailable"
      }
    }
    

Additional numeric causes

These causes refine a response while preserving that operation’s original HTTP status and code. Check the endpoint table for the applicable combination; a listed numeric cause does not apply to every operation or provider.

For authentication-code rejection, the published contract defines 30016, while existing authorization paths may still return provider_invalid_request / 30001. Handle both; do not depend on receiving 30016 for every rejected code.

Account failure events

Some WhatsApp account.auth.failed events include an optional data.error object with non-empty string fields code, numeric_code and message. Read these inside the event, separately from HTTP error responses.

Older events and other scopes may omit data.error. Preserve last_error compatibility and handle missing or unknown codes through the existing account-failure flow. Account list/detail responses do not gain this object. These classifications do not prove a permanent ban or a recovery deadline.

After securely accepting the event, return 2xx to acknowledge delivery. Account failures and HTTP delivery failures are separate: an account failure is not a reason to reject the webhook and trigger redelivery. Existing retry and replay rules still apply; historical events are not backfilled.

  • account_auth_failed20100

    Account authorization failed, but the specific cause could not be determined. Use the existing failure flow without inventing a restriction or logout reason.

    What to do: Query the current authorization flow and check whether user action is required. Do not start another authorization attempt merely because this request failed; do not resubmit an expired or finished session.

    Illustrative JSON; message varies with the actual cause
    {
      "id": "<EVENT_ID>",
      "type": "account.auth.failed",
      "provider": "whatsapp",
      "account_id": "<ACCOUNT_ID>",
      "occurred_at": "2026-10-16T00:00:00Z",
      "data": {
        "auth_status": "failed",
        "runtime_status": "disconnected",
        "event": {
          "kind": "account_auth_status",
          "auth_status": "failed",
          "runtime_status": "disconnected"
        },
        "error": {
          "code": "account_auth_failed",
          "numeric_code": "20100",
          "message": "Account authentication failed. The specific cause could not be determined."
        }
      }
    }
    
  • account_logged_out20101

    The current account session is no longer valid. Ask the user to authorize again through the channel’s supported flow.

    What to do: Ask the user to authorize again through this channel’s supported flow. After authorization, query runtime state and confirm the connection before resuming dependent operations.

    Illustrative JSON; message varies with the actual cause
    {
      "id": "<EVENT_ID>",
      "type": "account.auth.failed",
      "provider": "whatsapp",
      "account_id": "<ACCOUNT_ID>",
      "occurred_at": "2026-10-16T00:00:00Z",
      "data": {
        "auth_status": "failed",
        "runtime_status": "disconnected",
        "event": {
          "kind": "account_auth_status",
          "auth_status": "failed",
          "runtime_status": "disconnected"
        },
        "error": {
          "code": "account_logged_out",
          "numeric_code": "20101",
          "message": "The account session is no longer valid. Reauthorization is required."
        }
      }
    }
    
  • account_restricted20102

    This WhatsApp account.auth.failed event identifies a current login restriction with data.error.code=account_restricted and numeric_code=20102. It does not prove a permanent ban or state when recovery will be possible.

    What to do: Stop automatic sends and retries, and ask the user to inspect and resolve the restriction in the official WhatsApp app. Resume only after resolution and any required reauthorization. A previously running connection does not prove the restriction has cleared.

    Illustrative JSON; message varies with the actual cause
    {
      "id": "<EVENT_ID>",
      "type": "account.auth.failed",
      "provider": "whatsapp",
      "account_id": "<ACCOUNT_ID>",
      "occurred_at": "2026-10-16T00:00:00Z",
      "data": {
        "auth_status": "failed",
        "runtime_status": "disconnected",
        "event": {
          "kind": "account_auth_status",
          "auth_status": "failed",
          "runtime_status": "disconnected"
        },
        "error": {
          "code": "account_restricted",
          "numeric_code": "20102",
          "message": "Account login is restricted. Check the official WhatsApp app for details."
        }
      }
    }