오류 봉투(envelope)
오류는 다음 형태와 함께 200이 아닌 상태 코드를 반환합니다:Fail-closed: 오류는 결코 깨끗한 결과가 아닙니다
Guard API는 fail-closed입니다. Guardian이 완전히 분석할 수 없는 요청은 HTTP 오류를 반환합니다 — 탐지 결과가 빈200으로 절대 격하되지 않습니다. 따라서 PASS는 항상 “분석 완료, 아무것도 탐지되지 않음”을 의미하며, 장애가 조용히 우회로 바뀌는 일이 없습니다. Guardian 측 실패는 두 가지 유형으로 나뉩니다:
- 입력 오류(4xx) — 입력 자체를 처리할 수 없는 경우(예: 내용을 추출할 수 없는 손상된 파일).
- 처리 실패(5xx) — 입력은 정상이지만 Guardian이 완료하지 못한 경우(예: AI 모델 호출 실패 또는 타임아웃).
인증 — 401
누락되었거나, 잘못되었거나, 폐기된 API 키는error.details: "API_KEY_INVALID"와 함께 HTTP 401을 반환합니다. X-Starfort-Guard-Api-Key 헤더와 키가 여전히 활성 상태인지 확인하세요. 인증을 참고하세요.
호출을 중단시키는 상태
호출은 Guardian이 실행되기 전에 사전 검증을 거칩니다. 다음은 호출을 중단시킬 수 있는 상태이며, 검사되는 순서대로 나열되어 있습니다:| 상태 | 발생한 일 | 조치 |
|---|---|---|
| Auth failure | 키가 누락되었거나, 찾을 수 없거나, 폐기되었습니다. | 401(위)을 반환합니다. |
| API not found | 키와 일치하는 API가 없습니다. | 올바른 키를 사용하고 있는지 확인하세요. |
| API key inactive | 관리자가 키를 비활성화했습니다. | 다시 활성화하거나 다른 키를 사용하세요. API 키 관리를 참고하세요. |
| Kill Switch active | 관리자가 조직, 프로젝트, 또는 Guardian에 Kill Switch를 활성화했습니다. | 트래픽이 의도적으로 차단된 상태입니다. 비활성화될 때까지 기다리세요. |
Unsupported processType | 값이 Guardian이 선언한 것이 아닙니다. | 지원되는 프로세스 타입을 사용하세요. 오류 메시지에 목록이 표시됩니다. |
| Input Type not enabled | 콘텐츠 파트의 타입이 Guardian에서 활성화되지 않았습니다. | Guardian에서 활성화하거나 해당 파트를 보내지 마세요. (파일 파트는 BLOCK 처리 방식에서만 여기서 실패합니다 — 멀티모달을 참고하세요.) |
| Limit exceeded | 텍스트 길이 또는 파일 크기가 Guardian의 한도를 초과했습니다. | 페이로드를 줄이세요. |
| Guardian failure | Guardian 엔드포인트에 도달할 수 없거나 오류가 발생했습니다. | 백오프를 적용해 재시도하세요. |
위 상태에 대한 정확한
error.code 값과 HTTP 상태는 배포 환경에 따라 다를 수 있습니다. 위의 401 인증 응답이 안정적인 계약입니다. 항상 HTTP 상태를 먼저 분기한 다음 error.details로 분기하세요.트레이싱되는 항목
키가 활성 상태로 확인된 이후의 실패 — 미지원processType, Input Type 불일치, 한도 위반, Guardian 실패 — 는 Opticon 트레이스로 기록됩니다(오류 정보 + 입력 메타데이터. 단, 메시지 본문이나 파일 내용은 제외). 그 이전 상태 — auth failure, API not found, inactive key, Kill Switch — 는 트레이싱되지 않습니다. 이는 별도 로그에서 처리되는 보안/거버넌스 이벤트입니다.
권장 처리 방식
200일 때 `action`으로 분기
PASS / MASK / BLOCK — 응답 형식을 참고하세요.