오류
오류
오류 메시지와 해결 방법을 살펴보세요.
API 오류
ElevenLabs는 요청의 성공 또는 실패를 나타내기 위해 표준 HTTP 상태 코드를 사용합니다. 또한 모든 API 요청은 오류 정보를 포함하는 detail 속성이 있는 JSON 객체를 반환합니다.
일반적으로 200 HTTP 상태 코드는 요청이 성공했음을 나타냅니다. 4xx 코드는 잘못된 매개변수나 필수 필드 누락 등 요청에 문제가 있음을 나타냅니다. 500 HTTP 상태 코드는 ElevenLabs 서버에 문제가 있음을 나타내며, 이는 드물게 발생합니다.
오류 속성
| 속성 | 설명 |
|---|---|
type | 발생한 오류의 유형입니다. 가능한 값은 아래 표를 참고하세요. |
code | 오류 코드입니다. 유형보다 더 구체적이며, 오류 원인을 파악하는 데 사용할 수 있습니다. |
message | 오류 메시지입니다. 오류에 관한 자세한 정보를 제공합니다. |
status | 오류 상태입니다. 더 이상 사용되지 않는 레거시 필드이므로 대신 code 속성을 사용하세요. |
request_id | 오류의 요청 ID입니다. 오류 해결에 사용할 수 있는 요청의 고유 식별자입니다. |
param | 오류를 일으킨 매개변수입니다. 유효성 검사 오류의 경우 유효하지 않은 매개변수를 나타냅니다. |
오류 응답 예시
잘못된 모델 ID를 사용한 API 요청의 응답은 다음과 같습니다.
{"detail": {"type": "validation_error","code": "invalid_parameters","message": "The 'keyterms' parameter is only supported with the 'scribe_v2' model. You specified 'scribe_v1'.","status": "invalid_parameters","request_id": "3c807fc4c3a1705f9638ecc764a91c01","param": "keyterms"}}
오류 속성을 통해 이 오류가 유효성 검사 오류이고 코드가 invalid_parameters임을 알 수 있습니다. 메시지는 오류에 관한 자세한 정보를 제공하며, request_id는 오류 해결에 사용할 수 있는 요청의 고유 식별자입니다. param 속성은 오류를 일으킨 매개변수를 나타냅니다.
SDK 오류 처리
ElevenLabs SDK는 오류 세부 정보에 액세스할 수 있는 타입 지정 오류 클래스를 제공합니다.
from elevenlabs import ElevenLabsfrom elevenlabs.core import ApiErrorelevenlabs = ElevenLabs()try:audio = elevenlabs.text_to_speech.convert(voice_id="invalid-voice-id",model_id="eleven_v4",text="Hello, world!",)except ApiError as e:print(f"Status code: {e.status_code}")# Access the error bodyif e.body and "detail" in e.body:detail = e.body["detail"]print(f"Error type: {detail.get('type')}")print(f"Error code: {detail.get('code')}")print(f"Message: {detail.get('message')}")print(f"Request ID: {detail.get('request_id')}")# Handle specific error typesif detail.get("type") == "rate_limit_error":print("Rate limited - implement exponential backoff")elif detail.get("type") == "authentication_error":print("Check your API key")
속도 제한 및 동시성
429 HTTP 상태 코드를 받았다면 짧은 시간 안에 너무 많은 요청을 보내 API 엔드포인트의 속도 제한을 초과했거나, API 엔드포인트의 동시성 제한을 초과했다는 의미입니다. 오류 code는 각각 rate_limit_exceeded 또는 concurrent_limit_exceeded입니다.
속도 제한의 경우 429 오류를 받았을 때 코드에 지수 백오프를 구현해야 합니다. 즉, 요청을 다시 시도하기 전에 지연 시간을 추가해야 합니다.
동시성의 경우 새 요청을 보내기 전에 현재 요청이 완료될 때까지 기다려야 합니다. 자세한 내용은 동시성 및 우선순위 섹션을 참고하세요.
오류 유형
오류에는 발생한 오류의 유형을 나타내는 type 속성이 포함됩니다. 가능한 값은 아래 표를 참고하세요.
| 유형 | 설명 | HTTP 상태 코드 |
|---|---|---|
validation_error | 요청에 유효하지 않은 매개변수 값이 포함되어 있습니다. | 400 |
invalid_request | 요청 구조가 잘못되었거나 필수 필드가 누락되었습니다. | 400 |
authentication_error | 인증에 실패했습니다. API 키/토큰이 잘못되었거나 누락되었습니다. | 401 |
payment_required | 사용자의 크레딧이 부족하거나 결제가 필요합니다. | 402 |
authorization_error | 인증된 사용자에게 이 작업에 필요한 권한이 없습니다. | 403 |
not_found | 요청한 리소스를 찾을 수 없습니다. | 404 |
conflict | 요청이 리소스의 현재 상태와 충돌합니다. | 409 |
rate_limit_error | 요청이 너무 많습니다. 나중에 다시 시도하세요. | 429 |
internal_error | 예기치 않은 서버 오류가 발생했습니다. | 500 |
service_unavailable | 서비스를 일시적으로 사용할 수 없습니다. 드물게 발생해야 합니다. | 503 |
오류 코드
| 코드 | 유형 | 설명 |
|---|---|---|
voice_not_found | not_found | 지정한 음성 ID가 존재하지 않습니다. 음성 ID를 확인하고 다시 시도하세요. |
sample_not_found | not_found | 지정한 음성 샘플을 찾을 수 없습니다. |
voice_collection_not_found | not_found | 지정한 음성 컬렉션이 존재하지 않습니다. |
user_not_found | not_found | 지정한 사용자를 찾을 수 없습니다. |
auth_account_not_found | not_found | 인증 계정을 찾을 수 없습니다. |
workspace_not_found | not_found | 지정한 워크스페이스가 존재하지 않습니다. |
project_not_found | not_found | 지정한 프로젝트를 찾을 수 없습니다. |
history_item_not_found | not_found | 지정한 히스토리 항목이 존재하지 않습니다. |
collection_not_found | not_found | 지정한 컬렉션을 찾을 수 없습니다. |
document_not_found | not_found | 지정한 문서가 존재하지 않습니다. |
file_not_found | not_found | 지정한 파일을 찾을 수 없습니다. |
conversation_not_found | not_found | 지정한 대화가 존재하지 않습니다. |
agent_not_found | not_found | 지정한 에이전트를 찾을 수 없습니다. |
dubbing_not_found | not_found | 지정한 더빙 프로젝트가 존재하지 않습니다. |
song_not_found | not_found | 지정한 노래를 찾을 수 없습니다. |
read_not_found | not_found | 지정한 읽기 항목을 찾을 수 없습니다. |
pronunciation_dictionary_not_found | not_found | 지정한 발음 사전이 존재하지 않습니다. |
knowledge_base_not_found | not_found | 지정한 지식 베이스를 찾을 수 없습니다. |
phone_number_not_found | not_found | 지정한 전화번호가 존재하지 않습니다. |
tool_not_found | not_found | 지정한 도구를 찾을 수 없습니다. |
snapshot_not_found | not_found | 지정한 스냅샷이 존재하지 않습니다. |
task_not_found | not_found | 지정한 작업을 찾을 수 없습니다. |
model_not_found | not_found | 지정한 모델이 존재하지 않습니다. |
transcript_not_found | not_found | 지정한 트랜스크립트를 찾을 수 없습니다. |
keywords_list_not_found | not_found | 지정한 키워드 목록을 찾을 수 없습니다. |
category_not_found | not_found | 지정한 카테고리를 찾을 수 없습니다. |
text_too_long | validation_error | 제공된 텍스트가 허용되는 최대 길이를 초과합니다. |
text_too_short | validation_error | 제공된 텍스트가 필수 최소 길이보다 짧습니다. |
invalid_text | validation_error | 제공된 텍스트에 유효하지 않은 문자 또는 형식이 포함되어 있습니다. |
empty_text | validation_error | 텍스트 필드는 비워 둘 수 없습니다. |
invalid_parameters | validation_error | 하나 이상의 요청 매개변수가 유효하지 않습니다. 유효하지 않은
매개변수는 |
missing_required_field | validation_error | 요청에 필수 필드가 누락되었습니다. 누락된
필드는 |
invalid_voice_settings | validation_error | 음성 설정에 유효하지 않은 값이 포함되어 있습니다. 유효하지 않은 음성
설정은 |
invalid_voice_id | validation_error | 음성 ID 형식이 유효하지 않습니다. |
unsupported_model | validation_error | 지정한 모델은 이 작업에서 지원되지 않습니다. |
invalid_audio | validation_error | 제공된 오디오가 유효하지 않거나 손상되었습니다. |
invalid_audio_format | validation_error | 지정한 오디오 형식은 지원되지 않습니다. |
invalid_output_format | validation_error | 요청한 출력 형식은 지원되지 않습니다. |
audio_too_long | validation_error | 오디오가 허용되는 최대 길이를 초과합니다. |
audio_too_short | validation_error | 오디오가 필수 최소 길이보다 짧습니다. |
invalid_file_type | validation_error | 파일 형식은 지원되지 않습니다. |
invalid_page_size | validation_error | 페이지 크기 매개변수가 허용 범위를 벗어났습니다. |
invalid_cursor | validation_error | 페이지네이션 커서가 유효하지 않거나 만료되었습니다. |
bad_request | invalid_request | 서버가 요청을 이해할 수 없습니다. |
malformed_json | invalid_request | 요청 본문에 유효하지 않은 JSON이 포함되어 있습니다. |
invalid_content_type | invalid_request | Content-Type 헤더가 누락되었거나 유효하지 않습니다. |
request_too_large | invalid_request | 요청 본문이 허용되는 최대 크기를 초과합니다. |
invalid_api_key | authentication_error | 제공된 API 키가 유효하지 않습니다. |
missing_api_key | authentication_error | 요청에 API 키가 제공되지 않았습니다. |
invalid_authorization_header | authentication_error | Authorization 헤더 형식이 유효하지 않습니다. |
unauthorized | authentication_error | 이 리소스에 액세스하려면 인증이 필요합니다. |
sign_in_required | authentication_error | 이 작업을 수행하려면 로그인해야 합니다. |
forbidden | authorization_error | 이 리소스에 대한 액세스가 금지되었습니다. |
insufficient_permissions | authorization_error | 이 작업에 필요한 권한이 없습니다. |
workspace_access_denied | authorization_error | 이 워크스페이스에 액세스할 수 없습니다. |
feature_not_available | authorization_error | 현재 요금제에서는 이 기능을 사용할 수 없습니다. |
subscription_required | authorization_error | 이 기능에 액세스하려면 유료 구독이 필요합니다. |
voice_access_denied | authorization_error | 이 음성에 액세스할 수 없습니다. |
model_access_denied | authorization_error | 이 모델에 액세스할 수 없습니다. |
conflict | conflict | 충돌이 발생했습니다. |
resource_already_exists | conflict | 동일한 식별자를 가진 리소스가 이미 존재합니다. |
voice_already_exists | conflict | 이 이름의 음성이 이미 존재합니다. |
already_running | conflict | 작업이 이미 실행 중입니다. |
already_processing | conflict | 리소스가 이미 처리 중입니다. |
concurrent_modification | conflict | 다른 요청이 리소스를 수정했습니다. 최신 버전으로 다시 시도하세요. |
slug_already_exists | conflict | 이 슬러그를 가진 리소스가 이미 존재합니다. |
rate_limit_exceeded | rate_limit_error | 요청이 너무 많습니다. 기다린 후 다시 시도하세요. |
concurrent_limit_exceeded | rate_limit_error | 최대 동시 요청 수를 초과했습니다. 더 높은 구독 등급일수록 더 높은 동시성 제한이 적용됩니다. |
system_busy | rate_limit_error | 현재 시스템이 사용 중입니다. 나중에 다시 시도하세요. |
insufficient_credits | payment_required | 계정에 이 작업을 수행할 크레딧이 충분하지 않습니다. |
internal_error | internal_error | 예기치 않은 오류가 발생했습니다. 문제가 지속되면 지원팀에 문의하세요. |
service_unavailable | service_unavailable | 서비스를 일시적으로 사용할 수 없습니다. 나중에 다시 시도하세요. |
maintenance | service_unavailable | 서비스가 예정된 유지 관리를 진행 중입니다. |