POST/api/v4/posts

Teklif gönderisi oluşturun

Bir veya daha fazla konum için seçilen sitelerde yayımlanan, kupon, indirim ve koşullar içeren bir OFFER sosyal medya gönderisi oluşturur.

API anahtarı gerektirir. Başlık biçimi ve anahtar yenileme için Kimlik doğrulama bölümüne bakın.

Parametreler

Gövde

AdTürZorunluAçıklama
inputobjectzorunluWrapper object. Every field below is a property of `input`, the entire body must be nested under it.
input.postNamestringzorunluInternal name for the campaign (not shown to customers).
input.locationIdsarray of stringszorunluBase64-encoded location IDs to publish to (e.g. `TG9jYXRpb246MTgwMDI4OQ==`).
input.postTypestringzorunluMust be `OFFER`. One of EVENT, OFFER, ANNOUNCEMENT, COVID19, PRODUCT.
input.postSitesarray of stringszorunluSites to publish to: `GOOGLE`, `FACEBOOK`.
input.postContextInfoobjectisteğe bağlıOffer details: `{ title, couponCode, discount, redeemUrl, termsConditions, startDay, endDay }`. `title` labels the offer; `startDay`/`endDay` bound its validity.
input.postMessagearray of objectsisteğe bağlıPer-site body text: `{ site, message }`. One entry per site in `postSites`.
input.postScheduledDatesobjectisteğe bağlıWhen to publish/expire the post itself: `{ startDatetime, endDatetime, removalSites }`. Distinct from the offer validity in `postContextInfo`.
input.postCtaarray of objectsisteğe bağlıOptional call-to-action per site: `{ site, type, url }`. The `CTAType` enum accepts BOOK, ORDER, SHOP, LEARN_MORE, SIGN_UP, and GET_OFFER. There is no `REDEEM`. For offer posts, Google takes ORDER and Facebook takes GET_OFFER.
input.postMediaUrlarray of objectsisteğe bağlıOptional media per site: `{ site, url, type }` where `type` is IMAGE or VIDEO.
input.clientMutationIdstringisteğe bağlıOptional client token returned unchanged in the response for correlation.

Örnek istek

Yapıştırmaya hazır gövde. Yer tutucu kimlikleri ve değerleri kendi değerlerinizle değiştirin.

Request body
{  "input": {    "postName": "Diwali 25% Off",    "locationIds": ["TG9jYXRpb246MTgwMDI4OQ=="],    "postType": "OFFER",    "postSites": ["GOOGLE"],    "postContextInfo": {      "title": "25% off storewide",      "couponCode": "DIWALI25",      "discount": "25%",      "redeemUrl": "https://jennyhome.example/diwali",      "termsConditions": "Valid in-store only through July 6. Cannot be combined with other offers.",      "startDay": "2026-06-22",      "endDay": "2026-07-06"    },    "postMessage": [      { "site": "GOOGLE", "message": "Celebrate with us: 25% off everything in store this festive week." }    ],    "postCta": [      { "site": "GOOGLE", "type": "GET_OFFER", "url": "https://jennyhome.example/diwali" }    ],    "postMediaUrl": [      { "site": "GOOGLE", "url": "https://cdn.example.com/diwali.jpg", "type": "IMAGE" }    ]  }}

Yanıtlar

200Post accepted. Publishing runs asynchronously, the returned post starts as INPROGRESS.
Response
{  "data": {    "createSocialPost": {      "clientMutationId": null,      "success": true,      "errors": [],      "socialPost": {        "id": "U29jaWFsUG9zdDo0NDEyNA==",        "name": "Diwali 25% Off",        "status": "INPROGRESS",        "type": "OFFER",        "createdAt": "2026-06-20",        "scheduledStartDate": "2026-06-22",        "scheduledEndDate": "2026-07-06",        "sites": ["GOOGLE"],        "message": [          { "site": "GOOGLE", "message": "Celebrate with us: 25% off everything in store this festive week." }        ],        "cta": [          { "type": { "value": "GET_OFFER", "label": "Get offer" }, "url": "https://jennyhome.example/diwali", "site": "GOOGLE", "tinyUrl": null }        ],        "contextInfo": {          "title": "25% off storewide",          "couponCode": "DIWALI25",          "discount": "25%",          "redeemUrl": "https://jennyhome.example/diwali",          "termsConditions": "Valid in-store only through July 6. Cannot be combined with other offers.",          "startDay": "2026-06-22",          "endDay": "2026-07-06",          "startTime": null,          "endTime": null,          "locationType": null        },        "mediaUrl": [          { "url": "https://cdn.example.com/diwali.jpg", "site": "GOOGLE", "type": "IMAGE" }        ],        "publishDetails": [          { "site": "GOOGLE", "status": "PUBLISHING", "createdDate": "2026-06-20", "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.

Bir teklif gönderisi oluşturur: kupon kodu, indirim, yararlanma bağlantısı ve koşullar içeren bir promosyon kartı. Teklifin ayrıntıları postContextInfo içinde yer alır (title, couponCode, discount, redeemUrl, termsConditions, startDay, endDay). Teklifler, GET_OFFER CTA'sı ile kullanıma uygundur.

Kullanım senaryosu: süreli bir promosyon yürütün. Jenny Home için 22 Haziran–6 Temmuz tarihleri arasında geçerli, DIWALI25 kuponu ve bir yararlanma URL'si içeren "Diwali %25 İndirim" teklifini başlatın. postType: "OFFER" alanını ayarlayın, postContextInfo alanını doldurun ve bir GET_OFFER CTA'sı ekleyin. Çağrı status: INPROGRESS döndürür; GET /posts/{postId} ile gönderinin her sitede yayımlandığını doğrulayın ve promosyon sona ererse DELETE /posts/{postId} ile gönderiyi süresi dolmadan silin.

Notlar.

  • İstek gövdesi bir input nesnesi içine yerleştirilmelidir: her alan, input nesnesinin bir özelliğidir. Bir nesne içine yerleştirilmemiş düz bir gövde, HTTP 400 (Variable "$input" of required type "CreateSocialPostMutationInput!" was not provided) ile reddedilir.
  • postContextInfo.startDay/endDay, teklifin geçerlilik süresini sınırlar; ayrıca gönderinin ne zaman yayımlanacağını ve süresinin ne zaman dolacağını bağımsız olarak planlamak istiyorsanız postScheduledDates kullanın.
  • postSites içindeki her site için bir postMessage girdisi sağlayın.
  • Basit güncellemeler için duyuruları; belirli tarihlerde gerçekleşen faaliyetler için etkinlikleri kullanın.

Yazma işlemi: canlı hesap üzerinde yürütülmemiştir. Gösterilen istek ve yanıt API şemasından oluşturulmuştur; bu işlem çalıştırıldığında gerçek Google/Facebook profillerinde gönderi yayımlar.

Request
curl -X POST 'https://listingsapi.com/api/v4/posts' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "input": {      "postName": "Diwali 25% Off",      "locationIds": [        "TG9jYXRpb246MTgwMDI4OQ=="      ],      "postType": "OFFER",      "postSites": [        "GOOGLE"      ],      "postContextInfo": {        "title": "25% off storewide",        "couponCode": "DIWALI25",        "discount": "25%",        "redeemUrl": "https://jennyhome.example/diwali",        "termsConditions": "Valid in-store only through July 6. Cannot be combined with other offers.",        "startDay": "2026-06-22",        "endDay": "2026-07-06"      },      "postMessage": [        {          "site": "GOOGLE",          "message": "Celebrate with us: 25% off everything in store this festive week."        }      ],      "postCta": [        {          "site": "GOOGLE",          "type": "GET_OFFER",          "url": "https://jennyhome.example/diwali"        }      ],      "postMediaUrl": [        {          "site": "GOOGLE",          "url": "https://cdn.example.com/diwali.jpg",          "type": "IMAGE"        }      ]    }  }'