Main APIAI 콘텐츠 검수 API
POST /ai/influence/contents/ai-review/video
AI 영상 검수
AI 영상 검수
영상 URL과 캠페인 정보를 기반으로 AI 검수를 수행합니다. collabNo로 가이드라인을 조회하여 검수 기준으로 사용합니다.
| 항목 | 값 |
|---|---|
| 메서드 | POST |
| 경로 | /ai/influence/contents/ai-review/video |
| 인증 | 필요 |
| Content-Type | application/json |
요청
POST /ai/influence/contents/ai-review/video
Authorization: Bearer {access_token}
Content-Type: application/jsonRequest 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 스키마
| 필드명 | 타입 | 필수 | 설명 |
|---|---|---|---|
collabNo | long | 예 | 캠페인 번호 (가이드라인 조회용) |
applicationId | long | 아니오 | 지원 ID (결과 저장용) |
itemId | long | 아니오 | 제출물 ID (결과 저장용) |
videoUrl | string | 예 | 검수할 영상 URL |
campaignName | string | 아니오 | 캠페인명 |
brand | string | 아니오 | 브랜드명 |
options | object | 아니오 | 검수 옵션 |
Options 스키마
| 필드명 | 타입 | 기본값 | 설명 |
|---|---|---|---|
language | string | ko | 검수 언어 (ko, en 등) |
needTranscript | boolean | true | 자막 추출 여부 |
needSceneCut | boolean | true | 장면 분할 여부 |
extras | object | null | 추가 옵션 |
중요: applicationId와 itemId가 모두 제공된 경우에만 검수 결과가 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
}
}
}응답 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
collabNo | long | 캠페인 번호 |
applicationId | long | 지원 ID |
itemId | long | 제출물 ID |
contentType | string | 콘텐츠 타입 (VIDEO) |
overallStatus | string | 전체 검수 결과 (PASS, FAIL) |
checkedAt | string | 검수 완료 시간 (ISO 8601) |
contentDetailResult | object | 콘텐츠 상세 검수 결과 |
marketingInfoResult | object | 마케팅 정보 검수 결과 |
errors | array | 오류 메시지 목록 |
meta | object | 메타 정보 |
ContentDetailResult 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
categoryCode | string | 카테고리 코드 |
basicShots | array | 기본 샷 검수 결과 목록 |
additionalOptions | array | 추가 옵션 검수 결과 목록 |
ShotCheckResult 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
status | string | 상태 (PASS, FAIL, PARTIAL) |
confidence | number | 신뢰도 (0.0 ~ 1.0) |
evidence | array | 근거 목록 |
comment | string | AI 코멘트 |
Evidence 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
type | string | 근거 타입 (VIDEO, AUDIO, TEXT) |
timeRange | array | 시간 범위 [시작초, 종료초] |
description | string | 설명 |
text | string | 추출된 텍스트 (있는 경우) |
Meta 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
modelVersion | string | 사용된 AI 모델 버전 |
processingTimeMs | number | 처리 시간 (밀리초) |
에러 응답
| 상태 코드 | 코드 | 메시지 |
|---|---|---|
| 400 | INVALID_REQUEST | collabNo는 필수입니다. |
| 400 | INVALID_REQUEST | videoUrl은 필수입니다. |
| 500 | AI_REVIEW_FAILED | 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
}
}'