GET/api/v4/bulk-posts/{postId}

Récupérer une publication groupée par ID

Renvoie une campagne groupée multi-établissements avec son contenu, le statut de publication par établissement et les statistiques d’engagement.

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
postIdstringobligatoireBase64-encoded bulk post ID (the `id` returned by POST /bulk-posts or listed by GET /locations/{locationId}/bulk-posts).

Réponses

200The campaign's content, per-location publish details, and analytics.
Response
{  "data": {    "socialPostView": {      "socialPostId": "U29jaWFsUG9zdDo1MTA4OA==",      "socialPostInfo": {        "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]      },      "publishedLocationsCount": 3,      "socialPostAnalyticsBySite": [        { "site": "GOOGLE", "views": 3120, "clicks": 240, "reactions": 61, "shares": 0, "comments": 0 },        { "site": "FACEBOOK", "views": 1090, "clicks": 78, "reactions": 26, "shares": 12, "comments": 4 }      ],      "socialPostAnalyticsByLocationId": [        {          "locationId": 1800289,          "siteStats": [            { "site": "GOOGLE", "status": "PUBLISHED", "views": 1040, "clicks": 80, "reactions": 20, "shares": 0, "comments": 0 },            { "site": "FACEBOOK", "status": "PUBLISHED", "views": 360, "clicks": 26, "reactions": 9, "shares": 4, "comments": 1 }          ]        }      ]    }  }}
401Unauthenticated, missing or invalid API key.

L’équivalent de GET /posts/{postId} pour les publications groupées. Il renvoie la même structure SocialPostView pour une campagne publiée dans plusieurs établissements à la fois, de sorte que publishedLocationsCount est supérieur à 1 et que socialPostAnalyticsByLocationId contient une ligne par magasin.

Cas d’utilisation : suivre un déploiement dans l’ensemble d’une chaîne. Après avoir appelé POST /bulk-posts pour une offre de fêtes dans tous les magasins, interrogez régulièrement GET /bulk-posts/{postId} jusqu’à ce que socialPostInfo.status soit SUCCESS. Consultez ensuite socialPostAnalyticsByLocationId pour voir quels magasins ont généré le plus de clics, et examinez publishDetails (ainsi que siteStats.status pour chaque établissement) pour trouver les magasins pour lesquels un site a renvoyé ERROR.

Remarques.

  • postId est la valeur id encodée en Base64 renvoyée par l’appel de création groupée ou par la liste des publications groupées, et non un entier brut.
  • socialPostAnalyticsBySite agrège les données de tous les établissements de la campagne ; socialPostAnalyticsByLocationId détaille ces mêmes chiffres par magasin.

Cet exemple est construit à partir du schéma de l’API. Le compte de référence en ligne (Jenny Home) ne contient aucune campagne de publication groupée ; il n’y avait donc aucun ID réel à utiliser pour la récupération ; un ID inconnu ou invalide entraîne le renvoi de {"data":null,"errors":[{"message":"An error occurred processing your request."}]}.

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