에러 코드
화면에 뜬 코드를 찾아 무슨 뜻이고 무엇을 하면 되는지 확인한다.
에러 응답은 항상 이 모양이다.
{ "error": { "code": "insufficient_credit", "message": "…", "detail": { } } }
code는 프로그램이 읽는 값이고 message는 사람이 읽는 값이다. 자동화 테스트에서는
code로 단언한다. 메시지 문구는 다듬어질 수 있지만 코드는 유지된다.
인증·계정
| 코드 | 뜻 | 조치 |
|---|---|---|
invalid_credentials | 아이디·비밀번호 불일치 | 남은 시도 횟수가 함께 표시된다 |
login_locked | 5회 실패로 15분 잠김 | 기다리거나 관리자에게 비밀번호 재설정을 요청한다 |
member_deactivated | 계정이 비활성화됨 | Org Admin에게 활성화를 요청한다 |
invalid_team_code | 가입 팀 코드 불일치 | Org Admin에게 현재 코드를 다시 받는다 |
username_taken | 같은 팀에 같은 아이디 존재 | 다른 아이디를 쓴다 |
invalid_username | 아이디 형식 위반 | 영문 소문자·숫자·. _ -, 3~30자 |
password_too_short | 8자 미만 | 8자 이상으로 만든다 |
token_expired | 토큰 만료 | 다시 로그인한다 |
token_invalid | 토큰이 유효하지 않음 | 다시 로그인한다 |
token_type_mismatch | 팀 토큰으로 관리자 API 호출 등 | 맞는 계정으로 로그인한다 |
super_admin_only | Super Admin 전용 작업 | 요청 경로가 다르다. 플랫폼 운영에 문의한다 |
크레딧
| 코드 | 뜻 | 조치 |
|---|---|---|
insufficient_credit | 잔여 부족 | 예산을 늘리거나 크레딧을 구매한다 |
payment_unconfirmed | 입금 확인 체크 안 됨 | 입금을 확인하고 체크박스를 누른다 |
budget_below_key_sum | 팀 예산 < 발급된 키 예산 합계 | 키를 먼저 폐기·감액한다 |
budget_below_used | 키 예산 < 이미 쓴 금액 | 사용분 이상으로만 감액된다 |
amount_required | 증액 금액 누락 | 금액을 입력한다 |
active_holds | 활성 선점이 남음 | 세션·예약을 정리한다 |
인스턴스 실행
| 코드 | 뜻 | 조치 |
|---|---|---|
no_capacity | 가용 노드 없음 | 노드 추가 요청을 보내거나 기다린다 |
node_busy | 그 노드를 다른 세션이 씀 | 다른 노드를 쓴다 |
node_disabled | 노드가 비활성 상태 | Super Admin이 활성화해야 한다 |
node_unregistered | 노드가 풀에서 해제됨 | 다른 노드로 시작한다 |
session_exists | 이미 실행 중인 세션 | 중지 후 다시 시작한다 |
not_stopped | 중지 상태가 아님 | 먼저 중지한다 |
not_running | 실행 중이 아님 | 상태를 확인한다 |
type_not_allowed | 팀에 허용되지 않은 유형 | Org Admin에게 허용을 요청한다 |
requires_reservation | 서버급 유형은 예약이 필요 | GPU 예약에서 신청한다 |
reservation_managed | 예약이 관리하는 인스턴스 | 자동 중지 시각은 예약 종료 시각으로 고정된다 |
reserved_immutable | 예약 인스턴스는 유형 변경 불가 | 새 예약을 신청한다 |
no_ec2_mapping | 유형에 EC2 타입 매핑 없음 | Super Admin이 단가표에서 설정해야 한다 |
modify_type_failed | 프로바이더가 유형 변경을 거부 | 메시지의 원인을 확인한다 |
temporal_unavailable | 워크플로우 엔진 응답 없음 (503). 인스턴스 중지 경로에서만 난다 | 잠시 후 다시 시도한다. 세션은 계속 과금되니 반드시 재시도한다 |
보안 그룹
| 코드 | 뜻 | 조치 |
|---|---|---|
no_node | 노드에 바인딩되지 않은 인스턴스 | 노드가 배정된 뒤 관리할 수 있다 |
sg_error | 프로바이더가 규칙 변경을 거부 | 메시지의 원인을 확인한다 |
예약
| 코드 | 뜻 | 조치 |
|---|---|---|
ack_required | 선불·취소 불가 동의 없음 | 동의 체크박스를 누른다 |
invalid_duration | 기간 규칙 위반 | 1~14일, 또는 7일 배수로 최대 182일 |
instant_type | 즉시 유형은 예약 대상이 아님 | 바로 실행한다 |
cancellation_not_allowed | 승인된 예약은 취소 불가 | 조건 변경이 필요하면 운영에 문의한다 |
not_adjusted | 조정안이 없음 | 상태를 확인한다 |
not_pending | 승인 대기 상태가 아님 | 이미 처리된 건이다 |
no_workflow | 예약 워크플로우를 찾을 수 없음. Temporal 순단도 여기로 온다 | 잠시 후 다시 시도하고, 계속되면 운영에 문의한다 |
reservations_open | 진행 중 예약이 남음 | 승인 처리하거나 정리한다 |
org_mismatch | 요청 조직과 등록 조직이 다름 | 맞는 조직의 노드로 채운다 |
already_decided | 이미 처리된 요청 | 목록을 새로고침한다 |
서버리스
| 코드 | HTTP | 뜻 | 조치 |
|---|---|---|---|
invalid_api_key | 401 | 폐기됐거나 없는 키 | 새 키를 발급받는다 |
team_locked | 403 | 팀이 잠김 | 예산을 증액해 잠금을 해제한다 |
budget_exceeded | 429 | 키 예산 소진 | Org Admin에게 증액을 요청한다 |
model_not_found | 404 | 접근 없는 모델 또는 단가 미등록 | 모델 접근을 요청한다 |
rate_limit_exceeded | 429 | RPM·TPM 초과 | 호출 속도를 줄인다 |
no_pending_key | 404 | 수령 대기 중인 키가 없음 | Org Admin이 먼저 발급해야 한다 |
already_revoked | 409 | 이미 폐기된 키 | 목록을 새로고침한다 |
alias_budget_mismatch | 409 | 같은 이름 키가 다른 예산으로 존재 | 폐기 후 재발급하거나 수정한다 |
key_create_conflict | 409 | 동시 생성 경합 | 잠시 후 다시 시도한다 |
upstream_error · litellm_error | 502 | LLM 업스트림 오류 | 잠시 후 다시 시도한다. 예산은 차감되지 않는다 |
no_active_key | 409 | 활성 키가 없음 | 키를 먼저 발급·수령한다 |
조직·팀·노드 관리
| 코드 | 뜻 | 조치 |
|---|---|---|
duplicate | 이름·슬러그 중복 | 다른 이름을 쓴다 |
duplicate_name | 같은 이름의 팀 존재 | 다른 이름을 쓴다 |
duplicate_admin_email | 어드민 이메일이 이미 쓰임 | 다른 이메일을 쓴다. 메시지에 어느 조직인지 나온다 |
duplicate_instance | 이미 등록된 인스턴스 ID | 노드 하나는 한 곳에만 등록된다 |
confirm_mismatch | 이름 확인 불일치 | 정확히 입력한다 |
sessions_open | 실행 중 세션이 남음 | 먼저 중지한다 |
in_use | 사용 중인 노드 | 세션을 정리한 뒤 다시 시도한다 |
not_locked | 잠겨 있지 않음 | 상태를 확인한다 |
verify_failed | 인스턴스 검증 실패 | 자격증명·리전·인스턴스 ID를 확인한다 |
detect_failed | EC2 타입 감지 실패 | 수동으로 유형을 지정한다 |
sim_in_aws_mode | aws 모드에 시뮬레이션 ID | 실제 i-… ID를 입력한다 |
invalid_arn | IAM 역할 ARN 형식 오류 | ARN을 확인한다 |
type_in_use | 노드가 붙어 있는 유형 | 노드를 해제한 뒤 삭제하거나 비활성화한다 |
type_referenced | 사용 이력이 있는 유형 | 삭제 대신 비활성화한다 |
webhook_scheme | 웹훅이 https가 아님 | https URL을 쓴다 |
webhook_internal | 내부·사설 주소로의 웹훅 | 외부에서 접근 가능한 주소를 쓴다 |
원장 내부
일반 사용에서는 보이지 않는다. 보이면 운영에 알린다.
| 코드 | 뜻 |
|---|---|
hold_exists | 같은 참조의 선점이 이미 있음 |
hold_not_found | 활성 선점 없음 |
capture_exceeds_hold | 확정액이 선점 잔여를 초과 |
idem_mismatch | 멱등키는 있으나 선점이 없음 |
ledger_internal_error | 원장 서비스 응답 이상 (502) |
자주 헷갈리는 것
no_capacity와 예약 즉시 실행에서만 나온다. 서버급 예약은 가용과 무관하게 신청되므로
이 코드로 막히지 않는다.
insufficient_credit과 자동 반려 예약 승인 시 크레딧이 부족하면 API 오류가 아니라
예약이 자동 반려된다. 팀과 운영 양쪽에 알림이 간다.
team_locked와 member_deactivated 전자는 팀 전체가 크레딧 소진으로 막힌 것이고,
후자는 그 계정만 막힌 것이다.
already_revoked와 invalid_api_key 전자는 관리 API에서 폐기된 키를 다시 다룰 때,
후자는 게이트웨이에서 폐기된 키로 호출할 때다.