Migrating from Cartesia: Overview

View as Markdown

This page covers the setup changes that stay the same no matter which of your existing Cartesia integrations you’re moving over: base URL, auth header, and SDK client. Each product-specific migration guide already includes these same changes inline, so you don’t need to read this page first; it’s here as a standalone reference if you want the setup changes on their own.

Quick start

Swap the client, then keep the rest of your code as-is:

1from cartesia import Cartesia
2
3client = Cartesia(api_key="YOUR_CARTESIA_API_KEY")

Both SDKs are also available for TypeScript/JavaScript; see SDKs & Libraries for install instructions and language coverage.

For requests made directly over HTTP rather than through an SDK, the only change is the header and base URL:

$curl -X POST "https://api.cartesia.ai/..." \
> -H "Authorization: Bearer YOUR_CARTESIA_API_KEY" \
> -H "Cartesia-Version: 2026-03-01"

Base URL and auth

CartesiaSarvam
Base URLhttps://api.cartesia.aihttps://api.sarvam.ai
Auth headerAuthorization: Bearer <api_key>api-subscription-key: <api_key>
Auth failure status401403

Cartesia’s raw HTTP API also expects a Cartesia-Version date header (e.g. 2026-03-01) to pin a request to a specific API version. Sarvam has no equivalent header: every request runs against the current API, so there’s one less header to carry over when you port a direct HTTP call.

Errors and rate limits

Sarvam returns 403 (not 401) on authentication failures, and rate limits are enforced per API rather than account-wide. See Errors & Troubleshooting and Credits & Rate Limits for status codes and retry behavior. These apply the same way across every migration guide in this section.

See also