/api/v4/locations/photos/requests/{requestId}Check bulk photo upload status
Returns the current processing status for a bulk photo upload request.
Parameters
Path
| Name | Type | Required | Description |
|---|---|---|---|
| requestId | string | required | UUID 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"