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.
Response
{  "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.

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