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
| Header | Type | Description |
|---|---|---|
| X-API-Key | string | Your Rasel API key. Send it on every documented request except inbound webhooks. * |
Path parameters
| Field | Type | Description |
|---|---|---|
| jobId | string | Job id from the create response. The job is visible only to that key's account. * |
Query parameters
| Field | Type | Description |
|---|---|---|
| cursor | integer | Opaque pagination cursor from the previous response. |
Response Fields
| Field | Type | Description | Example |
|---|---|---|---|
| success | enum | True when the operation succeeded, or when at least one batch recipient succeeded. * | |
| errors | json | A page of rows that have an error code from validation or sending. Paused rows with an empty code are absent. * | |
| nextCursor | integer | Cursor for the next page. null means this is the last page. Send it back unchanged. * |
Status Codes
| Status | Description |
|---|---|
| 200 | Success. |
| 401 | Missing or invalid API key. |
| 403 | Phone not verified, missing permission, or the account cannot perform this action. |
| 404 | Resource not found for this API key owner. |
| 429 | Rate 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//errorsResponse
Send a request to see the response.