Check import status
Overview
See how a spreadsheet import is going: how many rows processed, succeeded, and were skipped, with a count for each skip reason.
Use this after starting an import to know when it's done and what needs fixing.
You'll need the import_id from Import accounts and locations from a spreadsheet.
Returns the import's status, its row counts, and the number of skipped rows per reason.
Prerequisites
- A Partner token. See Authentication.
- The
import_idreturned when you uploaded the file.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/partner/account/bulk-import/{bulkImportId}
Authentication
Partner token
- You only see your own partner's imports. An import that belongs to another partner, or doesn't exist, returns
404. - Any other token gets
403.
Rate limit
This endpoint has no rate limit.
Request parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
bulkImportId | path | integer | Yes | The import_id from the upload. |
Request body
None.
Request payload
None.
Response body
The payload is inside data.
| Field | Type | Description |
|---|---|---|
import_id | integer | The import's id. |
status | string | queued, then preparing, then processing, and finally completed, completed_with_errors or failed. |
total_rows | integer | Data rows read from the file. |
processed_rows | integer | Rows that are finished (created or skipped). |
created_rows | integer | Rows whose account and location were created. |
skipped_rows | integer | Rows that were skipped. |
created_cities | integer | Cities that didn't exist and were created. |
created_states | integer | States that didn't exist and were created. |
skip_breakdown | object | The number of skipped rows per reason, e.g. {"duplicate_email": 1}. Reasons: invalid_row, unknown_country, plan_unavailable, duplicate_email, duplicate_client_account_id, duplicate_client_location_id, provision_failed. An empty array [] when nothing was skipped. |
error_message | string or null | Why the import failed, when status is failed (e.g. missing columns). Otherwise null. |
queued_at | string or null | When the import was queued. |
started_at | string or null | When processing started. |
completed_at | string or null | When the import finished. |
Response payload
{
"data": {
"import_id": 2,
"status": "completed_with_errors",
"total_rows": 22,
"processed_rows": 22,
"created_rows": 21,
"skipped_rows": 1,
"created_cities": 1,
"created_states": 0,
"skip_breakdown": {
"duplicate_email": 1
},
"error_message": null,
"queued_at": "2026-06-30T07:02:03.000000Z",
"started_at": "2026-06-30T07:02:04.000000Z",
"completed_at": "2026-06-30T07:02:07.000000Z"
}
}Examples
Success payload
See Response payload.
Error payload
403 Not a partner
{
"message": "Only a partner account may view a bulk import.",
"status": "error",
"errors": []
}404 Import not found
{
"message": "Import not found.",
"status": "error",
"errors": []
}| Status | Meaning |
|---|---|
200 | The import's status. |
401 | The token is missing, expired or invalid. |
403 | The token isn't a Partner token. |
404 | No import with this id belongs to your partner. |
500 | Unexpected server error. |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/partner/account/bulk-import/2" \
--header 'Authorization: Bearer <bearer-token>' \
--header 'Accept: application/json'Updated 17 days ago
Did this page help you?
