Glowb Dev Docs
Main API

AI 영상 검수 API

AI 기반 영상 검수 및 검수 결과 조회 API

AI 영상 검수 API

AI를 활용한 인플루언서 영상 검수 API입니다. 영상 URL과 캠페인 정보를 기반으로 가이드라인 준수 여부를 자동으로 검수합니다.

Base URL: /ai/influence/contents

인증 정보

항목
인증 필요
인증 방식JWT Bearer Token

엔드포인트 목록

메서드경로설명인증
POST/ai/influence/contents/ai-review/videoAI 영상 검수필요
GET/ai/influence/contents/ai-review/{collabNo}/{applicationId}/{itemId}AI 검수 결과 조회필요

API 상세

AI 영상 검수

영상 URL과 캠페인 정보를 기반으로 AI 검수를 수행합니다. collabNo로 가이드라인을 조회하여 검수 기준으로 사용합니다.

HTTP 요청

POST /ai/influence/contents/ai-review/video
Authorization: Bearer {access_token}
Content-Type: application/json

Request Body

{
  "collabNo": 123,
  "applicationId": 456,
  "itemId": 789,
  "videoUrl": "https://example.com/video.mp4",
  "campaignName": "2024 겨울 캠페인",
  "brand": "브랜드명",
  "options": {
    "language": "ko",
    "needTranscript": true,
    "needSceneCut": true,
    "extras": {}
  }
}

Request Body 스키마

필드명타입필수설명
collabNolong캠페인 번호 (가이드라인 조회용)
applicationIdlong아니오지원 ID (결과 저장용)
itemIdlong아니오제출물 ID (결과 저장용)
videoUrlstring검수할 영상 URL
campaignNamestring아니오캠페인명
brandstring아니오브랜드명
optionsobject아니오검수 옵션

Options 스키마

필드명타입기본값설명
languagestringko검수 언어 (ko, en 등)
needTranscriptbooleantrue자막 추출 여부
needSceneCutbooleantrue장면 분할 여부
extrasobjectnull추가 옵션

중요: applicationIditemId가 모두 제공된 경우에만 검수 결과가 DynamoDB에 저장됩니다.

응답

성공 응답 (200 OK)

{
  "status": 200,
  "code": null,
  "message": "AI 영상 검수 완료",
  "data": {
    "collabNo": 123,
    "applicationId": 456,
    "itemId": 789,
    "contentType": "VIDEO",
    "overallStatus": "PASS",
    "checkedAt": "2024-12-22T10:30:00+09:00",
    "contentDetailResult": {
      "categoryCode": "BEAUTY",
      "basicShots": [
        {
          "code": "PRODUCT_SHOT",
          "expected": {
            "appealPoint": "제품 클로즈업",
            "subOption": "5초 이상"
          },
          "result": {
            "status": "PASS",
            "confidence": 0.95,
            "evidence": [
              {
                "type": "VIDEO",
                "timeRange": [10.5, 18.2],
                "description": "제품 클로즈업 장면 확인",
                "text": null
              }
            ],
            "comment": "가이드라인에 맞게 제품 클로즈업이 포함되어 있습니다."
          }
        }
      ],
      "additionalOptions": [
        {
          "code": "BRAND_MENTION",
          "result": {
            "status": "PASS",
            "confidence": 0.88,
            "evidence": [
              {
                "type": "AUDIO",
                "timeRange": [5.0, 8.0],
                "description": "브랜드명 언급",
                "text": "오늘 소개할 제품은 브랜드명의..."
              }
            ],
            "comment": "브랜드명이 정확히 언급되었습니다."
          }
        }
      ]
    },
    "marketingInfoResult": {
      "requiredPoints": [
        {
          "text": "제품 사용 후기 포함",
          "result": {
            "status": "PASS",
            "matchType": "EXACT",
            "matchedText": "사용해보니 정말 좋았어요",
            "evidence": [
              {
                "type": "AUDIO",
                "timeRange": [25.0, 30.0],
                "description": "사용 후기 언급",
                "text": "사용해보니 정말 좋았어요"
              }
            ],
            "comment": "필수 마케팅 포인트가 포함되어 있습니다."
          }
        }
      ],
      "optionalPoints": [],
      "hashtags": ["#광고", "#협찬", "#브랜드명"],
      "videoMarketingOptions": {
        "promotion": {
          "expectedDescription": "유료광고 표시",
          "result": {
            "status": "PASS",
            "matchType": "PARTIAL",
            "matchedText": "#광고",
            "evidence": [],
            "comment": "광고 표시가 확인되었습니다."
          }
        },
        "brandAccountTag": null,
        "collaborator": null
      }
    },
    "errors": [],
    "meta": {
      "modelVersion": "gemini-2.0-flash",
      "processingTimeMs": 15234.5
    }
  }
}

응답 스키마

필드타입설명
collabNolong캠페인 번호
applicationIdlong지원 ID
itemIdlong제출물 ID
contentTypestring콘텐츠 타입 (VIDEO)
overallStatusstring전체 검수 결과 (PASS, FAIL)
checkedAtstring검수 완료 시간 (ISO 8601)
contentDetailResultobject콘텐츠 상세 검수 결과
marketingInfoResultobject마케팅 정보 검수 결과
errorsarray오류 메시지 목록
metaobject메타 정보

ContentDetailResult 스키마

필드타입설명
categoryCodestring카테고리 코드
basicShotsarray기본 샷 검수 결과 목록
additionalOptionsarray추가 옵션 검수 결과 목록

BasicShotResult 스키마

필드타입설명
codestring샷 코드
expectedobject기대 조건 (appealPoint, subOption)
resultobject검수 결과

ShotCheckResult 스키마

필드타입설명
statusstring상태 (PASS, FAIL, PARTIAL)
confidencenumber신뢰도 (0.0 ~ 1.0)
evidencearray근거 목록
commentstringAI 코멘트

Evidence 스키마

필드타입설명
typestring근거 타입 (VIDEO, AUDIO, TEXT)
timeRangearray시간 범위 [시작초, 종료초]
descriptionstring설명
textstring추출된 텍스트 (있는 경우)

MarketingInfoResult 스키마

필드타입설명
requiredPointsarray필수 마케팅 포인트 검수 결과
optionalPointsarray선택 마케팅 포인트 검수 결과
hashtagsarray감지된 해시태그 목록
videoMarketingOptionsobject영상 마케팅 옵션 검수 결과

Meta 스키마

필드타입설명
modelVersionstring사용된 AI 모델 버전
processingTimeMsnumber처리 시간 (밀리초)

에러 응답

상태 코드코드메시지
400INVALID_REQUESTcollabNo는 필수입니다.
400INVALID_REQUESTvideoUrl은 필수입니다.
500AI_REVIEW_FAILEDAI 검수 중 오류가 발생했습니다.

AI 검수 결과 조회

저장된 최신 AI 검수 결과를 조회합니다.

HTTP 요청

GET /ai/influence/contents/ai-review/{collabNo}/{applicationId}/{itemId}
Authorization: Bearer {access_token}

Path Parameters

파라미터타입필수설명
collabNolong캠페인 번호
applicationIdlong지원 ID
itemIdlong제출물 ID

응답

성공 응답 (200 OK) - 결과가 있는 경우

{
  "status": 200,
  "code": null,
  "message": "검수 결과 조회 완료",
  "data": {
    "collabNo": 123,
    "applicationId": 456,
    "itemId": 789,
    "contentType": "VIDEO",
    "overallStatus": "PASS",
    "checkedAt": "2024-12-22T10:30:00+09:00",
    "contentDetailResult": { ... },
    "marketingInfoResult": { ... },
    "errors": [],
    "meta": {
      "modelVersion": "gemini-2.0-flash",
      "processingTimeMs": 15234.5
    }
  }
}

성공 응답 (200 OK) - 결과가 없는 경우

{
  "status": 200,
  "code": null,
  "message": "검수 결과가 없습니다.",
  "data": null
}

검수 결과 상태

상태설명
PASS가이드라인 준수
FAIL가이드라인 미준수
PARTIAL부분적 준수

근거 타입

타입설명
VIDEO영상 장면 근거
AUDIO음성/오디오 근거
TEXT텍스트(자막, 캡션) 근거

DynamoDB 저장 구조

검수 결과는 DynamoDB에 저장되며, 다음과 같은 키 패턴을 사용합니다:

패턴설명
PKREVIEW#{collabNo}#{applicationId}#{itemId}파티션 키
SK (최신)LATEST최신 결과 조회용
SK (이력){timestamp}검수 이력 저장용

사용 예시

AI 영상 검수 요청

curl -X POST https://api.glowb.io/ai/influence/contents/ai-review/video \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "collabNo": 123,
    "applicationId": 456,
    "itemId": 789,
    "videoUrl": "https://example.com/video.mp4",
    "campaignName": "2024 겨울 캠페인",
    "brand": "브랜드명",
    "options": {
      "language": "ko",
      "needTranscript": true,
      "needSceneCut": true
    }
  }'

AI 검수 결과 조회

curl -X GET https://api.glowb.io/ai/influence/contents/ai-review/123/456/789 \
  -H "Authorization: Bearer {token}"

API 테스트

On this page