Błędy

Poznaj komunikaty błędów i rozwiązania.

Błędy API

ElevenLabs używa standardowych kodów stanu HTTP, aby wskazać powodzenie lub niepowodzenie żądania. Dodatkowo wszystkie żądania API zwracają obiekt JSON z właściwością detail, która zawiera informacje o błędzie.

Zwykle kod stanu HTTP 200 oznacza udane żądanie. Kod 4xx wskazuje problem z żądaniem, np. nieprawidłowy parametr lub brak wymaganego pola. Kod stanu HTTP 500 wskazuje problem z serwerami ElevenLabs, co powinno zdarzać się rzadko.

Właściwości błędu

WłaściwośćOpis
typeTyp błędu, który wystąpił. Możliwe wartości znajdziesz w tabeli poniżej.
codeKod błędu. Jest bardziej szczegółowy niż typ i pozwala określić przyczynę błędu.
messageKomunikat błędu. Zawiera więcej szczegółów o błędzie.
statusStatus błędu. To starsze pole, które nie jest już używane — zamiast niego używaj właściwości code.
request_idIdentyfikator żądania, w którym wystąpił błąd. To unikalny identyfikator, który możesz wykorzystać do diagnozy błędu.
paramParametr, który spowodował błąd. W przypadku błędu walidacji wskazuje nieprawidłowy parametr.

Przykładowa odpowiedź z błędem

Oto odpowiedź na żądanie API, w którym użyto nieprawidłowego identyfikatora modelu:

{
"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"
}
}

Na podstawie właściwości błędu widzimy, że jest to błąd walidacji, a kod to invalid_parameters. Komunikat zawiera więcej szczegółów, a request_id to unikalny identyfikator żądania, który możesz wykorzystać do diagnozy błędu. Właściwość param wskazuje parametr, który spowodował błąd.

Obsługa błędów SDK

SDK ElevenLabs udostępniają typowane klasy błędów, które dają dostęp do szczegółów błędu.

from elevenlabs import ElevenLabs
from elevenlabs.core import ApiError
elevenlabs = 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 body
if 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 types
if detail.get("type") == "rate_limit_error":
print("Rate limited - implement exponential backoff")
elif detail.get("type") == "authentication_error":
print("Check your API key")

Limity żądań i współbieżność

Jeśli otrzymasz kod stanu HTTP 429, oznacza to, że w krótkim czasie wysłano zbyt wiele żądań i przekroczono limit żądań dla endpointu API albo przekroczono limit współbieżności dla tego endpointu. Odpowiedni code błędu to rate_limit_exceeded lub concurrent_limit_exceeded.

W przypadku limitu żądań zaimplementuj w kodzie exponential backoff po otrzymaniu błędu 429. Oznacza to dodanie opóźnienia przed ponowną próbą wysłania żądania.

W przypadku współbieżności poczekaj, aż bieżące żądania się zakończą, zanim wyślesz kolejne. Więcej informacji znajdziesz w sekcji Współbieżność i priorytet.

Typy błędów

Błąd ma właściwość type, która wskazuje jego typ. Możliwe wartości znajdziesz w tabeli poniżej.

TypOpisKod stanu HTTP
validation_errorŻądanie zawiera nieprawidłowe wartości parametrów.400
invalid_requestStruktura żądania jest nieprawidłowa lub brakuje wymaganych pól.400
authentication_errorUwierzytelnianie nie powiodło się — nieprawidłowy lub brakujący klucz/token API.401
payment_requiredUżytkownik ma za mało środków lub wymagana jest płatność.402
authorization_errorUwierzytelniony użytkownik nie ma wymaganych uprawnień do tej akcji.403
not_foundNie znaleziono żądanego zasobu.404
conflictŻądanie jest sprzeczne z bieżącym stanem zasobu.409
rate_limit_errorZbyt wiele żądań — spróbuj ponownie później.429
internal_errorWystąpił nieoczekiwany błąd serwera.500
service_unavailableUsługa jest tymczasowo niedostępna, co powinno zdarzać się rzadko.503

Kody błędów

KodTypOpis
voice_not_foundnot_foundPodany identyfikator głosu nie istnieje. Sprawdź identyfikator głosu i spróbuj ponownie.
sample_not_foundnot_foundNie znaleziono podanej próbki głosu.
voice_collection_not_foundnot_foundPodana kolekcja głosów nie istnieje.
user_not_foundnot_foundNie znaleziono podanego użytkownika.
auth_account_not_foundnot_foundNie znaleziono konta uwierzytelniania.
workspace_not_foundnot_foundPodany obszar roboczy nie istnieje.
project_not_foundnot_foundNie znaleziono podanego projektu.
history_item_not_foundnot_foundPodany element historii nie istnieje.
collection_not_foundnot_foundNie znaleziono podanej kolekcji.
document_not_foundnot_foundPodany dokument nie istnieje.
file_not_foundnot_foundNie znaleziono podanego pliku.
conversation_not_foundnot_foundPodana rozmowa nie istnieje.
agent_not_foundnot_foundNie znaleziono podanego agenta.
dubbing_not_foundnot_foundPodany projekt dubbingowy nie istnieje.
song_not_foundnot_foundNie znaleziono podanego utworu.
read_not_foundnot_foundNie znaleziono podanego odczytu.
pronunciation_dictionary_not_foundnot_foundPodany słownik wymowy nie istnieje.
knowledge_base_not_foundnot_foundNie znaleziono podanej bazy wiedzy.
phone_number_not_foundnot_foundPodany numer telefonu nie istnieje.
tool_not_foundnot_foundNie znaleziono podanego narzędzia.
snapshot_not_foundnot_foundPodany migawka nie istnieje.
task_not_foundnot_foundNie znaleziono podanego zadania.
model_not_foundnot_foundPodany model nie istnieje.
transcript_not_foundnot_foundNie znaleziono podanej transkrypcji.
keywords_list_not_foundnot_foundNie znaleziono podanej listy słów kluczowych.
category_not_foundnot_foundNie znaleziono podanej kategorii.
text_too_longvalidation_errorPodany tekst przekracza maksymalną dozwoloną długość.
text_too_shortvalidation_errorPodany tekst jest krótszy niż wymagana minimalna długość.
invalid_textvalidation_errorPodany tekst zawiera nieprawidłowe znaki lub formatowanie.
empty_textvalidation_errorPole tekstowe nie może być puste.
invalid_parametersvalidation_error

Co najmniej jeden parametr żądania jest nieprawidłowy. Sprawdź właściwość param, aby znaleźć nieprawidłowy parametr.

missing_required_fieldvalidation_error

W żądaniu brakuje wymaganego pola. Sprawdź właściwość param, aby znaleźć brakujące pole.

invalid_voice_settingsvalidation_error

Ustawienia głosu zawierają nieprawidłowe wartości. Sprawdź właściwość param, aby znaleźć nieprawidłowe ustawienia głosu.

invalid_voice_idvalidation_errorFormat identyfikatora głosu jest nieprawidłowy.
unsupported_modelvalidation_errorPodany model nie jest obsługiwany w tej operacji.
invalid_audiovalidation_errorPodane audio jest nieprawidłowe lub uszkodzone.
invalid_audio_formatvalidation_errorPodany format audio nie jest obsługiwany.
invalid_output_formatvalidation_errorŻądany format wyjściowy nie jest obsługiwany.
audio_too_longvalidation_errorAudio przekracza maksymalną dozwoloną długość.
audio_too_shortvalidation_errorAudio jest krótsze niż wymagana minimalna długość.
invalid_file_typevalidation_errorTyp pliku nie jest obsługiwany.
invalid_page_sizevalidation_errorParametr rozmiaru strony jest poza dozwolonym zakresem.
invalid_cursorvalidation_errorKursor stronicowania jest nieprawidłowy lub wygasł.
bad_requestinvalid_requestSerwer nie mógł zrozumieć żądania.
malformed_jsoninvalid_requestTreść żądania zawiera nieprawidłowy JSON.
invalid_content_typeinvalid_requestNagłówek Content-Type jest nieobecny lub nieprawidłowy.
request_too_largeinvalid_requestTreść żądania przekracza maksymalny dozwolony rozmiar.
invalid_api_keyauthentication_errorPodany klucz API jest nieprawidłowy.
missing_api_keyauthentication_errorW żądaniu nie podano klucza API.
invalid_authorization_headerauthentication_errorFormat nagłówka Authorization jest nieprawidłowy.
unauthorizedauthentication_errorUwierzytelnianie jest wymagane, aby uzyskać dostęp do tego zasobu.
sign_in_requiredauthentication_errorMusisz się zalogować, aby wykonać tę akcję.
forbiddenauthorization_errorDostęp do tego zasobu jest zabroniony.
insufficient_permissionsauthorization_errorNie masz wymaganych uprawnień do tej akcji.
workspace_access_deniedauthorization_errorNie masz dostępu do tego obszaru roboczego.
feature_not_availableauthorization_errorTa funkcja nie jest dostępna w Twoim obecnym planie.
subscription_requiredauthorization_errorDo korzystania z tej funkcji wymagana jest płatna subskrypcja.
voice_access_deniedauthorization_errorNie masz dostępu do tego głosu.
model_access_deniedauthorization_errorNie masz dostępu do tego modelu.
conflictconflictWystąpił konflikt.
resource_already_existsconflictZasób z tym samym identyfikatorem już istnieje.
voice_already_existsconflictGłos o tej nazwie już istnieje.
already_runningconflictOperacja jest już uruchomiona.
already_processingconflictZasób jest już przetwarzany.
concurrent_modificationconflictZasób został zmieniony przez inne żądanie. Spróbuj ponownie z najnowszą wersją.
slug_already_existsconflictZasób z tym slugiem już istnieje.
rate_limit_exceededrate_limit_errorZbyt wiele żądań. Poczekaj przed ponowną próbą.
concurrent_limit_exceededrate_limit_error

Przekroczono maksymalną liczbę równoczesnych żądań. Wyższe poziomy subskrypcji mają wyższy limit współbieżności.

system_busyrate_limit_errorSystem jest obecnie zajęty. Spróbuj ponownie później.
insufficient_creditspayment_requiredNa Twoim koncie nie ma wystarczającej liczby środków na tę operację.
internal_errorinternal_errorWystąpił nieoczekiwany błąd. Skontaktuj się ze wsparciem, jeśli problem się powtarza.
service_unavailableservice_unavailableUsługa jest tymczasowo niedostępna. Spróbuj ponownie później.
maintenanceservice_unavailableUsługa przechodzi zaplanowaną konserwację.