Enigma Developers

Errors

Status codes and the error response shape.

Errors use standard HTTP status codes and share one JSON shape:

{
  "statusCode": 404,
  "timestamp": "2026-10-10T08:45:35.000Z",
  "path": "/v1/tickets/T-261010-0001",
  "method": "GET",
  "message": "Ticket T-261010-0001 not found",
  "error": "NotFoundException"
}
FieldDescription
statusCodeThe HTTP status.
messageWhat went wrong. A string, a list of strings, or { "en": "…", "ar": "…" } for errors shown to end users.
errorThe error's name.
validationErrorsOn 400: the fields that failed validation and why.
errorDetailsOn send failures: code, title, message, details. See below.

Status codes

StatusMeaning
400The body or query is invalid. Unknown fields are rejected too.
401The API key is missing, invalid, expired or revoked.
402Not enough Enigma credits to send the message.
403The key lacks the scope this endpoint needs.
404The channel, contact, conversation or ticket does not exist in your organization.
429Rate limit exceeded. See Rate limits.
502WhatsApp rejected the message.

Send failures

When a template send fails, errorDetails says why, so you can act on it:

{
  "statusCode": 502,
  "message": {
    "en": "Failed to send the message to WhatsApp. Please try again.",
    "ar": "فشل إرسال الرسالة إلى واتساب. يرجى المحاولة مرة أخرى."
  },
  "error": "MessageSendFailedError",
  "errorDetails": {
    "code": 131047,
    "title": "Re-engagement message",
    "message": "More than 24 hours have passed since the customer last replied."
  }
}
  • On 502, errorDetails.code is the WhatsApp error code.
  • On 402, errorDetails.title is WALLET_INSUFFICIENT. Top up your balance in the dashboard.

A message can also fail after WhatsApp accepted it. That failure arrives on the message_status webhook, with the same errorDetails.

On this page