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/video | AI 영상 검수 | 필요 |
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/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 | 추가 옵션 검수 결과 목록 |
BasicShotResult 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
code | string | 샷 코드 |
expected | object | 기대 조건 (appealPoint, subOption) |
result | object | 검수 결과 |
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 | 추출된 텍스트 (있는 경우) |
MarketingInfoResult 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
requiredPoints | array | 필수 마케팅 포인트 검수 결과 |
optionalPoints | array | 선택 마케팅 포인트 검수 결과 |
hashtags | array | 감지된 해시태그 목록 |
videoMarketingOptions | object | 영상 마케팅 옵션 검수 결과 |
Meta 스키마
| 필드 | 타입 | 설명 |
|---|---|---|
modelVersion | string | 사용된 AI 모델 버전 |
processingTimeMs | number | 처리 시간 (밀리초) |
에러 응답
| 상태 코드 | 코드 | 메시지 |
|---|---|---|
| 400 | INVALID_REQUEST | collabNo는 필수입니다. |
| 400 | INVALID_REQUEST | videoUrl은 필수입니다. |
| 500 | AI_REVIEW_FAILED | AI 검수 중 오류가 발생했습니다. |
AI 검수 결과 조회
저장된 최신 AI 검수 결과를 조회합니다.
HTTP 요청
GET /ai/influence/contents/ai-review/{collabNo}/{applicationId}/{itemId}
Authorization: Bearer {access_token}Path Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
collabNo | long | 예 | 캠페인 번호 |
applicationId | long | 예 | 지원 ID |
itemId | long | 예 | 제출물 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에 저장되며, 다음과 같은 키 패턴을 사용합니다:
| 키 | 패턴 | 설명 |
|---|---|---|
| PK | REVIEW#{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}"