Rapiwa API
Guide
Sessions
Messages
Groups
Webhooks
Pricing
  • Website
  • Dashboard
  • Support
Guide
Sessions
Messages
Groups
Webhooks
Pricing
  • Website
  • Dashboard
  • Support
  • Getting Started

    • Getting Started
    • Authentication
    • Credits & Pricing
    • Rate Limits
    • Errors
  • Sessions & Devices

    • Link a Device (QR)
    • Get Session Info
    • Validate a Device Key
    • Log Out
    • List All Devices
  • Messages

    • Send a Message
    • Send Bulk Messages
    • Delete a Message
    • Check a Number on WhatsApp
  • Groups

    • Create a Group
    • List Groups
    • Get Group Metadata
    • Get Invite Link
    • Add Members
    • Join a Group
    • Leave a Group
    • Delete a Group
    • Send to a Group
  • Webhooks & Integrations

    • Inbound Messages Webhook
    • Delivery Status Webhook
    • n8n & Integrations
  • Reference

    • Pricing Catalog

Errors

Success vs error shapes

Success responses vary by endpoint (see each reference page) — some use success: true, some use status: true, and group endpoints nest their payload under data.

Errors are always the same envelope:

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "details": { "fieldErrors": { "number": ["Required"] } }
  }
}
  • code — a stable machine-readable string (table below).
  • message — a human-readable explanation.
  • details — optional; present on validation errors (a flattened field-error map) and some others.

Always branch on the HTTP status code and error.code, not on the message text.

Status codes

HTTPerror.codeMeaning
400VALIDATION_ERRORBody failed validation (missing/invalid fields). Check details.
401UNAUTHORIZEDMissing or invalid Device Key / apikey.
402INSUFFICIENT_CREDITSWallet can't cover the call. Top up.
403FORBIDDENAuthenticated but not allowed to perform this action.
403SUBSCRIPTION_REQUIREDAn active subscription is required.
404NOT_FOUNDResource doesn't exist.
409CONFLICTConflicting state.
409SESSION_NOT_CONNECTEDThe device isn't linked/connected — (re)scan the QR.
429RATE_LIMITEDToo many requests. Honor Retry-After.
502ENGINE_ERRORThe WhatsApp engine failed or was unreachable. Retry with backoff.
502UPSTREAM_ERRORAn upstream dependency failed.
500INTERNAL_ERRORUnexpected server error. Retry; contact support if it persists.

Common cases

Missing Device Key → 401

{ "success": false, "error": { "code": "UNAUTHORIZED", "message": "Missing Device Key (Authorization: Bearer <deviceKey>)" } }

Validation error → 400

Sending an image without media_url:

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Validation failed",
    "details": { "fieldErrors": { "media_url": ["media_url is required for image"] } }
  }
}

Device not connected → 409

{ "success": false, "error": { "code": "SESSION_NOT_CONNECTED", "message": "Session not connected" } }

Open the QR page and re-link the device.

Retry guidance

CodeRetry?
RATE_LIMITEDYes — after Retry-After seconds.
ENGINE_ERROR, UPSTREAM_ERROR, INTERNAL_ERRORYes — with exponential backoff.
SESSION_NOT_CONNECTEDOnly after re-linking the device.
VALIDATION_ERROR, UNAUTHORIZED, INSUFFICIENT_CREDITSNo — fix the request / wallet first.
Last Updated: 7/7/26, 8:31 AM
Prev
Rate Limits