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

사업장의 일괄 게시물 조회

단일 사업장이 포함된 일괄(여러 사업장 대상) 게시물 캠페인을 페이지 단위로 반환합니다.

API 키가 필요합니다. 헤더 형식과 키 교체는 인증을 참고하세요.

매개변수

경로

이름유형필수설명
locationIdstring필수Base64-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.

쿼리

이름유형필수설명기본값
pageinteger선택1-based page number for offset pagination.1
perPageinteger선택Number of records per page.—
filtersstring선택JSON-encoded SocialPostFiltersInput (e.g. by `type`, `status`, `creationDateRange`, `siteUrls`).—
sortFieldsstring선택JSON-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.—
locationIdsstring선택JSON-encoded array of location IDs to include alongside the path location.—
componentIdentifierstring선택Filter to campaigns created by a specific component/integration.—

응답

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.

일괄 게시물은 여러 사업장에 한 번에 게시하는 하나의 캠페인입니다(POST /bulk-posts를 통해 생성합니다). 이 엔드포인트는 지정된 사업장이 포함된 일괄 캠페인 목록을 제공하므로, 단일 매장의 관점에서 여러 매장의 통합 현황을 확인할 수 있습니다. 응답 구조는 GET /locations/{locationId}/posts와 동일하며, 여기의 레코드는 여러 locationIds에 걸쳐 있다는 점만 다릅니다.

사용 사례: 체인 전체의 캠페인 배포 결과 대조. 모든 매장에서 "Diwali Offer"를 시작한 후, 매장 중 어느 한 곳에서 GET /locations/1800289/bulk-posts를 호출하여 해당 매장에 캠페인이 도달했는지 확인하고, 공유 contextInfo(쿠폰 코드, 할인, 약관)를 살펴보고, 사이트별 publishDetails를 읽어 해당 사업장의 FACEBOOK submissionError를 찾아냅니다.

주의 사항.

  • 단일 사업장 목록과 마찬가지로 페이지네이션은 page/perPage를 사용하는 오프셋 기반이며, sortFields는 배열이 아닌 단일 객체이고, 폴링을 과도하게 수행하면 HTTP 429가 반환될 수 있습니다.
  • 각 레코드의 locationIds는 캠페인이 대상으로 삼은 전체 집합이므로, 경로에 있는 ID 외의 ID도 포함합니다.

위의 records 배열은 대표적인 예시입니다. 실제 시드 사업장(Jenny Home)에는 일괄 캠페인이 없으므로, 실제로 호출하면 pageInfo.totalRecords: 0과 함께 records: []가 반환됩니다.

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