Glowb Dev Docs
시작하기

광고주·에이전시 오류 코드

광고주(기업) 앱과 에이전시 앱이 로케일별 오류 문구를 고를 때 쓰는 코드 사전입니다.

광고주·에이전시 오류 코드

광고주 앱(glowb-ai-biz)도 로케일이 4종(ko·en·jp·vi)인데, 서버 오류 메시지는 한국어뿐이었습니다. 이 문서는 크리에이터 오류 코드와 같은 규격으로, 광고주·에이전시 경로에서 서버가 내려주는 code 의 사전을 정리한 것입니다.

코드 정의의 원본은 com.app.glowb.Enum.BusinessErrorCode 입니다. 이 문서는 그 enum 에서 생성했습니다. 공통 인프라 코드와 크리에이터와 뜻이 같은 코드는 CreatorErrorCode 의 것을 그대로 씁니다 — code 문자열은 두 enum 을 통틀어 유일합니다.

오류 응답 형태

{
  "status": 404,
  "code": "CAMPAIGN_NOT_FOUND",
  "message": "존재하지 않는 캠페인입니다.",
  "args": { "collabNo": 1234 },
  "data": null
}
  • code 는 enum 상수명 그대로이며 로케일 문구를 고르는 키입니다.
  • message 는 한국어 fallback 입니다. 아직 매핑하지 않은 코드도 지금처럼 화면에 뜹니다.
  • args 는 문장 슬롯({collabNo} 등)을 채울 값입니다. 값이 없으면 키 자체가 빠집니다.
  • 대부분의 경로는 HTTP 200 + 본문 status 규약입니다. 컨트롤러가 원래 ResponseEntity 로 HTTP 상태를 직접 내리던 경로(결제·진행표 일부 등)는 그 HTTP 상태를 그대로 유지하고 본문의 code·message 만 이 사전의 값으로 바뀌었습니다.

코드 규격

사유 접미사가 상태를 정합니다. 표와 예외군은 크리에이터 오류 코드의 코드 규격과 같습니다.

레거시 호환 코드 — 프론트가 이미 이 이름으로 분기하고 있어(ALREADY_CLAIMED_PROMOTION은 크리에이터 프로모션 페이지, 나머지는 광고주·에이전시) 이름과 상태를 그대로 물려받았습니다. 규격 접미사를 따르지 않아도 바꾸지 않습니다.

코드상태
BUSINESS_REGISTRATION_FAILED400
INVALID_BUSINESS_USER404
INVALID_COMPANY_USER_PASSWORD401
LEGACY_CAMPAIGN400
GUIDELINE_CONCEPTS_CHANGED409
NO_APPLICATIONS400
NO_ELIGIBLE_ITEMS400
PROPOSAL_STATUS_CHANGE_NOT_ALLOWED400
BUDGET_ALREADY_LOCKED409
BUDGET_ALREADY_UNLOCKED409
INSUFFICIENT_GLOBAL_CREDIT400
NEED_CAMPAIGN_DEPOSIT400
INSUFFICIENT_CREDIT409
ALREADY_CLAIMED_PROMOTION409
BLOG_REVIEW_ERROR500
AI_INVALID_JSON400

프론트 적용 방법

프론트(glowb-frontend)는 앱 공용 오류 사전과 번역 단계를 이미 갖추고 있습니다. 새 코드가 생기면 사전에 키만 추가하면 됩니다.

  • 사전 위치: packages/ui/src/lib/api-errors/{ko,en,jp,vi}.json. 키는 서버 code 그대로, 값은 로케일 문구입니다. 슬롯은 서버 args 키와 같은 이름을 씁니다.
  • 번역 단계: 크리에이터 apps/glowb-ai-creator/apis/index.ts 와 광고주·에이전시 packages/corp-shared/src/http.ts 가 오류 응답을 localizeApiResponse 로 통과시켜 message 를 로케일 문구로 바꿉니다. 서버 원문은 rawMessage 에 남습니다.
  • 로케일 판정: URL 첫 경로(/en/…) → <html lang> → NEXT_LOCALE 쿠키 → 브라우저 언어 → ko 순입니다.
  • 폴백: 사전에 없는 코드이거나 슬롯 값이 빠지면 서버 message(한국어)를 그대로 씁니다. 그래서 서버에 새 코드가 먼저 배포돼도 화면이 비지 않고, 사전 키가 추가되면 그때부터 번역됩니다.
packages/ui/src/lib/api-errors/en.json
{
  "CAMPAIGN_NOT_OWNED": "You do not have access to this campaign.",
  "INSUFFICIENT_CREDIT": "Not enough credits. (current: {currentCredit}, required: {requiredCredit})",
  "REVIEW_FEEDBACK_ITEMS_REQUIRED": "There are no feedback items to process."
}

code 로 분기하는 화면 로직(예: 특정 코드면 모달 열기)은 번역과 별개입니다. 서버 코드명이 바뀌면 그 분기도 함께 고쳐야 합니다. 이 문서의 변경 이력에 프론트 대응이 필요한 항목을 적어 둡니다.

코드 사전

기업 계정·로그인·가입·사업자등록

코드상태기본 문구(ko)args
BUSINESS_REGISTRATION_FAILED400기업 회원가입에 실패했습니다.—
INVALID_BUSINESS_USER404등록되지 않은 기업 사용자입니다.—
INVALID_COMPANY_USER_PASSWORD401비밀번호가 일치하지 않습니다.—
BUSINESS_ACCOUNT_NOT_FOUND404기업 정보를 찾을 수 없습니다.—
BUSINESS_ACCOUNT_RECOVERY_NOT_FOUND404입력하신 정보와 일치하는 기업 계정이 없습니다.—
BUSINESS_INFO_UPDATE_FAILED500기업 정보 수정에 실패했습니다.—
BUSINESS_LICENSE_ALREADY_REGISTERED409이미 등록된 사업자등록증이 있습니다.—
BUSINESS_LICENSE_CHECK_FAILED500사업자등록증 분석에 실패했습니다. 잠시 후 다시 시도해주세요.—
BUSINESS_LICENSE_FILE_REQUIRED400사업자등록증 파일을 업로드해주세요.—
BUSINESS_LOGIN_FAILED500로그인 처리 중 오류가 발생했습니다.—
BUSINESS_LOGIN_ID_DUPLICATE409이미 사용 중인 아이디입니다: {loginId}loginId
BUSINESS_MANAGER_EMAIL_NOT_FOUND404사업자등록번호와 일치하는 담당자 이메일을 찾을 수 없습니다.—
BUSINESS_MANAGER_FIELD_TOO_LONG400담당자 정보가 너무 깁니다. ({field}: 최대 {maxLength}자)field, maxLength
BUSINESS_MANAGER_NOT_FOUND404담당자를 찾을 수 없습니다.managerNo
BUSINESS_MANAGER_NOT_OWNED403해당 담당자에 접근 권한이 없습니다.managerNo
BUSINESS_RECOVERY_CODE_NOT_FOUND404발급된 인증번호가 없습니다. 인증번호를 다시 요청해주세요.—

기업 담당자

코드상태기본 문구(ko)args
BUSINESS_LICENSE_FILE_NOT_FOUND404등록된 사업자등록증 파일이 없습니다.—
BUSINESS_LICENSE_PARSE_FAILED500사업자등록증 분석에 실패했습니다.—

에이전시(화이트라벨)·고객사·브랜딩

코드상태기본 문구(ko)args
AGENCY_ACCESS_FORBIDDEN403에이전시 계정만 이용할 수 있습니다.—
AGENCY_ASSIGN_CLIENT_REQUIRED400할당할 하위 기업을 선택해주세요.—
AGENCY_CLIENT_CAMPAIGN_REMAINING409하위 기업에 연결된 캠페인이 있어 삭제할 수 없습니다. 먼저 캠페인을 다른 하위 기업에 할당하세요.—
AGENCY_CLIENT_CREDIT_HISTORY_EXISTS409하위 기업에 크레딧 또는 예산 이력이 있어 삭제할 수 없습니다. 비활성화 상태로 변경하세요.—
AGENCY_CLIENT_HAS_DEPENDENCIES409하위 기업에 연결된 데이터가 있어 삭제할 수 없습니다. 비활성화 상태로 변경하세요.—
AGENCY_CLIENT_LOGIN_ID_DUPLICATE409이미 사용 중인 아이디입니다: {loginId}loginId
AGENCY_CLIENT_LOGIN_ID_REQUIRED400하위 기업 로그인 아이디를 입력해주세요.—
AGENCY_CLIENT_LOGIN_ID_INVALID400하위 기업 로그인 아이디는 {maxLength}자 이하로 입력해주세요.maxLength
AGENCY_CLIENT_NOT_FOUND404하위 기업을 찾을 수 없습니다.clientId
AGENCY_CLIENT_NOT_OWNED403해당 하위 기업에 접근 권한이 없습니다.clientId
AGENCY_CREDIT_AMOUNT_INVALID400지급할 크레딧은 1 이상이어야 합니다.amount
AGENCY_CREDIT_MEMO_TOO_LONG400메모는 {maxLength}자 이하로 입력해주세요.maxLength
AGENCY_FAVICON_CONVERT_FAILED500파비콘 변환 중 오류가 발생했습니다.—
AGENCY_FAVICON_FILE_TOO_LARGE413파비콘 이미지는 {maxMb}MB 이하만 올릴 수 있습니다.maxMb
AGENCY_FAVICON_IMAGE_UNSUPPORTED400파비콘으로 변환할 수 없는 이미지입니다. PNG/JPG/GIF/WEBP/SVG 파일을 올려 주세요.—
AGENCY_FAVICON_RESOLUTION_TOO_LARGE413이미지 해상도가 너무 큽니다. 2,500만 픽셀 이하로 올려 주세요.—
AGENCY_LINK_MISSING404에이전시에 연결되지 않은 계정입니다.—
AGENCY_PORTAL_LOGIN_FORBIDDEN403에이전시 포털에 로그인할 수 없는 계정입니다.—
AGENCY_TENANT_NOT_FOUND404테넌트를 찾을 수 없습니다: {domain}domain

캠페인 생성·조회·소유

코드상태기본 문구(ko)args
LEGACY_CAMPAIGN400레거시 캠페인은 이 기능을 사용할 수 없습니다.—
CAMPAIGN_BUDGET_INVALID400예산 값이 올바르지 않습니다.budget
CAMPAIGN_BUSINESS_DIRECT_FLOW_UNSUPPORTED400기업 주도 플로우 캠페인에서만 사용할 수 있습니다.—
CAMPAIGN_CATEGORY_REQUIRED400캠페인 카테고리가 설정되지 않았습니다. 캠페인 정보를 먼저 입력해주세요.collabNo
CAMPAIGN_CONTENT_FORMAT_REQUIRED400캠페인 콘텐츠 형식이 설정되지 않았습니다. 캠페인 정보를 먼저 입력해주세요.collabNo
CAMPAIGN_CREATOR_TARGET_COUNTRY_INVALID400크리에이터 타겟 국가 값이 올바르지 않습니다. 국가 코드(예: KR, JP)로 선택해주세요.country
CAMPAIGN_IMAGES_EMPTY400판정할 이미지가 없습니다.—
CAMPAIGN_NOT_OWNED403해당 캠페인에 접근 권한이 없습니다.collabNo
CAMPAIGN_OWNER_BUSINESS_NOT_FOUND404캠페인을 등록한 기업 정보를 찾을 수 없습니다.collabNo
CAMPAIGN_PAYMENT_INFO_NOT_FOUND404결제 정보가 없는 캠페인입니다.collabNo
CAMPAIGN_PLAN_RECOMMEND_FAILED500캠페인 플랜 추천 중 오류가 발생했습니다.—
CAMPAIGN_PLAN_TEMPLATE_NOT_FOUND404입력한 예산에 맞는 캠페인 플랜을 찾을 수 없습니다.budget
CAMPAIGN_PRODUCT_IMAGE_REQUIRED400캠페인에 등록된 제품 이미지가 없습니다. 이미지를 먼저 등록해주세요.collabNo
CAMPAIGN_SECONDARY_USAGE_MONTHS_INVALID4002차 활용 기간 값이 올바르지 않습니다. 0 이상의 개월 수 또는 영구만 선택할 수 있습니다.months
PROVIDED_OPTION_CHANGE_NOT_ALLOWED400이미 제안된 신청자가 있어 캠페인 제공 옵션을 변경할 수 없습니다.—

가이드라인 생성·수정(V2·V4·체험판)

코드상태기본 문구(ko)args
GUIDELINE_CONCEPTS_CHANGED409컨셉이 새로 생성되었거나 생성 중입니다. 컨셉을 다시 선택해주세요.—
GUIDELINE_SESSION_NOT_FOUND404가이드라인 생성 세션이 없습니다. 컨셉 생성부터 다시 시작해주세요.collabNo
GUIDELINE_AI_UPSTREAM_FAILED502AI 가이드라인 생성 서버 응답에 실패했습니다. 잠시 후 다시 시도해주세요.step
GUIDELINE_COMPLETE_FORBIDDEN403가이드라인 완성은 관리자 검토 후 진행됩니다. 초안으로 저장해주세요.—
GUIDELINE_CONCEPT_INDEX_INVALID400선택한 컨셉이 올바르지 않습니다. 컨셉을 다시 생성하거나 선택해주세요.conceptIndex
GUIDELINE_CONTENT_EMPTY400검수할 가이드라인 본문이 없습니다. 가이드라인을 먼저 생성해주세요.—
GUIDELINE_DRAFT_FAILED500가이드라인 생성 중 오류가 발생했습니다.—
GUIDELINE_DRAFT_REQUIRED400가이드라인 초안을 먼저 작성해주세요.—
GUIDELINE_IMAGE_TYPE_UNSUPPORTED400지원하지 않는 이미지 타입입니다: {type}type
GUIDELINE_ITEM_TYPE_REQUIRED400재생성·추가할 가이드라인 항목 유형이 필요합니다.—
GUIDELINE_MODIFICATION_NOT_ALLOWED400모집이 시작된 이후에는 가이드라인을 수정할 수 없습니다.—
GUIDELINE_SHOT_CANDIDATES_EMPTY400더 추가할 수 있는 장면이 없습니다.—
GUIDELINE_SHOT_TEMPLATE_CORRUPTED500촬영 옵션 템플릿에 사용할 수 있는 장면이 없습니다.collabNo
GUIDELINE_SHOT_TEMPLATE_NOT_FOUND404이 캠페인 유형({platform}·{contentType}·{category})의 촬영 옵션 템플릿을 찾을 수 없습니다.platform, contentType, category
GUIDELINE_TRIAL_NOT_FOUND404데모 가이드라인 세션을 찾을 수 없습니다. 만료되었을 수 있으니 처음부터 다시 시작해주세요.trialId
REGULATION_POLICY_UNSUPPORTED400지원하지 않는 규정 검수 정책입니다: {policyKey}policyKey

진행표(매칭·검수 상태)

코드상태기본 문구(ko)args
NO_APPLICATIONS400처리할 신청 항목이 없습니다.—
NO_ELIGIBLE_ITEMS400처리 가능한 항목이 없습니다.—
PROPOSAL_STATUS_CHANGE_NOT_ALLOWED400제안 상태의 크리에이터는 기업에서 상태를 변경할 수 없습니다. 관리자에게 문의해주세요.—
APPLICATION_PHASE_TRANSITION_INVALID400유효하지 않은 단계 전환입니다: {fromPhase} -> {toPhase}fromPhase, toPhase
CONTRACT_VARIABLE_SERIALIZE_FAILED500계약서 정보를 만드는 중 오류가 발생했습니다.—
PROGRESS_AI_CHECK_STATUS_INVALID400지원하지 않는 AI 체크 상태입니다: {status}status
PROGRESS_AI_CHECK_UPDATE_FAILED500AI 체크 상태 변경 중 오류가 발생했습니다.—
PROGRESS_BLACKLISTED_CREATOR_NOT_ALLOWED400블랙리스트로 등록된 크리에이터가 포함되어 있습니다.—
PROGRESS_EXPOSURE_CANDIDATE_FORBIDDEN403노출 후보는 관리자만 지정할 수 있습니다.—
PROGRESS_ITEM_AI_CHECK_UPDATE_FAILED500AI 검수 상태 변경에 실패했습니다.—
PROGRESS_ITEM_NOT_FOUND404진행 항목을 찾을 수 없습니다.progressItemId, collabNo
PROGRESS_ITEM_PERSON_CHECK_UPDATE_FAILED500최종 검수 상태 변경에 실패했습니다.—
PROGRESS_MATCHED_ELIMINATE_NOT_ALLOWED400매칭 상태에선 제외 상태로 전환할 수 없습니다.—
PROGRESS_MATCHING_STATUS_INVALID400설정할 수 없는 매칭 상태입니다: {matchingStatus}matchingStatus
PROGRESS_MATCHING_STATUS_UPDATE_FAILED500매칭 상태 변경 중 오류가 발생했습니다.—
PROGRESS_NOTE_UPDATE_FAILED500협업 노트 업데이트 중 오류가 발생했습니다.—
PROGRESS_PERSON_CHECK_STATUS_INVALID400지원하지 않는 검수 상태입니다: {status}status
PROGRESS_PERSON_CHECK_UNSUPPORTED400이 캠페인에서는 사용할 수 없는 기능입니다.collabNo
PROGRESS_PERSON_CHECK_UPDATE_FAILED500검수 상태 변경 중 오류가 발생했습니다.—
PROGRESS_TABLE_LOAD_FAILED500캠페인 진행 현황 조회 중 오류가 발생했습니다.—
PROPOSAL_CHARGE_FAILED500제안 처리 중 오류가 발생했습니다.—

배송

코드상태기본 문구(ko)args
DELIVERY_ADDRESSES_LOAD_FAILED500배송지 목록 조회 중 오류가 발생했습니다.—
DELIVERY_CAMPAIGN_UNSUPPORTED400배송이 필요한 캠페인이 아닙니다.collabNo
DELIVERY_STATUS_INVALID400지원하지 않는 배송 상태입니다: {status}status
DELIVERY_STATUS_UPDATE_FAILED500배송 상태 변경 중 오류가 발생했습니다.—
DELIVERY_TRACKING_SAVE_FAILED500운송장 번호 저장 중 오류가 발생했습니다.—

캠페인 예산·적자 잠금

코드상태기본 문구(ko)args
BUDGET_ALREADY_LOCKED409이미 예산이 예약되어 있습니다.applicationId
BUDGET_ALREADY_UNLOCKED409이미 예산이 취소되었습니다.applicationId
INSUFFICIENT_GLOBAL_CREDIT400기업 크레딧이 부족합니다. 크레딧을 충전해주세요.—
NEED_CAMPAIGN_DEPOSIT400캠페인 예산이 부족합니다. 추가 입금이 필요합니다.needed, available
BUDGET_DEFICIT_LOCK_NOT_ALLOWED400이 캠페인은 부족분 lock 정책이 비활성화되어 있습니다.—
BUDGET_INITIAL_DEPOSIT_REQUIRED400캠페인 최초 입금이 필요합니다.—

캠페인 결제·결제 요청

코드상태기본 문구(ko)args
CAMPAIGN_CREDIT_PAYMENT_FAILED500크레딧 결제 처리 중 오류가 발생했습니다.—
CAMPAIGN_PAYMENT_ALREADY_COMPLETED409이미 결제가 완료된 캠페인입니다.collabNo
CAMPAIGN_PAYMENT_NOT_FOUND404캠페인 결제 정보를 찾을 수 없습니다.collabNo
PAYMENT_ALREADY_CANCELED409이미 취소된 결제입니다.—
PAYMENT_CANCEL_FAILED500결제 취소 처리 중 오류가 발생했습니다.—
PAYMENT_CANCEL_UPSTREAM_FAILED502결제사 취소 요청에 실패했습니다. 잠시 후 다시 시도해주세요.—
PAYMENT_HISTORY_LOAD_FAILED500캠페인 결제 내역 조회에 실패했습니다.—
PAYMENT_NOT_FOUND404결제 정보를 찾을 수 없습니다.—
PAYMENT_REFUND_NOT_ALLOWED400크리에이터 모집이 시작되어 환불이 불가능합니다.collabNo
PAYMENT_REQUEST_NOT_ALLOWED400결제 대기 중인 캠페인만 결제 요청을 할 수 있습니다.paymentStatus
PAYMENT_UPSTREAM_FAILED502결제사 응답을 받지 못했습니다. 잠시 후 다시 시도해주세요.—
CREDIT_PAYMENT_DECLINED400결제가 승인되지 않았습니다. ({reason})reason, upstreamCode

크레딧 충전·사용·프로모션

코드상태기본 문구(ko)args
INSUFFICIENT_CREDIT409크레딧 잔액이 부족합니다. (현재: {currentCredit}, 필요: {requiredCredit})currentCredit, requiredCredit
ALREADY_CLAIMED_PROMOTION409이미 받은 이벤트 크레딧입니다.—
CREDIT_CHARGE_FAILED500크레딧 충전 처리 중 오류가 발생했습니다.—
CREDIT_PROMOTION_FORBIDDEN403이벤트 크레딧 지급 대상이 아닙니다.—
CREDIT_REFUND_ALREADY_USED409크레딧이 이미 사용되어 환불이 불가능합니다. 현재 잔액: {currentCredit}, 환불 금액: {refundAmount}currentCredit, refundAmount
CREDIT_TRANSACTION_DELETED410삭제된 크레딧 거래는 환불할 수 없습니다.transactionId
CREDIT_TRANSACTION_NOT_FOUND404크레딧 거래를 찾을 수 없습니다.transactionId
CREDIT_TRANSACTION_TYPE_UNSUPPORTED400충전 거래만 취소할 수 있습니다. 현재 유형: {transactionType}transactionType

세금계산서(볼타)

코드상태기본 문구(ko)args
TAX_INVOICE_BUSINESS_NUMBER_INVALID400유효하지 않은 사업자등록번호입니다.—
TAX_INVOICE_BUSINESS_NUMBER_LENGTH_INVALID400사업자등록번호는 10자리여야 합니다. 주민등록번호 발행은 지원하지 않습니다.businessNumber
TAX_INVOICE_BUSINESS_NUMBER_REQUIRED400사업자등록번호를 입력해주세요.—
TAX_INVOICE_ISSUE_FAILED500세금계산서 발행 중 오류가 발생했습니다.—
TAX_INVOICE_NOT_FOUND404세금계산서를 찾을 수 없습니다.invoiceId
TAX_INVOICE_REQUEST_INVALID400세금계산서 발행 정보가 올바르지 않습니다: {reason}reason, boltaCode
TAX_INVOICE_SUPPLY_AMOUNT_INVALID400공급가액은 10원 단위로 입력해주세요.supplyAmount
TAX_INVOICE_SUPPLY_AMOUNT_REQUIRED400공급가액을 입력해주세요.—
TAX_INVOICE_UPSTREAM_FAILED502세금계산서 발행 연동 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.—
TAX_INVOICE_UPSTREAM_UNAVAILABLE503세금계산서 발행 서비스에 연결할 수 없습니다. 잠시 후 다시 시도해주세요.—

기업 전자계약

코드상태기본 문구(ko)args
BUSINESS_CONTRACT_PDF_UPLOAD_FAILED500계약서 PDF 저장에 실패했습니다. 잠시 후 다시 시도해주세요.—
BUSINESS_CONTRACT_SIGNED_NOT_FOUND404서명이 완료된 계약서가 없습니다.—
BUSINESS_CONTRACT_STAMP_DOWNLOAD_FAILED500등록된 인감 이미지를 불러오지 못했습니다. 인감을 다시 업로드해주세요.—
BUSINESS_CONTRACT_STAMP_FILE_TYPE_UNSUPPORTED400인감 이미지는 PNG 또는 JPG 파일만 업로드할 수 있습니다.extension
BUSINESS_CONTRACT_STAMP_REQUIRED400인감 이미지가 필요합니다. 마이페이지에서 먼저 등록해주세요.—
BUSINESS_CONTRACT_STAMP_UPLOAD_FAILED500인감 이미지 업로드에 실패했습니다. 잠시 후 다시 시도해주세요.—
BUSINESS_CONTRACT_STEP_INVALID400지원하지 않는 계약 진행 단계입니다. (OPEN, FILL, SIGN 중 하나)step

콘텐츠 검수·피드백(기업)

코드상태기본 문구(ko)args
REVIEW_BULK_UPDATE_FAILED500벌크 검수 처리 중 오류가 발생했습니다.—
REVIEW_FEEDBACK_COUNT_EXCEEDED409검수 횟수를 초과했습니다. (현재: {currentCount}/{maxCount}) 검수 추가 요청이 필요합니다.currentCount, maxCount
REVIEW_FEEDBACK_ITEMS_REQUIRED400처리할 피드백 항목이 없습니다.reviewId
SUBMISSION_ITEM_ROUND_MISMATCH400제출물({itemId})이 검수 라운드({reviewId})에 속하지 않습니다.itemId, reviewId
SUBMISSION_ROUND_NOT_OWNED403해당 검수에 대한 권한이 없습니다.reviewId

AI 콘텐츠 검수 도구(블로그·영상)

코드상태기본 문구(ko)args
BLOG_REVIEW_ERROR500블로그 검수 중 오류가 발생했습니다.—
REVIEW_TOOL_CAMPAIGNS_UPSTREAM_FAILED502검수 가능한 캠페인 목록을 불러오지 못했습니다. 잠시 후 다시 시도해주세요.—
REVIEW_TOOL_RATE_LIMITED429현재 검수 요청이 많습니다. 잠시 후 다시 시도해주세요.—
REVIEW_TOOL_VIDEO_FAILED500영상 검수 중 오류가 발생했습니다. 잠시 후 다시 시도해주세요.—
REVIEW_TOOL_VIDEO_UPSTREAM_FAILED502영상 검수 서버 연동에 실패했습니다. 잠시 후 다시 시도해주세요.—

최종 제출물(기업)

코드상태기본 문구(ko)args
FINAL_SUBMISSION_RECORD_NOT_FOUND404최종 제출물을 찾을 수 없습니다.finalSubmissionId
FINAL_SUBMISSION_RE_REQUEST_ITEMS_REQUIRED400재요청 항목을 선택해주세요.—
FINAL_SUBMISSION_RE_REQUEST_SERIALIZE_FAILED500재요청 처리 중 오류가 발생했습니다.—
UPLOAD_DATE_CANDIDATE_DATES_REQUIRED400후보 날짜를 선택해주세요.—
UPLOAD_DATE_CANDIDATE_EMAIL_SEND_FAILED500업로드 후보일 안내 메일 발송에 실패했습니다. 잠시 후 다시 시도해주세요.—
UPLOAD_DATE_TARGET_REQUIRED400업로드일을 지정할 최종 제출물 또는 신청 건 정보가 필요합니다.—
UPLOAD_DATE_TYPE_INVALID400유효하지 않은 업로드일 유형입니다.—

제출 독촉

코드상태기본 문구(ko)args
SUBMISSION_REMINDER_ALREADY_SENT_TODAY409오늘 이미 독촉 메일을 보냈습니다. 내일 다시 시도해주세요.—
SUBMISSION_REMINDER_LIMIT_REACHED409이 단계의 독촉 메일은 최대 {maxCount}회까지 보낼 수 있습니다.sentCount, maxCount
SUBMISSION_REMINDER_FIELD_REQUIRED400독촉 메일 발송에 필요한 '{field}' 값이 없습니다.field
SUBMISSION_REMINDER_UNAVAILABLE503독촉 메일 발송 기능을 일시적으로 사용할 수 없습니다. 잠시 후 다시 시도해주세요.—
SUBMISSION_REMINDER_UPSTREAM_FAILED502독촉 메일 발송 서버와 통신하지 못했습니다. 잠시 후 다시 시도해주세요.—

콘텐츠 내보내기

코드상태기본 문구(ko)args
CONTENT_EXPORT_CREATORS_TOO_MANY400한 번에 내보낼 수 있는 크리에이터는 {maxCreators}명까지입니다. 현재 {count}명입니다.maxCreators, count
CONTENT_EXPORT_FORMAT_UNSUPPORTED400지원하지 않는 내보내기 형식입니다. xlsx, sheet, pdf 중 하나를 선택해주세요.format
CONTENT_EXPORT_GENERATION_FAILED500내보내기 파일 생성에 실패했습니다. 잠시 후 다시 시도해주세요.format
CONTENT_EXPORT_ROUND_INVALID400'{round}'은(는) 지원하지 않는 회차입니다. 1차 또는 2차만 선택할 수 있습니다.round
CONTENT_EXPORT_SHEET_SPLIT_UNSUPPORTED400지원하지 않는 시트 분리 방식입니다. creator 또는 creator-round 중 하나를 선택해주세요.sheetSplit
CONTENT_EXPORT_SHEET_UPSTREAM_FAILED502구글 시트를 만들지 못했습니다. 엑셀로 내려받아 주세요.stage

메타 광고 인사이트

코드상태기본 문구(ko)args
META_ADSET_NOT_OWNED403접근 권한이 없는 Meta 광고세트입니다.adsetId
META_AD_NOT_OWNED403접근 권한이 없는 Meta 광고입니다.adId
META_CAMPAIGN_NOT_OWNED403접근 권한이 없는 Meta 광고 캠페인입니다.campaignId
META_MAPPING_NOT_FOUND404연결된 Meta 광고 캠페인이 없습니다.collabNo

리포트

코드상태기본 문구(ko)args
AI_INVALID_JSON400AI 응답을 해석하지 못했습니다. 다시 시도해주세요.—
REPORT_CATEGORY_EXTRACTION_FAILED500브랜드 카테고리 추출 중 오류가 발생했습니다.—

파일 업로드(기업)

코드상태기본 문구(ko)args
BRAND_LOGO_FILE_TYPE_UNSUPPORTED400지원하지 않는 로고 파일 형식입니다: {extension}. 허용 형식: {allowed}extension, allowed

함께 쓰는 공통·크리에이터 코드

광고주·에이전시 경로에서도 아래 CreatorErrorCode 코드가 나갑니다. 문구는 크리에이터 오류 코드 사전과 같습니다.

코드상태기본 문구(ko)args
APPLICATION_NOT_FOUND404신청 건을 찾을 수 없습니다.applicationId
AUTH_FORBIDDEN403접근 권한이 없습니다.—
AUTH_MEMBER_NOT_FOUND404회원 정보를 찾을 수 없습니다.—
CAMPAIGN_NOT_FOUND404존재하지 않는 캠페인입니다.collabNo
CONTACT_VERIFICATION_CODE_MISMATCH400인증번호가 올바르지 않습니다.—
CONTACT_VERIFICATION_EMAIL_SEND_FAILED500인증 이메일 발송에 실패했습니다. 잠시 후 다시 시도해주세요.—
CONTACT_VERIFICATION_EXPIRED400인증번호가 만료되었습니다. 다시 요청해주세요.—
CONTRACT_INVALID_STATE400현재 상태에서는 해당 작업을 수행할 수 없습니다.requiredStep
CONTRACT_NOT_FOUND404존재하지 않는 계약서입니다.—
CONTRACT_PDF_GENERATION_FAILED500계약서 PDF 생성에 실패했습니다.—
CREATOR_LOGIN_FAILED500로그인 처리 중 오류가 발생했습니다.—
DELIVERY_INFO_NOT_FOUND404배송 정보가 없습니다.applicationId
FEEDBACK_NOT_FOUND404피드백을 찾을 수 없습니다.—
FILE_EMPTY400업로드된 파일이 비어 있습니다. 네트워크 상태를 확인한 뒤 다시 업로드해 주세요.—
FILE_NAME_REQUIRED400파일명이 없습니다.—
FILE_UPLOAD_FAILED500파일 업로드 중 오류가 발생했습니다.—
GUIDELINE_NOT_FOUND404존재하지 않는 가이드라인입니다.collabNo
GUIDELINE_NOT_OWNED403해당 가이드라인에 접근 권한이 없습니다.—
INTERNAL_SERVER_ERROR500서버 내부 오류가 발생했습니다.—
INVALID_INFLUENCE_USER404크리에이터 정보를 찾을 수 없습니다.—
INVALID_SNS_URL400유효하지 않은 SNS URL입니다.—
MALFORMED_REQUEST_BODY400'{field}' 값의 형식이 올바르지 않습니다.field
PYTHON_SERVER_ERROR500SNS 정보를 불러오지 못했습니다. 잠시 후 다시 시도해주세요.—
REQUEST_PART_REQUIRED400필수 업로드 항목 '{part}'이 없습니다.part
SOCIAL_LOGIN_STATE_INVALID400로그인 요청이 만료되었거나 올바르지 않습니다. 처음부터 다시 로그인해주세요.—
SOCIAL_LOGIN_STATE_REQUIRED400로그인 요청 정보가 없습니다. 처음부터 다시 로그인해주세요.—
SOCIAL_LOGIN_UPSTREAM_FAILED502소셜 로그인 제공자와 통신하지 못했습니다. 잠시 후 다시 시도해주세요.provider
SUBMISSION_ITEM_NOT_FOUND404제출물을 찾을 수 없습니다.itemId
SUBMISSION_ROUND_NOT_FOUND404검수 라운드를 찾을 수 없습니다.reviewId

변경 이력

2026-10-08 (2차) — 광고주·에이전시 기능별 점검 후속

광고주 21개·에이전시 6개 기능의 실패 출구를 전수 점검해 남은 비규격 응답을 옮겼습니다.

새 코드 8개: CREDIT_PAYMENT_DECLINED, BUSINESS_LOGIN_ID_DUPLICATE, BUSINESS_MANAGER_FIELD_TOO_LONG, SUBMISSION_REMINDER_ALREADY_SENT_TODAY, SUBMISSION_REMINDER_LIMIT_REACHED, AGENCY_CLIENT_LOGIN_ID_INVALID, AGENCY_CLIENT_HAS_DEPENDENCIES, AGENCY_CREDIT_MEMO_TOO_LONG. 프론트 오류 사전(packages/ui/src/lib/api-errors/*.json)에 키를 추가해야 현지화됩니다(없으면 서버 한국어 문구가 그대로 보임).

엔드포인트이전이후프론트 대응
POST /ai/payments/credit/confirm(카드 승인 거절)CandyPay 코드(REJECT_CARD_COMPANY 등) + CandyPay 한국어 원문CREDIT_PAYMENT_DECLINED(reason=결제사 원문, upstreamCode=결제사 코드)사전 키 추가. 실패 화면의 "오류 코드" 표기가 CREDIT_PAYMENT_DECLINED 로 바뀜(결제사 코드는 args.upstreamCode)
POST /ai/member/signup/business이미 있는 아이디면 기존 계정을 덮어쓰고 200BUSINESS_LOGIN_ID_DUPLICATE(loginId)사전 키 추가. 평소엔 /member/check 가 먼저 막아 도달 드묾
POST /ai/member/signup/business · PATCH /ai/business/licenseS3 업로드 실패 → BUSINESS_REGISTRATION_FAILED / INTERNAL_SERVER_ERRORFILE_UPLOAD_FAILEDuseSignUp 이 FILE_UPLOAD_FAILED 를 표시하도록 분기 필요(현재 미분기 → 무표시)
POST /ai/member/signup/business · PATCH /ai/business/license내부 알림 메일 실패 시 저장은 됐는데 실패 응답성공 응답(메일 실패는 로그만)없음
POST /ai/business/contents/submission-reminder(실패)HTTP 200 · code 없음 · data.error 문자열만HTTP 200 그대로 · 봉투 status/code/args 에 SUBMISSION_REMINDER_*. data.error 는 ALREADY_SENT_TODAY / MAX_REMINDERS_REACHED 유지, 그 밖의 node 원문은 SUBMISSION_REMINDER_UPSTREAM_FAILED 로 정규화없음(기존 data.error 분기 그대로 동작). 이후 code 기준으로 옮기면 됨
POST /ai/business/license/check판독 지연 시 nginx 504 HTML(봉투 없음)120초 타임아웃 → BUSINESS_LICENSE_CHECK_FAILED없음
POST /ai/business/collab/draft(담당자) · PATCH /ai/business/collab/{campaignNo}/manager컬럼 길이 초과 → DATABASE_ERRORBUSINESS_MANAGER_FIELD_TOO_LONG(field, maxLength)사전 키 추가. 입력칸 maxLength 권장(이름 100·연락처 50·이메일 100)
GET /member/check/{id}500 + 본문 false전역 DATABASE_ERROR / INTERNAL_SERVER_ERROR 봉투없음
GET /ai/business/find/password메일 발송 중 IllegalArgumentException → 404 + 예외 원문CONTACT_VERIFICATION_EMAIL_SEND_FAILED없음
POST /agency/me/clients60자 초과 아이디 → DATABASE_ERRORAGENCY_CLIENT_LOGIN_ID_INVALID(maxLength)사전 키 추가
DELETE /agency/me/clients/{id}남은 참조 데이터 → DATABASE_ERRORAGENCY_CLIENT_HAS_DEPENDENCIES사전 키 추가
POST /agency/me/clients/{id}/credit메모 500자 초과 → DATABASE_ERRORAGENCY_CREDIT_MEMO_TOO_LONG(maxLength)사전 키 추가. 메모 입력 maxLength=500 권장
POST /agency/branding/favicon · PATCH /agency/me/branding손상 이미지 디코딩 예외 → INTERNAL_SERVER_ERROR / REQUEST_ARGUMENT_INVALID, 로고 저장 실패AGENCY_FAVICON_IMAGE_UNSUPPORTED. 로고 저장 중 파비콘 파생 실패는 로그만 남기고 저장은 진행없음

2026-10-08 — 미규격 지점 치환

새 코드 5개: CAMPAIGN_CREATOR_TARGET_COUNTRY_INVALID, CAMPAIGN_PRODUCT_IMAGE_REQUIRED, PAYMENT_NOT_FOUND, REVIEW_FEEDBACK_ITEMS_REQUIRED, APPLICATION_PHASE_TRANSITION_INVALID. 공통 REQUEST_ARGUMENT_INVALID 는 크리에이터 오류 코드에 있습니다.

엔드포인트이전이후프론트 대응
POST /ai/business/contents/review/{reviewId}/feedbacks/bulkINVALID_DATA(5가지 상황 공통)REVIEW_FEEDBACK_ITEMS_REQUIRED · SUBMISSION_ROUND_NOT_FOUND · REVIEW_FEEDBACK_COUNT_EXCEEDED · SUBMISSION_ITEM_NOT_FOUND · SUBMISSION_ITEM_ROUND_MISMATCH필수(prod 배포 전): 대시보드·어드민 FeedbackDraftContext 가 REVIEW_FEEDBACK_ITEMS_REQUIRED 를 "이미 처리됨 → 성공"으로 받도록 수정
PUT /ai/progress-table/items/bulk/user/matching-status(제안 시 예산 부족)INVALID_DATANEED_CAMPAIGN_DEPOSIT(needed, available) · INSUFFICIENT_GLOBAL_CREDIT없음. 기존 크레딧 부족 모달 분기가 이제 동작
POST /ai/payments/collab/confirm(잔액 부족)INVALID_DATAINSUFFICIENT_CREDIT(currentCredit, requiredCredit)없음. isInsufficientCreditError 가 이미 받음
GET /ai/payments/{paymentKey}NOT_FOUND(옛 결제 enum) · INTERNAL_SERVER_ERROR 문자열PAYMENT_NOT_FOUND · INTERNAL_SERVER_ERROR사전 키 추가
POST /ai/business/collab/draft(타겟 국가 오류)REQ_001CAMPAIGN_CREATOR_TARGET_COUNTRY_INVALID(country)사전 키 추가
/ai/business/meta/mapping*, /ai/business/meta/business-mapping*(비관리자 호출)FORBIDDENAUTH_FORBIDDEN. message 에는 자리별 안내("관리자만 매핑을 생성할 수 있습니다." 등)를 그대로 둠없음
캠페인 이미지 분석(analyzeImagesByCollabNo)CAMPAIGN_NOT_FOUND(옛 enum) · INVALID_DATACAMPAIGN_NOT_FOUND(collabNo) · CAMPAIGN_PRODUCT_IMAGE_REQUIRED없음(서버 내부 처리)
어드민 신청 단계·데모 후보·모집 마감·피드백 승인 내부 검증옛 enumAPPLICATION_PHASE_TRANSITION_INVALID · PROGRESS_MATCHING_STATUS_INVALID · PROGRESS_MATCHED_ELIMINATE_NOT_ALLOWED · CAMPAIGN_NOT_FOUND · SUBMISSION_ROUND_NOT_FOUND · AUTH_TOKEN_REQUIRED없음

아직 규격 밖인 구간

  • 문구로 분기하는 INVALID_DATA — 잔액 부족(결제 버튼)처럼 프론트가 INVALID_DATA 와 한국어 문구 일부로 분기하는 곳이 남아 있습니다. 진행표 매칭 예산 부족·캠페인 결제 잔액 부족·벌크 피드백은 2026-10-08 에 옮겼습니다(아래 변경 이력).
  • 리포트(/ai/report/**)의 SERVER_ERROR — 리포트 로그인 등이 SERVER_ERROR 로 분기해 유지했습니다.
  • 블로그 검수 도구의 BLOG_REVIEW_ERROR — 프론트 분기 대상이라 유지했습니다.
  • 어드민 전용 경로 — 이번 범위 밖입니다.
  • 아임웹 연동 GET /ai/imweb/oauth/authorize — ctx 토큰 검증 실패 시 401 + 본문 Invalid ctx(plain text). 가입 직후에만 호출되고 FE 는 로그만 남겨 화면 노출이 없으며, prod 호출이 월 1건 수준이라 2026-10-08 점검에서 보류했습니다.
  • 도달 불가 옛 enum — 사업자등록증 판독 빈 파일(PythonApiService, 컨트롤러가 먼저 막음), 파비콘 변환 확장자(AgencyFaviconConverter, 업로드 경로가 먼저 막음), 어드민 전용 에이전시 업로드 대상(AgencyService.resolveUploadTarget)은 사용자에게 닿지 않아 남겨 두었습니다.

On this page