/api/v4/postsCréer une publication d’événement
Crée une publication sociale EVENT avec un titre et une période de début et de fin, publiée sur les sites choisis pour un ou plusieurs établissements.
Paramètres
Corps
| Nom | Type | Obligatoire | Description |
|---|---|---|---|
| input | object | obligatoire | Wrapper object. Every field below is a property of `input`, the entire body must be nested under it. |
| input.postName | string | obligatoire | Internal name for the campaign (not shown to customers). |
| input.locationIds | array of strings | obligatoire | Base64-encoded location IDs to publish to (e.g. `TG9jYXRpb246MTgwMDI4OQ==`). |
| input.postType | string | obligatoire | Must be `EVENT`. One of EVENT, OFFER, ANNOUNCEMENT, COVID19, PRODUCT. |
| input.postSites | array of strings | obligatoire | Sites to publish to: `GOOGLE`, `FACEBOOK`. |
| input.postContextInfo | object | facultatif | Event details: `{ title, startDay, startTime, endDay, endTime }`. `title` is required by Google for events; `startDay`/`endDay` are dates, `startTime`/`endTime` are display strings like `10:00am`. |
| input.postMessage | array of objects | facultatif | Per-site body text: `{ site, message }`. One entry per site in `postSites`. |
| input.postScheduledDates | object | facultatif | When to publish/expire the post itself: `{ startDatetime, endDatetime, removalSites }`. Distinct from the event's own dates in `postContextInfo`. |
| input.postCta | array of objects | facultatif | Optional call-to-action per site: `{ site, type, url }`. `type` is one of BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, GET_OFFER. |
| input.postMediaUrl | array of objects | facultatif | Optional media per site: `{ site, url, type }` where `type` is IMAGE or VIDEO. |
| input.clientMutationId | string | facultatif | Optional client token returned unchanged in the response for correlation. |
Exemple de requête
Corps prêt à coller. Remplacez les identifiants et valeurs d’exemple par les vôtres.
{ "input": { "postName": "Summer Sale Kickoff Event", "locationIds": ["TG9jYXRpb246MTgwMDI4OQ=="], "postType": "EVENT", "postSites": ["GOOGLE"], "postContextInfo": { "title": "Summer Sale Kickoff", "startDay": "2026-07-15", "startTime": "10:00am", "endDay": "2026-07-15", "endTime": "06:00pm" }, "postMessage": [ { "site": "GOOGLE", "message": "Join us for the Summer Sale kickoff, refreshments, giveaways, and up to 40% off in store." } ], "postCta": [ { "site": "GOOGLE", "type": "LEARN_MORE", "url": "https://jennyhome.example/summer-event" } ], "postMediaUrl": [ { "site": "GOOGLE", "url": "https://cdn.example.com/summer-event.jpg", "type": "IMAGE" } ] }}Réponses
200Post accepted. Publishing runs asynchronously, the returned post starts as INPROGRESS.
{ "data": { "createSocialPost": { "clientMutationId": null, "success": true, "errors": [], "socialPost": { "id": "U29jaWFsUG9zdDo0NDEyMw==", "name": "Summer Sale Kickoff Event", "status": "INPROGRESS", "type": "EVENT", "createdAt": "2026-07-01", "scheduledStartDate": "2026-07-15", "scheduledEndDate": "2026-07-15", "sites": ["GOOGLE"], "message": [ { "site": "GOOGLE", "message": "Join us for the Summer Sale kickoff, refreshments, giveaways, and up to 40% off in store." } ], "cta": [ { "type": { "value": "LEARN_MORE", "label": "Learn more" }, "url": "https://jennyhome.example/summer-event", "site": "GOOGLE", "tinyUrl": null } ], "contextInfo": { "title": "Summer Sale Kickoff", "startDay": "2026-07-15", "startTime": "10:00am", "endDay": "2026-07-15", "endTime": "06:00pm", "couponCode": null, "redeemUrl": null, "termsConditions": null, "discount": null, "locationType": null }, "mediaUrl": [ { "url": "https://cdn.example.com/summer-event.jpg", "site": "GOOGLE", "type": "IMAGE" } ], "publishDetails": [ { "site": "GOOGLE", "status": "PUBLISHING", "createdDate": "2026-07-01", "submissionError": null } ], "postLinks": [], "locationIds": [1800289] } } }}400Bad request, the body was not wrapped in `input` (error message: `Variable "$input" of required type "CreateSocialPostMutationInput!" was not provided`).
401Unauthenticated, missing or invalid API key.
Crée une publication d’événement : une annonce datée avec un title et une période de début et de fin, qui s’affiche sous forme de carte d’événement sur Google. Le calendrier propre à l’événement se trouve dans postContextInfo (title, startDay, startTime, endDay, endTime) ; le paramètre facultatif postScheduledDates détermine quand la publication elle-même est publiée et retirée, ce qui correspond généralement à la période précédant l’événement.
Cas d’utilisation : promouvoir un événement en magasin. Annoncez un « Lancement des soldes d’été » pour Jenny Home, avec une période d’événement fixée au 15 juillet et un appel à l’action LEARN_MORE vers la page de l’événement. Définissez postType: "EVENT" et renseignez postContextInfo.title : Google rejette les événements sans titre. L’appel renvoie status: INPROGRESS ; vérifiez avec GET /posts/{postId} que l’état SUCCESS est atteint.
Remarques.
- Le corps de la requête doit être enveloppé dans un objet
input: chaque champ est une propriété deinput. Un corps à plat, sans cette enveloppe, est rejeté avec un statut HTTP 400 (Variable "$input" of required type "CreateSocialPostMutationInput!" was not provided). postContextInfocontient les dates de l’événement ;postScheduledDatescontient les dates de publication. UtilisezpostScheduledDates.startDatetime/endDatetimepour programmer la publication à l’avance et la faire expirer automatiquement après l’événement.- Fournissez une entrée
postMessagepour chaque site danspostSites. - Pour un simple message sans dates, utilisez les annonces ; pour les coupons ou les réductions, utilisez les offres.
Opération d’écriture : non exécutée sur le compte réel. La requête et la réponse présentées sont construites à partir du schéma de l’API ; l’exécution de cette opération publie sur de vrais profils Google/Facebook.
curl -X POST 'https://listingsapi.com/api/v4/posts' \ -H "Authorization: API $LISTINGSAPI_KEY" \ -H 'Content-Type: application/json' \ -d '{ "input": { "postName": "Summer Sale Kickoff Event", "locationIds": [ "TG9jYXRpb246MTgwMDI4OQ==" ], "postType": "EVENT", "postSites": [ "GOOGLE" ], "postContextInfo": { "title": "Summer Sale Kickoff", "startDay": "2026-07-15", "startTime": "10:00am", "endDay": "2026-07-15", "endTime": "06:00pm" }, "postMessage": [ { "site": "GOOGLE", "message": "Join us for the Summer Sale kickoff, refreshments, giveaways, and up to 40% off in store." } ], "postCta": [ { "site": "GOOGLE", "type": "LEARN_MORE", "url": "https://jennyhome.example/summer-event" } ], "postMediaUrl": [ { "site": "GOOGLE", "url": "https://cdn.example.com/summer-event.jpg", "type": "IMAGE" } ] } }'