Admin APIMeta Marketing Insights
GET /ai/business/meta/campaigns/{campaignId}/adsets
Meta 광고세트 목록 조회 (기업 회원용)
광고세트 목록 조회
특정 캠페인에 속한 광고세트 목록을 조회합니다. 각 광고세트 응답에는 하위 광고(ads)가 중첩 임베딩되어 함께 반환됩니다 — Meta Graph API의 ?fields=...,ads{...} nested edge 응답과 동일한 형식.
production 환경에서 매시간 두 번 (:10 active batch — 최근 90일 일별 인사이트 갱신, :30 inactive backfill — PAUSED 캠페인 lifetime 보강) 이 5개 광고계정(글로우비/디웨더/리빙/Supera/건식건기식) 의 트리·일별 인사이트를 TB_META_OBJECT_SNAPSHOT / TB_META_INSIGHT_DAILY 에 적재하며 광고 cover 이미지도 함께 S3 백업합니다. 응답은 DB-first. 요청 기간이 적재 범위(최근 90일)를 벗어나면 Meta API 로 자동 fallback 후 DB upsert.
HTTP 요청
GET /ai/business/meta/campaigns/{campaignId}/adsets
Authorization: Bearer {business_access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
campaignId | String | 예 | 캠페인 ID |
Query Parameters
| 파라미터 | 기본값 | 설명 |
|---|---|---|
status | (없음) | 상태 필터 (ACTIVE, PAUSED 등) |
q | (없음) | 광고세트 이름 부분일치 (case-insensitive) |
page | 0 | 페이지 번호 (0-base) |
size | 50 | 페이지 크기 (1~200) |
sort | lastSyncedAt,desc | 정렬 (name, status, objective, startTime, endTime, lastSyncedAt) |
응답
성공 응답 (200 OK)
응답의 data 는 Spring Page 형식 (content, totalElements, totalPages, …):
{
"status": 200,
"code": null,
"message": "광고세트 목록 조회 완료",
"data": {
"content": [
{
"id": "987654321",
"name": "Female 20-35 Seoul",
"status": "ACTIVE",
"campaignId": "123456789",
"dailyBudget": "5000",
"lifetimeBudget": null,
"startTime": "2024-03-01T00:00:00+0000",
"endTime": null,
"representativeImageUrl": "https://d3mp6eqt0w2808.cloudfront.net/img/meta/creative/image/...",
"ads": {
"data": [
{
"id": "111222333",
"name": "스킨케어 광고 #1",
"status": "ACTIVE",
"adsetId": "987654321",
"campaignId": "123456789",
"createdTime": "2024-03-01T00:00:00+0000",
"updatedTime": "2024-03-15T00:00:00+0000",
"imageUrl": "https://d3mp6eqt0w2808.cloudfront.net/img/meta/creative/image/111222333-creativeXYZ"
}
],
"paging": null
}
}
],
"totalElements": 1,
"totalPages": 1,
"number": 0,
"size": 50,
"first": true,
"last": true,
"numberOfElements": 1,
"empty": false
}
}응답 필드 설명
| 필드 | 타입 | 설명 |
|---|---|---|
id | String | 광고세트 ID |
name | String | 광고세트명 |
status | String | 상태 (ACTIVE, PAUSED, DELETED, ARCHIVED) |
campaignId | String | 상위 캠페인 ID |
dailyBudget | String | 일일 예산 |
lifetimeBudget | String | 총 예산 |
startTime | String | 시작 시간 |
endTime | String | 종료 시간 |
representativeImageUrl | String? | 광고세트 대표 이미지 — 산하 광고 중 가장 최근 created_time 광고의 이미지/cover. 광고가 없거나 모두 백업 미완이면 null |
ads.data[] | MetaAdDto[] | 하위 광고들 (각 광고에 단일 imageUrl 필드 포함 — 이미지 광고 원본 또는 비디오 cover 풀해상도) |
ads.paging | Object | 페이징 정보 (현재는 항상 null) |