Admin APIMeta Marketing Insights
GET /ai/business/meta/adsets/{adsetId}/ads
Meta 광고 목록 조회 (기업 회원용)
광고 목록 조회
특정 광고세트에 속한 광고 목록을 조회합니다.
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/adsets/{adsetId}/ads
Authorization: Bearer {business_access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
adsetId | 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": "111222333",
"name": "Banner Ad v1",
"status": "ACTIVE",
"adsetId": "987654321",
"campaignId": "123456789",
"createdTime": "2024-03-01T00:00:00+0000",
"updatedTime": "2024-03-05T12:00:00+0000",
"imageUrl": "https://d3mp6eqt0w2808.cloudfront.net/img/meta/creative/image/111222333-creativeXYZ"
},
{
"id": "111222334",
"name": "Video Ad v2",
"status": "ACTIVE",
"adsetId": "987654321",
"campaignId": "123456789",
"createdTime": "2024-03-10T00:00:00+0000",
"updatedTime": "2024-03-12T00:00:00+0000",
"imageUrl": "https://d3mp6eqt0w2808.cloudfront.net/img/meta/creative/video-cover/111222334-video999"
}
],
"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) |
adsetId | String | 상위 광고세트 ID |
campaignId | String | 상위 캠페인 ID |
createdTime | String | 생성 시간 |
updatedTime | String | 수정 시간 |
imageUrl | String? | 광고 이미지 URL (S3/CloudFront). 광고 유형 무관 단일 필드 — 이미지 광고면 광고주 업로드 원본, 비디오 광고면 cover 풀해상도(1080×1080). 백업 미완(드물게) 또는 creative 없음이면 null |
Creative 백업 정책
- 광고당 1장: 이미지 광고는
image_url다운로드 → S3 업로드, 비디오 광고는/{video_id}?fields=picture로 cover 이미지 1장 fetch 후 S3 업로드 - 변경 감지: snapshot 의
creative_id+image_hash+video_id3가지 키를 비교해 모두 동일하면 skip. 어느 하나라도 다르면 재업로드 - 호출 비용: tree sync
/ads?fields=...,creative{id,image_hash,image_url,video_id}한 호출에 메타데이터 + 이미지 URL 모두 포함 → 추가 호출 0. 비디오는 광고당 cover fetch 1콜 (변경 시만) - 저장 경로:
img/meta/creative/image/{adId}-{creativeId}(이미지),img/meta/creative/video-cover/{adId}-{videoId}(비디오 cover)