/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"