StatusDashboard
SMSSubscribers

Get bulk import job

Poll async bulk SMS subscriber import status and results.

View Markdown

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

ParameterTypeRequiredDescription
jobIduuidYesJob 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

FieldTypeDescription
jobIdstringJob UUID from bulk create.
statusstringJob lifecycle state. See job status values.
uploadedRowsnumberRows received from upload chunks so far.
totalRowsnumberExpected total rows once upload completes.
processedRowsnumberRows processed by the background worker.
uploadCompletebooleantrue when all upload chunks have been received.
createdCountnumberSubscribers successfully created.
skippedCountnumberRows skipped (e.g. already subscribed).
errorCountnumberRows that failed validation or creation.
quotaExceededCountnumberRows rejected because a dashboard subscriber quota was reached.
totalBatchesnumberBackground processing batches planned.
completedBatchesnumberBatches finished successfully.
failedBatchesnumberBatches that failed and may be retried.
startedAtstringISO 8601 timestamp when the job started.
updatedAtstringISO 8601 timestamp of the last progress update.
completedAtstring | nullISO 8601 timestamp when the job reached a terminal state, or null.
failureReasonstring | nullSummary error when status is failed, or null.
createdarraySample of created subscribers (phone, dashboardId). Truncated at 100 entries.
skippedarraySample of skipped rows (phone, reason). Truncated at 100 entries.
errorsarraySample of failed rows (phone, reason). Truncated at 100 entries.
quotaExceededarraySample of quota-rejected rows (phone). Truncated at 100 entries.

Job status values

StatusWhen
uploadingClient is still sending chunk requests (uploadComplete is false)
processingAll chunks received; rows are being created in the background
completedAll batches finished (row-level errors are reported in counts, not as job failure)
failedJob aborted (e.g. infrastructure failure or stale timeout after 30 minutes without progress)

Error responses

StatusWhen
400Invalid jobId
403Requires admin or subscriber role, or feature disabled
404Job not found

On this page

We use cookies

We use essential cookies to keep the site working, and optional analytics cookies to understand how it's used. Read our Privacy Policy.