Glowb Dev Docs
Admin APICreator Marketplace

GET /ai/admin/meta-creator-marketplace/creators/{id}

크리에이터 단건 상세 (리스트 카드 클릭, id 키, 실 Meta 호출·표준액세스 mock)

크리에이터 상세 조회 (ADMIN)

탐색기 리스트에서 카드를 클릭했을 때의 단건 상세입니다. 리스트에 없는 무거운 데이터(오디언스 breakdown + 최근 미디어)를 담아, 리스트 row 를 가볍게 유지하면서 상세에서만 호출합니다.

식별키는 크리에이터 IG id(안정·불변)입니다. username 은 변경 가능하지만 id 는 고정이고, 표준 mock 응답에도 id 가 포함되어 그대로 키로 씁니다. username 은 리스트가 이미 들고 있어 표시용으로만 선택 전달합니다.

리스트와 동일한 실 Meta 호출입니다 — creator_marketplace_creatorsquery=username 으로 좁혀 호출하고 반환 프로필의 insights + recent_media 를 매핑합니다. 표준(standard) 액세스에서는 Meta 제공 mock/test 데이터(mocked_username_*, mock=true)가, App Review(advanced) 승인 후 동일 코드로 실데이터가 내려옵니다. 오디언스 breakdownsinsights.metrics(M).breakdown(D) 서브요청을 Graph Batch API 로 한 번에 묶어(한 호출에 차원 1개만 허용 — 콤마 리스트는 #100) 병합합니다. 표준액세스에서도 mock breakdown 이 채워져 옵니다(라이브 실측 확인).

HTTP 요청

GET /ai/admin/meta-creator-marketplace/creators/{id}?username={username}
Authorization: Bearer {admin_access_token}

Path / Query Parameters

파라미터위치타입필수설명
idpathString크리에이터 IG id (리스트 응답의 id)
usernamequeryString아니오표시용 username (리스트가 보유 → 전달 시 응답에 그대로 표기. 없으면 placeholder)

응답

성공 응답 (200 OK) — 표준(mock)

{
  "status": 200,
  "code": null,
  "message": "크리에이터 상세 조회 완료",
  "data": {
    "id": "265694058577505",
    "username": "mocked_username_1",
    "name": "mocked_username_1",
    "biography": "proceed through app review",
    "country": "KR",
    "gender": "FEMALE",
    "ageBucket": "25_to_34",
    "isAccountVerified": false,
    "onboardedStatus": "ONBOARDED",
    "hasBrandPartnershipExperience": true,
    "pastBrandPartnershipPartners": [],
    "insights": {
      "totalFollowers": 220000,
      "creatorEngagedAccounts": 28000,
      "creatorReach": 130000,
      "reelsHookRate": 32.9,
      "reelsInteractionRate": 43.8
    },
    "breakdowns": {
      "AGE": [
        { "label": "18-24", "percent": 5.2 },
        { "label": "25-34", "percent": 5.1 },
        { "label": "35-44", "percent": 8.2 }
      ],
      "TOP_COUNTRIES": [
        { "label": "Mocked Country 1", "percent": 3.3 },
        { "label": "Mocked Country 2", "percent": 6.1 }
      ],
      "FOLLOW_TYPE": [
        { "label": "follower_count", "percent": 47.3 },
        { "label": "non_follower_count", "percent": 52.7 }
      ]
    },
    "recentMedia": [
      { "thumbnailUrl": null, "views": 130000, "likes": 6500, "comments": 650 }
    ],
    "mock": true
  }
}

응답 필드

필드타입설명
idString크리에이터 IG id (식별키)
username / nameString크리에이터 (표시용)
biography / country / gender / ageBucketString프로필
isAccountVerified / onboardedStatus / hasBrandPartnershipExperience프로필
pastBrandPartnershipPartnersArray과거 협업 파트너
insightsObjecttotalFollowers, creatorEngagedAccounts, creatorReach(정수 카운트) + reelsHookRate, reelsInteractionRate. rate 2종은 0~100 퍼센트 포인트 스케일(예: 32.9 = 32.9%, 0~1 소수 아님). Meta total_value.value 무변환 통과 — mock·실데이터 동일 스케일
breakdownsObject키 = AGE / GENDER / TOP_COUNTRIES / TOP_CITIES / FOLLOW_TYPE / MEDIA_TYPE(대문자), 값 = [{ label, percent }]. 비중형(age/gender/top_countries/top_cities)은 응답 percentage 그대로, 절대수형(follow_type/media_type)은 합계 대비 %로 환산. 표준액세스 mock 도 채워짐
recentMediaArray[{ thumbnailUrl, views, likes, comments }]
mockBooleanmock 여부

에러 응답

상태 코드code설명
400BAD_REQUESTid 누락
403FORBIDDEN관리자 권한 없음

설계 메모

  • 식별키 = IG id(불변). username 은 리네임 가능 + 중복 위험이 있어 키로 쓰지 않음. 표준 mock 응답에도 id 가 포함돼 mock 단계부터 id 로 식별 가능.
  • 리스트(/creators)는 인사이트 스칼라만 인라인으로 주고 recent_media 는 요청하지 않는다. 상세는 recent_media 를 추가로 요청(CREATOR_DETAIL_FIELDS)해 리스트 페이로드는 경량 유지.
  • 상세는 마켓 단건 노드 직접조회 대신 creator_marketplace_creatorsquery=username 으로 좁혀 호출하고 id 매칭 프로필을 매핑한다(미매칭 시 첫 건).
  • breakdown 은 breakdown()차원 1개만 받으므로(콤마 리스트는 #100) 지원 (메트릭,차원) 6쌍을 서브요청으로 나눠, Graph Batch API(단일 POST + batch=[...])로 한 요청에 묶어 보낸다 → HTTP 왕복 6→1. 응답은 서브요청 순서대로 [{code, body}] 배열이고 각 body 를 재파싱해 insights.data[].total_value.breakdowns = { dimension_key, results } 를 뽑는다. 각 서브응답은 fail-soft(일부 실패해도 나머지 채움). 레이트리밋 call_count 는 서브요청 수만큼 카운트되므로 배치는 왕복만 줄이고 쿼터는 동일.
  • 상세는 배치 호출이 재클릭마다 반복되지 않도록 응답을 Redis 단기 캐시(meta:cm:detail:{id}, TTL=검색과 동일)한다.

API 테스트

On this page