Locations
Créez, consultez, mettez à jour et gérez le cycle de vie d'archivage des établissements appartenant à vos clients.
Renvoie une page d'établissements, les plus récents en premier. Tous les filtres sont facultatifs et se combinent (un établissement doit correspondre à tous) ; pour parcourir plus de résultats, renvoyez le nextCursor reçu.
Lister / rechercher des établissements
/api/v1/locations{
"data": [
{
"id": "loc_456",
"name": "Acme Dental — Downtown",
"city": "Austin",
"state": "TX",
"clientId": "cli_123",
"createdAt": "2026-01-15T10:05:00.000Z"
}
]
}Crée un nouvel établissement pour un client existant et le soumet pour publication.
Créer un établissement
/api/v1/locations{
"data": {
"locationId": "loc_456"
}
}Renvoie le profil complet d'un établissement : adresse, horaires, catégories, attributs, services, médias et statut de vérification.
Obtenir un établissement
/api/v1/locations/{id}{
"data": {
"id": "loc_456",
"name": "Acme Dental — Downtown",
"description": null,
"tagline": null,
"storeCode": null,
"logoUrl": null,
"street": "123 Main St",
"street1": null,
"city": "Austin",
"state": "TX",
"postalCode": "78701",
"country": "US",
"latitude": 30.2672,
"longitude": -97.7431,
"phone": "+15125551234",
"additionalPhones": [],
"website": "https://acmedental.com",
"businessEmail": null,
"categoryName": "Dentist",
"primaryCategoryDisplay": "Dentist",
"primaryCategoryGoogle": "gcid:dentist",
"additionalCategories": [],
"attributes": [
{
"id": "attributes/wi_fi",
"value": true
}
],
"services": [
{
"name": "Teeth Whitening",
"description": null,
"price": 150,
"currency": "USD",
"googleServiceTypeId": null
}
],
"ownerName": null,
"menuUrl": null,
"yearEstablished": null,
"tags": [
"vip"
],
"labels": [],
"regularHours": [
{
"day": "MONDAY",
"closed": false,
"periods": [
{
"openTime": "09:00",
"closeTime": "17:00"
}
]
}
],
"moreHours": [],
"specialHours": [],
"mediaByCategory": {
"EXTERIOR": [
{
"url": "https://cdn.synup.com/media/1.jpg"
}
]
},
"clientId": "cli_123",
"archived": false,
"scheduledArchiveAt": null,
"verificationStatus": "verified"
}
}Modifie les informations commerciales d'un établissement existant — adresse, catégories, attributs du profil d'établissement Google, services et horaires. Envoyez uniquement les champs que vous souhaitez changer ; un champ envoyé remplace entièrement sa valeur actuelle (une chaîne vide efface un champ texte, une nouvelle liste complète remplace la liste existante). Le pays ne peut pas être modifié après la création. Les modifications enregistrées sont automatiquement mises en file d'attente pour se synchroniser vers les annuaires et fiches connectés.
Mettre à jour un établissement
/api/v1/locations/{id}{
"data": {
"location": {
"id": "loc_456",
"name": "Acme Dental — Downtown",
"tagline": "Gentle care, on time",
"city": "Austin",
"state": "TX",
"clientId": "cli_123"
},
"rejectedAttributes": []
}
}Les services du Profil d'établissement Google proposés par cet emplacement.
Lister les services d'un emplacement
/api/v1/locations/{id}/services{
"data": {
"services": [
{
"name": "Teeth Whitening",
"description": null,
"price": 150,
"currency": "USD",
"googleServiceTypeId": null
}
]
}
}Ajoute un service à la liste de l'emplacement et republie la liste complète sur Google (Google n'a pas d'ajout atomique — chaque enregistrement remplace tout le tableau).
Ajouter un service
/api/v1/locations/{id}/services{
"data": {
"services": [
{
"name": "Teeth Whitening",
"description": null,
"price": 150,
"currency": "USD",
"googleServiceTypeId": null
}
]
}
}Supprime un service par son nom et republie la liste restante sur Google.
Supprimer un service
/api/v1/locations/{id}/services{
"data": {
"services": []
}
}PLANIFIE l'archivage d'un établissement à la fin de la période de facturation en cours. L'établissement reste pleinement actif, facturable, et continue de compter dans la limite d'établissements du plan jusque-là — rien n'est supprimé, et la planification ne libère pas de place pour ajouter un autre établissement avant que l'archivage n'ait réellement lieu. Appelez cancel-archive pour annuler cela avant qu'il ne se produise, ou reactivate ensuite pour restaurer l'établissement.
Planifier l'archivage d'un établissement
/api/v1/locations/{id}/archive{
"data": {
"scheduled": true,
"scheduledArchiveAt": "2026-02-01T00:00:00.000Z",
"archiveAt": "2026-03-01T00:00:00.000Z"
}
}Annule un archivage d'établissement en attente, afin qu'un établissement planifié pour archivage à la fin de la période de facturation continue normalement. Ne fonctionne que tant que l'archivage est encore en attente — un établissement déjà archivé doit plutôt être réactivé.
Annuler un archivage planifié
/api/v1/locations/{id}/cancel-archive{
"data": {
"cancelled": true
}
}Restaure un établissement déjà archivé — ainsi que chacune de ses fiches — et efface toute planification d'archivage en attente. Un établissement qui n'est pas actuellement archivé se traduit par un succès sans effet, pas par une erreur.
Réactiver un établissement archivé
/api/v1/locations/{id}/reactivate{
"data": {
"archived": false,
"cancelledScheduledPosts": 0
}
}Renvoie le nombre agrégé d'emplacements de toute votre agence (ou d'un client), ventilé par statut, niveau de forfait et statut de vérification.
Obtenir le résumé des emplacements
/api/v1/locations/summary{
"data": {
"total": 12,
"byStatus": {
"approved": 10,
"pending_verification": 1,
"archival_pending": 1
},
"byVerification": {
"verified": 9,
"pending": 1,
"unknown": 2
}
}
}{
"data": {
"id": "tag_789",
"name": "VIP",
"clientId": "cli_123"
}
}{
"data": {
"locationsUnassigned": 3
}
}{
"data": {
"added": [
"loc_456"
],
"skipped": []
}
}{}Recherche dans la taxonomie générale des catégories d'entreprise (reflète celle de Google, des milliers d'entrées) — données de référence globales, non limitées à votre agence. L'id renvoyé est un id de Category à définir comme categoryId d'un emplacement à la création ou la mise à jour. Pour le catalogue propre d'un publisher spécifique, utilisez plutôt GET /api/v1/locations/publisher-categories. Omettez complètement search pour lister toute la taxonomie, sans limite.
Rechercher dans la taxonomie de catégories générales
/api/v1/locations/categories{
"data": {
"categories": [
{
"id": "cat_dentist",
"name": "Dentist"
},
{
"id": "cat_orthodontist",
"name": "Orthodontist"
}
]
}
}Recherche dans le catalogue propre (GABF) d'un publisher — données de référence globales, non limitées à votre agence. Utilisez l'id renvoyé pour les publisherCategories d'un emplacement à la création ou la mise à jour. Omettez complètement query pour lister tout le catalogue du publisher, sans limite.
Rechercher dans le catalogue de catégories propre à un publisher
/api/v1/locations/publisher-categories{
"data": {
"categories": [
{
"id": "gcid:dentist",
"displayName": "Dentist"
}
]
}
}Liste les établissements avec leurs photos, les plus récents en premier — mêmes filtres que GET /api/v1/locations. Utilisez ceci pour des questions comme « quels établissements n'ont pas de photos ? », plutôt que GET /api/v1/media, qui ne renvoie les médias que d'UN seul établissement à la fois.
Lister les établissements avec leurs médias
/api/v1/locations/media{
"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
}
}Ajoute une ou plusieurs photos à un établissement, dans une catégorie donnée. Fournissez chaque image sous forme d'URL https publique (récupérée et réhébergée) ou d'octets encodés en base64. Seules les images sont prises en charge (jpeg, png, gif, webp), 5 Mo maximum chacune. La catégorie LOGO ne contient qu'un seul logo — téléverser vers LOGO remplace celui en cours. Toute autre catégorie s'ajoute à l'existant. Les photos enregistrées sont automatiquement mises en file d'attente pour être publiées sur Google.
Téléverser des photos vers un établissement
/api/v1/locations/{id}/media{
"data": {
"mediaByCategory": {
"EXTERIOR": [
{
"url": "https://cdn.synup.com/media/1.jpg",
"source": "agent_upload"
}
]
},
"added": [
{
"category": "EXTERIOR",
"url": "https://cdn.synup.com/media/1.jpg"
}
]
}
}Retire des photos d'un établissement. Transmettez urls pour supprimer des photos spécifiques, ou category pour vider une catégorie entière. Le logo ne peut jamais être supprimé via cet endpoint — ni par url ni par category — téléversez plutôt une nouvelle image LOGO pour le remplacer. Cela retire les photos dans l'application ; cela ne les supprime pas de Google.
Supprimer les photos d'un établissement
/api/v1/locations/{id}/media{
"data": {
"mediaByCategory": {
"EXTERIOR": []
},
"removed": [
"https://cdn.synup.com/media/1.jpg"
]
}
}