Prosody

에러 코드

오류 응답 형식

오류 발생 시 다음과 같은 JSON 형식으로 응답합니다.

음성 API

json
{
  "error": {
    "code": "E4001",
    "message": "API key is required. Provide X-API-Key header.",
    "details": "optional additional info"
  }
}

AICC API

AICC는 기존 클라이언트 호환을 위해 같은 공통 코드를 평면 형식으로 반환합니다.

json
{
  "error": "message or a user message in history is required",
  "code": "E4201"
}

규칙

모든 공개 API는 같은 규칙으로 오류를 반환합니다.

  1. 상황을 설명하는 실패 분류를 고릅니다. 분류가 코드를 정하고, 코드가 HTTP 상태와 기본 메시지를 정합니다.
  2. 메시지는 짧은 영어 문장이며 내부 시스템 정보를 담지 않습니다. 엔드포인트별 맥락은 details(음성 API) 또는 메시지(AICC)에 담습니다.
  3. 음성 API는 중첩 객체를, AICC API는 평면 객체를 반환합니다. 두 형식 모두 같은 코드 값을 사용합니다.
  4. 재시도할 수 있는 상황(의존 서비스 불가, 과부하, 재시작 중, 사용할 수 없는 결과 반환)은 E5002, 엔드포인트 자체의 제한 시간 초과는 E5003, 그 밖의 예상치 못한 오류는 E5001입니다.

상황별 오류 코드

서버는 상황에 맞는 실패 분류를 하나 고르고, 분류마다 정해진 코드 하나를 반환합니다.

상황별 오류 코드
분류코드사용하는 경우예시

API 키 누락

api_key_missing
E4001401
API 키가 필요한 엔드포인트를 키 헤더 없이 호출했습니다.No X-API-Key header on /v1/agents/chat

유효하지 않은 API 키

api_key_invalid
E4002401
알 수 없거나, 폐기·만료되었거나, 다른 조직의 키입니다.Revoked key · Key of a different organization

권한 없음

permission_denied
E4101403
인증은 되었지만 이 기능이나 리소스를 사용할 수 없습니다(요금제 제한, 기능 사용 여부, 소유권).Plan does not include the feature · Resource owned by another organization

잘못된 요청

invalid_request
E4201400
보낸 그대로는 처리할 수 없는 요청입니다: 잘못된 JSON, 빠졌거나 유효하지 않은 필드, 서로 맞지 않는 식별자, 알 수 없는 enum 값.invalid JSON body · turn_id and turnId must match · message is required

텍스트 길이 초과

text_too_long
E4202400
텍스트 필드가 엔드포인트의 글자 수 한도를 넘었습니다.TTS text over the per-request limit

유효하지 않은 오디오

invalid_audio
E4203400
오디오 입력의 형식, 샘플레이트, 크기 또는 길이를 지원하지 않습니다.Reference audio longer than allowed · Unsupported codec

요청 크기 초과

payload_too_large
E4204413
요청 body나 구조화된 필드가 엔드포인트의 바이트 한도를 넘었습니다.Body over the limit · state is too large

리소스 없음

resource_not_found
E4301404
에이전트, 목소리, 단어장, 작업 또는 경로가 없거나 호출자에게 보이지 않습니다.Agent not found · HTTP route not found

리소스 준비 전

resource_not_ready
E4302409
리소스는 있지만 아직 이 요청을 처리할 수 없습니다: 게시 버전이 없거나, 처리 중이거나, 아직 등록되지 않았습니다.Agent has no published version · Voice still processing

사용량 한도 초과

usage_limit_exceeded
E4401429
조직의 요금제 사용량 한도에 도달했습니다.Monthly character quota exhausted

게스트 한도 초과

guest_limit_exceeded
E4402429
게스트(로그인하지 않은 체험) 일일 한도에 도달했습니다.Guest demo sessions per day

호출 제한 초과

rate_limit_exceeded
E4403429
제한 시간 안에 요청 수나 글자 수가 너무 많습니다.Too many requests per minute

허용되지 않은 메서드

method_not_allowed
E4501405
경로는 있지만 이 HTTP 메서드는 지원하지 않습니다.GET on a POST-only route

크레딧 부족

insufficient_credits
E4601402
조직이 이 요청에 필요한 크레딧을 예약할 수 없습니다.AICC credits are insufficient

일시적 서비스 불가

service_unavailable
E5002503
의존 서비스를 사용할 수 없거나, 과부하·재시작 중이거나, 설정이 잘못되었거나, 사용할 수 없는 응답을 반환했습니다. 클라이언트는 재시도할 수 있습니다.Speech or language model service unavailable or overloaded · Dependent service returned an unusable result · Agent runtime configuration cannot be loaded · Service restarting

처리 시간 초과

processing_timeout
E5003500
엔드포인트 자체의 제한 시간이 작업 완료 전에 지났습니다.Synthesis exceeded 150 seconds · Turn deadline exceeded

내부 오류

internal_error
E5001500
다른 분류에 해당하지 않는 예상치 못한 서버 오류입니다. 내부 정보는 노출하지 않습니다.Unhandled error · Invariant violated

AICC 런타임 대응 예시

AICC 엔드포인트도 같은 실패 분류를 따르며, 자주 만나는 상황에는 다음 코드로 응답합니다.

AICC 런타임 대응 예시
상황코드HTTP
입력값이 잘못됨(빈 메시지, 잘못된 JSON 등)E4201400
에이전트에 게시 버전이 없음E4302409
답변 생성에 필요한 서비스를 일시적으로 사용할 수 없음E5002503
턴 처리 제한 시간을 넘김E5003500

에러 코드 목록

인증 (Authentication)

코드HTTP설명
E4001401API 키가 필요합니다. X-API-Key 헤더를 제공하세요.
E4002401유효하지 않은 API 키

권한 (Authorization)

코드HTTP설명
E4101403권한이 없습니다

입력 검증 (Validation)

코드HTTP설명
E4201400잘못된 요청입니다
E4202400텍스트가 최대 길이를 초과했습니다
E4203400유효하지 않은 오디오
E4204413요청 body가 허용 크기를 초과했습니다

리소스 (Resource)

코드HTTP설명
E4301404리소스를 찾을 수 없습니다
E4302409리소스가 준비되지 않았습니다

사용량 제한 (Rate Limit)

코드HTTP설명
E4401429사용량 한도를 초과했습니다
E4402429게스트 일일 한도를 초과했습니다
E4403429분당 요청 또는 글자 수 한도를 초과했습니다

메서드 (Method)

코드HTTP설명
E4501405허용되지 않은 메서드입니다

결제 및 크레딧 (Billing)

코드HTTP설명
E4601402요청을 처리할 크레딧이 부족합니다

서버 (Server)

코드HTTP설명
E5001500내부 서버 오류
E5002503일시적으로 서비스를 사용할 수 없습니다
E5003500처리 시간이 초과되었습니다