SMSSubscribers
Get bulk import job
Poll async bulk SMS subscriber import status and results.
GET /app/subscribers/sms/subscribers/bulk/{jobId}
Returns the current status and aggregated results for a bulk import job. Poll until status is completed or failed.
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
jobId | uuid | Yes | Job ID returned by POST /app/subscribers/sms/subscribers/bulk |
Request
See API Basics for required headers.
Sample request
curl https://api.statusdashboard.com/app/subscribers/sms/subscribers/bulk/f47ac10b-58cc-4372-a567-0e02b2c3d479 \
-H "Authorization: Bearer bcf847abf5c6:def456"Sample response — processing
Status: 200 OK
{
"jobId": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
"status": "processing",
"uploadedRows": 1200,
"totalRows": 1200,
"processedRows": 450,
"uploadComplete": true,
"createdCount": 400,
"skippedCount": 30,
"errorCount": 15,
"quotaExceededCount": 5,
"totalBatches": 24,
"completedBatches": 9,
"failedBatches": 0,
"startedAt": "2026-06-24T10:00:00.000Z",
"updatedAt": "2026-06-24T10:01:30.000Z",
"completedAt": null,
"failureReason": null,
"created": [
{ "phone": "+1 415 555 2671", "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }
],
"skipped": [
{ "phone": "+1 415 555 0100", "reason": "Already subscribed on this dashboard." }
],
"errors": [
{ "phone": "+15555550100", "reason": "Dashboard not found." }
],
"quotaExceeded": [
{ "phone": "+1 415 555 9999" }
]
}Sample response — completed
When status is completed, the org import lock is released. Use createdCount, skippedCount, errorCount, and quotaExceededCount for totals; sample arrays may be truncated at 100 entries.
Response fields
| Field | Type | Description |
|---|---|---|
jobId | string | Job UUID from bulk create. |
status | string | Job lifecycle state. See job status values. |
uploadedRows | number | Rows received from upload chunks so far. |
totalRows | number | Expected total rows once upload completes. |
processedRows | number | Rows processed by the background worker. |
uploadComplete | boolean | true when all upload chunks have been received. |
createdCount | number | Subscribers successfully created. |
skippedCount | number | Rows skipped (e.g. already subscribed). |
errorCount | number | Rows that failed validation or creation. |
quotaExceededCount | number | Rows rejected because a dashboard subscriber quota was reached. |
totalBatches | number | Background processing batches planned. |
completedBatches | number | Batches finished successfully. |
failedBatches | number | Batches that failed and may be retried. |
startedAt | string | ISO 8601 timestamp when the job started. |
updatedAt | string | ISO 8601 timestamp of the last progress update. |
completedAt | string | null | ISO 8601 timestamp when the job reached a terminal state, or null. |
failureReason | string | null | Summary error when status is failed, or null. |
created | array | Sample of created subscribers (phone, dashboardId). Truncated at 100 entries. |
skipped | array | Sample of skipped rows (phone, reason). Truncated at 100 entries. |
errors | array | Sample of failed rows (phone, reason). Truncated at 100 entries. |
quotaExceeded | array | Sample of quota-rejected rows (phone). Truncated at 100 entries. |
Job status values
| Status | When |
|---|---|
uploading | Client is still sending chunk requests (uploadComplete is false) |
processing | All chunks received; rows are being created in the background |
completed | All batches finished (row-level errors are reported in counts, not as job failure) |
failed | Job aborted (e.g. infrastructure failure or stale timeout after 30 minutes without progress) |
Error responses
| Status | When |
|---|---|
400 | Invalid jobId |
403 | Requires admin or subscriber role, or feature disabled |
404 | Job not found |

