GET/api/v4/social/bulk-posts/{bulkJobId}

일괄 게시물 작업 조회

일괄 소셜 게시물 작업의 상태, 집계 수치 및 행별 결과를 반환합니다.

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

매개변수

경로

이름유형필수설명
bulkJobIdstring필수Job UUID, the `job.id` returned by POST /social/bulk-posts.

응답

200The job with its counts and one entry per submitted row.
Response
{  "data": {    "getBulkSocialPostJob": {      "id": "9b3f18d0-7a26-4c51-8e94-1f0d5c6b7a82",      "status": "COMPLETED_WITH_ERRORS",      "totalCount": 3,      "processedCount": 3,      "successCount": 2,      "failureCount": 1,      "createdAt": "2026-09-28T14:04:52Z",      "updatedAt": "2026-09-28T14:05:31Z",      "results": [        {          "index": 0,          "clientReference": "campaign-4471-slot-01",          "socialProfileId": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",          "platforms": ["INSTAGRAM", "FACEBOOK"],          "status": "CREATED",          "socialPostId": "c47a1e58-2b93-4f10-a6d7-58e0c9b12345",          "postStatus": "SCHEDULED",          "errors": []        },        {          "index": 1,          "clientReference": "campaign-4471-slot-02",          "socialProfileId": "6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902",          "platforms": ["INSTAGRAM", "FACEBOOK", "LINKEDIN"],          "status": "CREATED",          "socialPostId": "e08b2d97-6f14-4c22-b7a5-9d3e1f6c4a70",          "postStatus": "SCHEDULED",          "errors": []        },        {          "index": 2,          "clientReference": "campaign-4471-slot-03",          "socialProfileId": "a90f7c22-5db1-4e83-9f40-2b7c6a1e5d33",          "platforms": ["INSTAGRAM"],          "status": "FAILED",          "socialPostId": null,          "postStatus": null,          "errors": [            {              "message": "SY95045: No connected channel for INSTAGRAM on this brand",              "code": "SY95045",              "contextInfo": [{ "key": "platform", "value": "INSTAGRAM" }]            }          ]        }      ]    }  }}
401Unauthenticated, missing or invalid API key.
404No job with that ID on this account (`SY95047`).

POST /social/bulk-posts로 생성한 작업의 정보를 제공합니다. status가 종료 상태 값에 도달할 때까지 폴링한 다음, results[]를 읽어 각 행의 처리 결과를 확인합니다.

사용 사례: 일괄 등록 결과를 자체 캘린더에 반영. 배치를 제출한 후 몇 초 간격으로 이 엔드포인트를 폴링합니다. status가 종료 상태가 되면 results[]를 순회하면서 각 항목의 clientReference를 자체 레코드와 대조하고, 해당 레코드에 socialPostId를 기록합니다. status: "FAILED"인 행에는 errors[]에 사유가 포함되어 있으며, 해당 행만 새 배치로 다시 전송합니다.

사용 사례: 진행률 표시줄. results[]를 전혀 순회하지 않아도 totalCount 대비 processedCount만으로 진행률 표시줄을 구현할 수 있으며, 작업이 완료되는 즉시 successCount / failureCount로 주요 결과를 확인할 수 있습니다.

작업 상태

status종료 상태 여부의미
QUEUED아니요접수되었지만 아직 시작되지 않았습니다. results[]가 비어 있을 수 있습니다.
PROCESSING아니요행을 생성하는 중입니다. 진행됨에 따라 results[]가 채워집니다.
COMPLETED예모든 행이 생성되었습니다.
COMPLETED_WITH_ERRORS예일부 행은 생성되었고, 일부 행은 실패했습니다. failureCount와 행별 errors[]를 확인합니다.
FAILED예작업 자체를 실행할 수 없었습니다. 생성된 행이 없습니다.

참고 사항.

  • clientReference는 해당 행에서 전송한 값을 그대로 반환한 것입니다. 자체 데이터와 연결하는 가장 명확한 수단이며, 값을 전송하지 않은 경우에는 제출한 배열에서 해당 행의 0부터 시작하는 위치인 index를 대신 사용합니다.
  • 행이 status: "CREATED"에 도달했다는 것은 게시물이 존재한다는 뜻이며, 게시되었다는 뜻은 아닙니다. 게시물 자체의 현재 상태는 postStatus로 확인합니다. PUBLISH 및 SCHEDULE인 행도 이후 비동기 게시 파이프라인을 거치므로, 각 socialPostId를 GET /social/posts/{postId}에 전달하고 channels[]를 읽어 실제 채널별 결과를 확인합니다.
  • 모든 행이 유효성 검사에 실패한 작업은 애초에 생성되지 않습니다. 일괄 생성이 대기열에 추가하기 전에 배치를 거부하기 때문입니다. 여기서 FAILED인 작업은 접수된 후 작업에 문제가 발생했다는 뜻입니다.
  • updatedAt은 행이 처리됨에 따라 바뀌며, 작업이 종료 상태가 되면 확정됩니다.
Request
curl -X GET 'https://listingsapi.com/api/v4/social/bulk-posts/<bulkJobId>' \  -H "Authorization: API $LISTINGSAPI_KEY"