GET/api/v4/locations/{locationId}/bulk-posts

Récupérer les publications groupées pour un établissement

Renvoie une page de campagnes de publications groupées (multi-établissements) qui incluent un établissement donné.

Nécessite une clé API. Consultez Authentification pour le format de l’en-tête et la rotation des clés.

Paramètres

Chemin

NomTypeObligatoireDescription
locationIdstringobligatoireBase64-encoded location cursor / global ID (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). Pass it unchanged, do not URL-encode it. The base64 cursor always resolves; the raw numeric database ID also works on this endpoint, but the base64 form is the portable choice across the API.

Chaîne de requête

NomTypeObligatoireDescriptionPar défaut
pageintegerfacultatif1-based page number for offset pagination.1
perPageintegerfacultatifNumber of records per page.—
filtersstringfacultatifJSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`).—
sortFieldsstringfacultatifJSON-encoded sort object `{ "field": "created_at", "order": "Descending" }`. `field` is one of name, type, status, created_at, schedule_start_date, schedule_end_date, client_name, clicks, views, shares.—
locationIdsstringfacultatifJSON-encoded array of location IDs to include alongside the path location.—
componentIdentifierstringfacultatifFilter to campaigns created by a specific component/integration.—

Réponses

200A page of bulk campaigns that include the location. `records` is empty when no bulk campaign has targeted it.
Response
{  "data": {    "rollupSocialPosts": {      "records": [        {          "id": "U29jaWFsUG9zdDo1MTA4OA==",          "name": "Diwali Offer - All Stores",          "status": "SUCCESS",          "type": "OFFER",          "createdAt": "2026-06-20",          "scheduledStartDate": "2026-06-22",          "scheduledEndDate": "2026-07-06",          "views": 4210,          "clicks": 318,          "shares": 12,          "reactions": 87,          "comments": 4,          "sites": ["GOOGLE", "FACEBOOK"],          "message": [            { "site": "GOOGLE", "message": "Festive savings across all our stores this week." },            { "site": "FACEBOOK", "message": "Festive savings across all our stores this week!" }          ],          "cta": [            { "type": { "value": "GET_OFFER", "label": "Get offer" }, "url": "https://jennyhome.example/diwali", "site": "GOOGLE", "tinyUrl": "https://tiny.cc/jh-diwali" }          ],          "contextInfo": {            "couponCode": "DIWALI25",            "redeemUrl": "https://jennyhome.example/diwali",            "termsConditions": "Valid in-store only. Cannot be combined with other offers.",            "title": "25% off storewide",            "discount": "25%",            "startDay": "2026-06-22",            "endDay": "2026-07-06"          },          "mediaUrl": [            { "url": "https://cdn.listingsapi.com/posts/51088/diwali.jpg", "site": "GOOGLE", "type": "IMAGE" }          ],          "publishDetails": [            { "site": "GOOGLE", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null },            { "site": "FACEBOOK", "status": "PUBLISHED", "createdDate": "2026-06-20", "publishedDate": "2026-06-22", "submissionError": null }          ],          "postLinks": [            { "site": "GOOGLE", "link": "https://www.google.com/maps/place/?post=51088" }          ],          "locationIds": [1800289, 1800290, 1800291],          "clientName": "Jenny Home"        }      ],      "locationDetails": [        {          "id": "TG9jYXRpb246MTgwMDI4OQ==",          "name": "Jenny Home",          "street": "600 Congress Ave, Suite 200",          "city": "Austin",          "postalCode": "78701",          "countryIso": "US",          "stateIso": "TX",          "stateName": "Texas",          "storeId": null        }      ],      "pageInfo": {        "totalPages": 1,        "hasNextPage": false,        "hasPreviousPage": false,        "totalRecords": 1      }    }  }}
401Unauthenticated, missing or invalid API key.
429Rate limit exceeded. Retry after the `Retry-After` header value.

Une publication groupée est une campagne publiée dans plusieurs établissements à la fois (créée via POST /bulk-posts). Cet endpoint répertorie les campagnes groupées qui incluent l'établissement donné, afin que vous puissiez consulter les données agrégées de plusieurs magasins du point de vue d'un seul magasin. La structure de la réponse est identique à celle de GET /locations/{locationId}/posts ; les enregistrements couvrent simplement ici plusieurs locationIds.

Cas d'utilisation : vérifier la cohérence d'un déploiement à l'échelle d'une chaîne. Après avoir lancé une « Offre Diwali » dans tous les magasins, appelez GET /locations/1800289/bulk-posts depuis n'importe lequel d'entre eux pour confirmer que la campagne y a bien été diffusée, examinez le contextInfo partagé (code promotionnel, remise, conditions) et consultez le publishDetails par site pour repérer un FACEBOOK submissionError pour cet établissement.

Points de vigilance.

  • Comme pour la liste d'un seul établissement : la pagination repose sur un décalage via page/perPage, sortFields est un objet unique (et non un tableau), et des interrogations trop fréquentes peuvent entraîner le renvoi du statut HTTP 429.
  • locationIds dans chaque enregistrement correspond à l'ensemble complet des établissements ciblés par la campagne ; il contiendra des identifiants autres que celui figurant dans le chemin.

Le tableau records ci-dessus est représentatif. L'établissement de référence utilisé dans l'environnement réel (Jenny Home) n'a aucune campagne groupée ; un appel réel renvoie donc records: [] avec pageInfo.totalRecords: 0.

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