GET/api/v4/locations/photos/requests/{requestId}

Check bulk photo upload status

Returns the current processing status for a bulk photo upload request.

Requires an API key. See Authentication for header format and key rotation.

Parameters

Path

NameTypeRequiredDescription
requestIdstringrequiredUUID request ID returned in the `request` object by the add-photos endpoint when a batch exceeds 30 photos.

Responses

200Current status of the bulk upload request, with per-photo results once available.
{
  "data": {
    "getLocationPhotosUploadStatus": {
      "requestId": "e6c2d9d9-9a18-4015-88cf-9a4e19a6f49a",
      "status": "SUCCESS",
      "photos": [
        {
          "mediaId": "TWVkaWFGaWxlOjkxODI3",
          "locationId": "TG9jYXRpb246MTgwMDI4OQ==",
          "status": "SUCCESS",
          "errorMessage": null
        },
        {
          "mediaId": null,
          "locationId": "TG9jYXRpb246MTgwMDI4OQ==",
          "status": "ERROR",
          "errorMessage": "Image dimensions below the minimum 250x250."
        }
      ]
    }
  }
}
401Unauthenticated — missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

Polls the status of an asynchronous bulk photo upload. When add location photos receives more than 30 images, it processes them in the background and returns a requestId in the request object instead of the finished media. Poll this endpoint with that requestId until the job settles.

Use case — drive an upload progress bar. After a large batch upload, poll every few seconds while status is PROCESSING. Once it flips to SUCCESS or ERROR, read the photos array for the per-image outcome: each entry carries the resulting mediaId (on success) plus a status/errorMessage pair so you can surface exactly which files were rejected and why (wrong dimensions, unsupported format, etc.) rather than failing the whole batch.

Status values: PROCESSING (still working — poll again), SUCCESS (all photos ingested), ERROR (the job failed; inspect photos[].errorMessage).

Polling gotcha: back off between polls — a tight loop against this endpoint is a fast way to hit 429. Honor the Retry-After header and prefer an interval of a few seconds. An unknown or expired requestId will not resolve, so only poll IDs handed back by a recent upload call.

curl -X GET 'https://listingsapi.com/api/v4/locations/photos/requests/<requestId>' \
  -H "Authorization: API $LISTINGSAPI_KEY"