Rasel / Docs
EN
GET/api/v2/messages/bulk/{jobId}/errors

Bulk job errors

A page of rows that have an error code, from validation or from sending. The page size is 50. The response does not include message text.

When to use it. Read rejection or row-failure reasons without downloading the text.

Code example

Correct: Correct: validation error

curl --location 'https://raselsms.com/api/v2/messages/bulk/64b0c0ff0000000000000001/errors?cursor=0' \--header 'X-API-Key: YOUR_API_KEY'

Response example

200 — Correct: validation error

{  "success": true,  "errors": [    {      "index": 1,      "code": "SENDER_NOT_FOUND",      "message": "Sender was not found"    }  ],  "nextCursor": null}

404 — No job with this id belongs to this account. Code JOB_NOT_FOUND.

{  "success": false,  "code": "JOB_NOT_FOUND",  "error": "Job was not found"}

401 — Missing or invalid API key.

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "UNAUTHORIZED",  "error": "Missing or invalid API key"}

403 — Phone is not verified or messages:read is missing. Code FORBIDDEN.

{  "success": false,  "code": "FORBIDDEN",  "error": "Phone not verified or missing permission"}

429 — Rate limit exceeded. Honor Retry-After when present.

{  "success": false,  "requestId": "msgreq_1739012345678_abc123",  "code": "RATE_LIMITED",  "error": "Rate limit exceeded",  "retryAfterSeconds": 30}

HTTP request

GET /api/v2/messages/bulk/{jobId}/errors

Request Headers

HeaderTypeDescription
X-API-KeystringYour Rasel API key. Send it on every documented request except inbound webhooks. *

Path parameters

FieldTypeDescription
jobIdstringJob id from the create response. The job is visible only to that key's account. *

Query parameters

FieldTypeDescription
cursorintegerOpaque pagination cursor from the previous response.

Response Fields

FieldTypeDescriptionExample
successenumTrue when the operation succeeded, or when at least one batch recipient succeeded. *
errorsjsonA page of rows that have an error code from validation or sending. Paused rows with an empty code are absent. *
nextCursorintegerCursor for the next page. null means this is the last page. Send it back unchanged. *

Status Codes

StatusDescription
200Success.
401Missing or invalid API key.
403Phone not verified, missing permission, or the account cannot perform this action.
404Resource not found for this API key owner.
429Rate limit exceeded, or the maximum number of verification attempts was reached.

Cases to handle

  • Validation codes: SCHEDULE_NOT_ALLOWED, TO_REQUIRED, CONTENT_REQUIRED, MARKETING_NOT_ALLOWED, CONTENT_BLOCKED, SENDER_NOT_FOUND, TEMPLATE_REQUIRED, TEMPLATE_NOT_FOUND, TEMPLATE_UNAVAILABLE. Recipient format uses the single-send codes.
  • A send failure uses the single-send code, or SEND_FAILED when that code is absent. SUBSCRIPTION_INACTIVE means the subscription ended, remaining rows failed, and the job completed.
  • A blocked or opted-out recipient fails that row at send time and the job continues. One unavailable sender fails that row only.

Try it

Parameters

Job id from the create response. The job is visible only to that key's account.

Opaque pagination cursor from the previous response.

Request

GET /api/v2/messages/bulk//errors

Response

Send a request to see the response.