Skip to main content

Overview

The ElevenLabs Python SDK provides a comprehensive set of exception types that map to HTTP status codes. Proper error handling ensures your application can gracefully handle API errors and provide meaningful feedback to users.

Exception Types

The SDK includes the following exception types, all inheriting from ApiError:

BadRequestError (400)

Raised when the request is malformed or contains invalid parameters.

UnauthorizedError (401)

Raised when the API key is missing or invalid.

ForbiddenError (403)

Raised when the API key is valid but doesn’t have permission to access the resource.

NotFoundError (404)

Raised when the requested resource doesn’t exist.

TooEarlyError (425)

Raised when a request is made too early, typically when a resource is not yet ready.

ConflictError (409)

Raised when there’s a conflict with the current state of the resource.

UnprocessableEntityError (422)

Raised when the request is well-formed but contains semantic errors.

Comprehensive Error Handling

Basic Pattern

Handle all possible errors in a single try-except block:

Async Error Handling

Error handling works the same way with the async client:

Retry Logic

Implement retry logic for transient errors:

Error Information

All error objects provide useful debugging information:
int
The HTTP status code of the error.
Any
The response body containing error details. For BadRequestError, this is a BadRequestErrorBody object with an error field.
Dict[str, str]
The response headers, if any.

Accessing Error Details

Webhook Error Handling

Webhook signature verification can also raise errors:
Common webhook errors:
  • "Missing signature header" - The signature header was not provided
  • "Webhook secret not configured" - No secret was provided
  • "No signature hash found with expected scheme v0" - Invalid signature format
  • "Timestamp outside the tolerance zone" - Webhook is too old (>30 minutes)
  • "Signature hash does not match" - Signature verification failed

Best Practices

Always validate input

Validate parameters before making API calls to avoid BadRequestError.

Use specific exceptions

Catch specific exception types rather than generic Exception when possible.

Log error details

Always log the full error information for debugging.

Implement retry logic

For transient errors like TooEarlyError, implement exponential backoff.
Never expose raw API errors to end users. Always catch exceptions and provide user-friendly error messages.

Next Steps

Async Client

Learn about async error handling patterns

Webhooks

Understand webhook-specific error handling