Glowb Dev Docs
Admin APIMeta Marketing Insights

GET /ai/business/meta/campaigns/{campaignId}/insights

Meta 특정 캠페인 인사이트 조회 (ADMIN · 기업 회원 공통)

캠페인 인사이트 조회

특정 캠페인의 성과 지표를 조회합니다. level=adset 또는 level=ad로 하위 단위로 집계도 가능합니다.

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.

권한

사용자동작
ADMIN모든 캠페인 조회 가능
기업 회원본인에게 매핑된 캠페인 (Collab 매핑 O + Business 직접 매핑 X 합집합) 만 조회 가능. 그 외 캠페인은 403 FORBIDDEN

HTTP 요청

GET /ai/business/meta/campaigns/{campaignId}/insights
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
campaignIdString캠페인 ID

Query Parameters

파라미터기본값설명
levelcampaign집계 단위: campaign | adset | ad
datePresetlifetime기간 프리셋. 허용: today, yesterday, last_7d, last_14d, last_30d, last_90d, this_month, last_month, lifetime (적재된 전체 기간 — since/until 무관, 일자 제한 없음)
since-시작일 YYYY-MM-DD. 지정 시 datePreset 무시
until-종료일 YYYY-MM-DD
timeIncrement-1(일별) | 7(주별) | monthly
attributionWindows7d_click기여 기간: 1d_click | 7d_click | 28d_click | 1d_view | 7d_view

실제 호출 예시

# 캠페인 내부 - 광고세트별 집계
GET /ai/business/meta/campaigns/120243507818540347/insights
  ?level=adset&datePreset=last_7d&attributionWindows=7d_click

# 캠페인 내부 - 광고별 집계
GET /ai/business/meta/campaigns/120243507818540347/insights
  ?level=ad&datePreset=last_7d&attributionWindows=7d_click

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "캠페인 인사이트 조회 완료",
  "data": [
    {
      "campaignId": "120243507818540347",
      "campaignName": "봄 시즌 프로모션",
      "adsetId": "987654321",
      "adsetName": "Female 20-35 Seoul",
      "impressions": "44024",
      "reach": "25111",
      "clicks": "2882",
      "spend": "184585",
      "ctr": "6.546429",
      "cpc": "64.047536",
      "cpm": "4192.82664",
      "frequency": "1.753176",
      "actions": [
        { "actionType": "purchase", "value": "2", "value1dClick": null, "value7dClick": "2", "value28dClick": null, "value1dView": null, "value7dView": null },
        { "actionType": "link_click", "value": "821", "value1dClick": null, "value7dClick": null, "value28dClick": null, "value1dView": null, "value7dView": null },
        { "actionType": "video_view", "value": "13198", "value1dClick": null, "value7dClick": null, "value28dClick": null, "value1dView": null, "value7dView": null }
      ],
      "costPerActionType": [
        { "actionType": "purchase", "value": "92292.5", "value1dClick": null, "value7dClick": "92292.5", "value28dClick": null, "value1dView": null, "value7dView": null },
        { "actionType": "link_click", "value": "224.829476", "value1dClick": null, "value7dClick": null, "value28dClick": null, "value1dView": null, "value7dView": null }
      ],
      "dateStart": "2026-03-30",
      "dateStop": "2026-04-05"
    }
  ]
}

응답 필드 설명

필드설명
impressions노출수
reach도달 사용자 수 (중복 제거)
clicks클릭수
spend지출 금액
ctr클릭률 (clicks / impressions × 100)
cpc클릭당 비용. clicks=0 이면 null (계산 불가)
cpm1,000 노출당 비용
frequency1인당 평균 노출 횟수
actions전환/행동 배열 (actionType + value + attribution 윈도우별 분해)
costPerActionType행동당 비용 배열
dateStart / dateStop결과 기간 (timeIncrement=1 이면 일별, 미지정이면 전체 기간 합산)

actions 주요 actionType

actionType설명
purchase구매
link_click링크 클릭
landing_page_view랜딩페이지 조회
add_to_cart장바구니 추가
initiate_checkout체크아웃 시작
add_payment_info결제 정보 입력
lead리드 수집
video_view영상 조회
page_engagement페이지 참여
post_engagement게시물 참여

에러 응답

상태 코드설명
401인증 실패
403본인 캠페인이 아님 (기업 회원이 매핑되지 않은 캠페인 조회 시)
500DB miss → on-demand Meta API fallback 중 응답 파싱·upsert 실패. 다른 datePreset 으로 재시도하거나 lifetime / since + until 사용 권장

API 테스트

On this page