v1Resources/Locations/getList locations with their media
List locations with their media
Lists locations together with their photos, newest first — same filters as GET /api/v1/locations. Use this for questions like "which locations have no photos?", rather than GET /api/v1/media, which returns only ONE location's media at a time.
get
media:read/api/v1/locations/mediaQuery parameters
clientIdstringoptional
Limit to one client's locations. Required when your key is scoped to specific clients — there is no per-row client field here to check a merged, unscoped result against, so an omitted clientId is refused rather than guessed at. Look it up with GET /api/v1/clients.
searchstringoptional
Free-text search over the location's name, street address, city, or phone (case-insensitive, partial matches allowed).
statusstring (all | active | archived | archival_pending | verification_pending | unapproved | requires_action)optional
A single status bucket: all, active (not archived), archived, archival_pending, verification_pending (Google approval pending), unapproved, or requires_action. Defaults to all.
tagsarray of stringoptional
Internal tags — matches a location that has any of these.
categoriesarray of stringoptional
Category display names — matches a location whose general or Google category is any of these.
verificationarray of string (verified | pending | unverified | unknown)optional
Google verification state: verified, pending, unverified, or unknown.
createdAfterstringoptional
Only locations created on or after this date.
createdBeforestringoptional
Only locations created on or before this date.
cursorstringoptional
Pagination cursor from a previous response's nextCursor. Leave empty for the first page.
limitintegeroptional
Locations to return per page, 1–100. Defaults to 100.
Response
dataobjectoptional
locationsarray of objectoptional
The matching locations for this page.
idstringoptional
Unique identifier for the location.
namestringoptional
The location's business name.
logoUrlstringoptional
URL of the location's logo, or null.
mediaByCategoryobjectoptional
Media items grouped by category (e.g. EXTERIOR, INTERIOR, FOOD_AND_DRINK, LOGO, TEAMS). Each item has a url, and optionally a label, kind (PHOTO or VIDEO), source, starred flag, and asset key.
totalnumberoptional
Total number of photos across every category for this location.
nextCursorstringoptional
Pagination cursor for the next page, or null when there are no more results.
totalnumberoptional
Total number of locations matching the filters, across all pages.
Errors
400The request is missing a required parameter or is otherwise malformed.
401Missing, invalid, expired, or revoked API key.
403The key lacks the required scope, or isn't authorized for this client/location.
429Too many requests. Retry after the number of seconds in the Retry-After header.
get/api/v1/locations/media
Your API key
clientId
search
status
tags
categories
verification
createdAfter
createdBefore
cursor
limit
{
"data": {
"locations": [
{
"id": "loc_456",
"name": "Acme Dental — Downtown",
"logoUrl": null,
"mediaByCategory": {
"EXTERIOR": [
{
"url": "https://cdn.synup.com/media/1.jpg"
}
]
},
"total": 1
}
],
"nextCursor": null,
"total": 1
}
}