Glowb Dev Docs
SaaS API가이드라인 V2 API

PUT /ai/guideline/v2/{collabNo}

가이드라인 V2 저장 (Upsert)

가이드라인 V2 저장

가이드라인 V2를 저장합니다. 없으면 새로 생성, 있으면 기존 데이터와 병합합니다.

항목
메서드PUT
경로/ai/guideline/v2/{collabNo}
인증Bearer 토큰 필수

요청

PUT /ai/guideline/v2/123?isFirst=true&isModify=false HTTP/1.1
Host: api.glowb.io
Authorization: Bearer {access_token}
Content-Type: application/json
curl -X PUT "https://api.glowb.io/ai/guideline/v2/123?isFirst=true" \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{...}'

Path Parameters

Prop

Type

Query Parameters

Prop

Type

Request Body

{
  "useScriptReview": true,
  "contentInfo": {
    "requiredAppealPoints": { "root": { "children": [...] } },
    "optionalAppealPoints": { "root": { "children": [...] } },
    "promotionGuide": { "root": { "children": [...] } },
    "cautionGuide": { "root": { "children": [...] } },
    "hashtags": ["#글로브뷰티", "#여름선크림", "#데일리선크림"]
  },
  "shootingDetailInfo": {
    "categoryCode": "BEAUTY",
    "basicShots": [
      { "code": "HOOK", "subOption": null },
      { "code": "TEXTURE_SHOT", "subOption": null },
      { "code": "COLOR_SHOT", "subOption": null },
      {
        "code": "USAGE_SHOT",
        "subOption": { "code": "BODY_EXPOSURE", "additionalPrice": 50000 }
      },
      { "code": "PROMOTION_CONTENT", "subOption": null },
      { "code": "APPEAL_POINT_CONTENT", "subOption": null }
    ],
    "addonShots": [
      { "code": "BEFORE_AFTER", "additionalPrice": 50000 },
      { "code": "OUTDOOR", "additionalPrice": 50000 }
    ]
  },
  "uploadSettingInfo": {
    "brandTag": {
      "accountName": "@glowb_beauty",
      "tagMethods": ["PERSON_TAG", "CAPTION_TAG"]
    },
    "sponsorLabel": {
      "enabled": true,
      "replaceAdTag": false
    },
    "addCollaborator": false,
    "mustReadCaution": true,
    "useAutoDm": false
  },
  "storylineInfo": {
    "referenceUrls": [
      "https://instagram.com/reel/xxx",
      "https://youtube.com/watch?v=yyy"
    ],
    "storylineContent": { "root": { "children": [...] } },
    "brandLogoUrls": ["https://s3.../logo.png"],
    "saveBrandLogoAsDefault": true,
    "photoAssetUrls": ["https://s3.../photo1.jpg", "https://s3.../photo2.jpg"]
  },
  "extra": {}
}

필드 상세

최상위

Prop

Type


ContentInfo (Step 1: 콘텐츠 내용)

Prop

Type


ShootingDetailInfo (Step 2: 촬영 상세)

flat 구조로 저장합니다. 초반/중반/후반 구분은 프론트에서 처리합니다.

Prop

Type

카테고리 코드: BEAUTY, FASHION, TRAVEL, FINANCE_BUSINESS, FOOD, PARENTING_WEDDING, LIVING, IT, HEALTH_FITNESS

ShotSelection:

필드타입설명
codestring촬영 항목 코드
subOptionSubOptionSelection | null서브옵션 (추가 조건)

SubOptionSelection:

필드타입설명
codestring서브옵션 코드
additionalPriceinteger추가 단가 (원)

AddonShotSelection:

필드타입설명
codestring추가금 항목 코드
additionalPriceinteger인당 추가 단가 (원)

카테고리별 기본 항목 코드:

카테고리기본 항목
뷰티HOOK, TEXTURE_SHOT, COLOR_SHOT, PACKAGE_SHOT, USAGE_SHOT(서브: BODY_EXPOSURE +5만), TIP_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
패션HOOK, MATERIAL_SHOT, UNBOXING_SHOT, STYLING_TIP_SHOT, LOOKBOOK_SHOT(서브: FIVE_OR_MORE +5만), PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
여행HOOK, TRAVEL_INTRO_SHOT, ACCOMMODATION_SHOT, FOOD_SHOT, ACTIVITY_SHOT, LANDMARK_SHOT(서브: SIX_OR_MORE +5만), PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
금융/비즈니스HOOK, PRODUCT_INTRO_SHOT, USAGE_GUIDE_SHOT, COPYWRITING_SHOT, TIP_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
푸드HOOK, STORE_SHOT, COOKING_SHOT, TABLE_SHOT, MENU_DESC_SHOT(서브: FOUR_OR_MORE +5만), PRODUCT_INFO_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
육아/결혼HOOK, PRODUCT_INTRO_SHOT, PACKAGE_SHOT, TIP_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
리빙HOOK, PRODUCT_INTRO_SHOT, PACKAGE_SHOT, TIP_SHOT, FULL_VIEW_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
ITHOOK, FEATURE_DEMO_SHOT, SCREEN_SHOT, USAGE_SCENE_SHOT, PRODUCT_DESC_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC
운동/건강HOOK, INGREDIENT_SHOT, PACKAGE_SHOT, USAGE_SHOT, ROUTINE_SHOT, PROMOTION_CONTENT, APPEAL_POINT_CONTENT, PURCHASE_GUIDE, ETC

공통 단가 상승 항목:

코드설명추가 단가
BEFORE_AFTER비포&애프터 샷+50,000원
PROCEDURE시술 관련 샷+150,000원
OUTDOOR야외/방문 촬영+50,000원
BODY_EXPOSURE얼굴 외 신체 노출 촬영+50,000원
CHILD_USAGE아이가 제품 사용하는 샷+50,000원

UploadSettingInfo (Step 3: 업로드 설정)

Prop

Type


StorylineInfo (Step 4: 스토리라인/자료)

Prop

Type

응답

초안/완성본 저장 성공 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "가이드라인 저장 완료",
  "data": {
    "collabNo": 123,
    "isFirst": true,
    "guidelineStatus": "DRAFT",
    "message": "가이드라인이 저장되었습니다."
  }
}

임시저장 성공 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "가이드라인 저장 완료",
  "data": {
    "collabNo": 123,
    "isModify": true,
    "guidelineStatus": "NONE",
    "message": "가이드라인이 임시저장되었습니다."
  }
}

에러 응답

상태 코드코드설명
401UNAUTHORIZED_ACCESS캠페인 소유자가 아님
403GUIDELINE_MODIFICATION_NOT_ALLOWED콘텐츠 제작 시작 후 수정 불가 (관리자 제외)
404CAMPAIGN_NOT_FOUND캠페인을 찾을 수 없음

저장 시 부수 효과

조건동작
useScriptReview=trueTB_CAMPAIGN_ADDON_FEE에 SCRIPT_REVIEW 30,000원 저장
useScriptReview=true1차 검수: 대본(SCRIPT_VIDEO), 2차 검수: 영상+캡션+해시태그
useScriptReview=false1차 검수: 영상+캡션+해시태그, 2차 검수 없음
isFirst=trueguidelineStatus=DRAFT, campaignSubStep=CAMPAIGN_GUIDELINE
isFirst=falseguidelineStatus=COMPLETED, campaignSubStep=CREATOR_RECRUIT, 벡터화 호출, 칸반 태스크 완료
isModify=trueMongoDB만 저장, 상태/단계 변경 없음
hashtags 존재Collab.keywords에 동기화
saveBrandLogoAsDefault=trueBusiness.brandLogoUrl에 저장
photoAssetUrls 존재Collab.productImagePath에 동기화

On this page