Main API비즈니스 API
POST /ai/business/contents/review-request
검수 추가 요청 (피드백 횟수 추가)
검수 추가 요청
콘텐츠 검수 라운드에 대해 추가 피드백 요청을 등록합니다. 요청 유형에 따라 크레딧이 즉시 차감됩니다.
기본 피드백 횟수: 1차/2차 검수 각각 기본 1회의 피드백만 가능합니다. 검수 추가 요청을 통해 해당 검수 라운드의 피드백 횟수를 증가시킬 수 있습니다.
크레딧 차감 조건
FEEDBACK_NOT_REFLECTED: 크레딧 차감 없음OUTSIDE_GUIDELINE: 50,000 크레딧 즉시 차감 (잔액 부족 시 요청 실패)
| 항목 | 값 |
|---|---|
| 메서드 | POST |
| 경로 | /ai/business/contents/review-request |
| 인증 | 필요 (기업/관리자 토큰) |
요청 유형
| 유형 | 설명 | 크레딧 차감 |
|---|---|---|
FEEDBACK_NOT_REFLECTED | 요청한 피드백, 콘텐츠 가이드라인 항목이 반영되지 않음 | 없음 |
OUTSIDE_GUIDELINE | 콘텐츠 가이드라인 외 추가 요청 | 50,000 |
요청
POST /ai/business/contents/review-request HTTP/1.1
Host: api.glowb.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
Content-Type: application/json
{
"reviewId": 123,
"requestType": "FEEDBACK_NOT_REFLECTED",
"unreflectedFeedbackIds": [1, 2, 3],
"requestContent": "해당 피드백이 반영되지 않았습니다. 수정 요청드립니다."
}curl -X POST "https://api.glowb.com/ai/business/contents/review-request" \
-H "Authorization: Bearer {access_token}" \
-H "Content-Type: application/json" \
-d '{
"reviewId": 123,
"requestType": "FEEDBACK_NOT_REFLECTED",
"unreflectedFeedbackIds": [1, 2, 3],
"requestContent": "해당 피드백이 반영되지 않았습니다. 수정 요청드립니다."
}'const response = await fetch('/ai/business/contents/review-request', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
reviewId: 123,
requestType: 'FEEDBACK_NOT_REFLECTED',
unreflectedFeedbackIds: [1, 2, 3],
requestContent: '해당 피드백이 반영되지 않았습니다. 수정 요청드립니다.'
})
});
const result = await response.json();Request Body 스키마
Prop
Type
응답
성공 응답 (200 OK)
FEEDBACK_NOT_REFLECTED (크레딧 차감 없음)
{
"status": 200,
"code": null,
"message": "검수 추가 요청이 완료되었습니다.",
"data": {
"id": 1,
"reviewId": 123,
"requestType": "FEEDBACK_NOT_REFLECTED",
"creditDeducted": 0,
"message": "검수 추가 요청이 등록되었습니다. (피드백 횟수: 2회)",
"createdAt": "2024-12-30T14:30:00"
}
}OUTSIDE_GUIDELINE (50,000 크레딧 차감)
{
"status": 200,
"code": null,
"message": "검수 추가 요청이 완료되었습니다.",
"data": {
"id": 2,
"reviewId": 123,
"requestType": "OUTSIDE_GUIDELINE",
"creditDeducted": 50000,
"message": "검수 추가 요청이 등록되었습니다. (크레딧 차감: 50,000원, 피드백 횟수: 3회)",
"createdAt": "2024-12-30T15:00:00"
}
}응답 스키마
Prop
Type
에러 응답
| 상태 코드 | 에러 코드 | 설명 |
|---|---|---|
| 400 | INVALID_DATA | 검수 정보를 찾을 수 없음 |
| 400 | INVALID_DATA | 기업 정보를 찾을 수 없음 |
| 400 | INSUFFICIENT_CREDIT | 크레딧 잔액 부족 (OUTSIDE_GUIDELINE 시) |
| 401 | UNAUTHORIZED | 인증 실패 |
| 500 | INTERNAL_SERVER_ERROR | 서버 오류 |
검수 정보 없음 예시:
{
"status": 400,
"code": "INVALID_DATA",
"message": "검수 정보를 찾을 수 없습니다.",
"data": null
}크레딧 부족 예시:
{
"status": 400,
"code": "INSUFFICIENT_CREDIT",
"message": "크레딧이 부족합니다. 현재 잔액: 30,000원, 필요 금액: 50,000원",
"data": null
}처리 흐름
API 호출
│
├─ 1. ContentReview 조회 (reviewId)
│
├─ 2. 캠페인의 기업 정보 조회
│
├─ 3. 요청 유형 확인
│ ├─ FEEDBACK_NOT_REFLECTED → 크레딧 차감 없음
│ └─ OUTSIDE_GUIDELINE → 50,000 크레딧 차감
│
├─ 4. ContentReview.maxFeedbackCount 증가 (+1)
│
├─ 5. AdditionalReviewRequest 엔티티 저장
│
└─ 6. 응답 반환피드백 횟수 관리
- maxFeedbackCount: 해당 검수 라운드에서 허용된 최대 피드백 횟수 (기본값: 1)
- currentFeedbackCount: 현재까지 진행된 피드백 횟수
검수 추가 요청이 승인되면 maxFeedbackCount가 1 증가하여 추가 피드백이 가능해집니다.
reviewId 조회 방법
reviewId는 검수 라운드 상세 조회 API에서 확인할 수 있습니다:
GET /ai/business/contents/review/{reviewId}/detail