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_id returned when you uploaded the file.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://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

ParameterInTypeRequiredDescription
bulkImportIdpathintegerYesThe import_id from the upload.

Request body

None.

Request payload

None.

Response body

The payload is inside data.

FieldTypeDescription
import_idintegerThe import's id.
statusstringqueued, then preparing, then processing, and finally completed, completed_with_errors or failed.
total_rowsintegerData rows read from the file.
processed_rowsintegerRows that are finished (created or skipped).
created_rowsintegerRows whose account and location were created.
skipped_rowsintegerRows that were skipped.
created_citiesintegerCities that didn't exist and were created.
created_statesintegerStates that didn't exist and were created.
skip_breakdownobjectThe 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_messagestring or nullWhy the import failed, when status is failed (e.g. missing columns). Otherwise null.
queued_atstring or nullWhen the import was queued.
started_atstring or nullWhen processing started.
completed_atstring or nullWhen 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": []
}
StatusMeaning
200The import's status.
401The token is missing, expired or invalid.
403The token isn't a Partner token.
404No import with this id belongs to your partner.
500Unexpected 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'

Did this page help you?