| 環境 | 推奨される認証 | 理由 |
|---|---|---|
| ブラウザアプリ | アクセストークン | APIキーがクライアントコードに露出するのを防ぎます |
| 信頼されたサーバー、スクリプト、またはノートブック | APIキー | シンプルで、トークン交換が不要です |
サーバーサイドアプリ: APIキーを使用する
バックエンドサービス、ジョブ、ローカルスクリプト、ノートブックなどの信頼された環境からは、APIキーを直接使用してください。 Cartesiaは、サーバーサイド認証でX-Api-Key および Authorization ヘッダーの両方を受け入れます。ヘッダー名は大文字小文字を区別しないため、X-API-KEY や authorization でも動作します。
ブラウザアプリ: アクセストークンを使用する
ブラウザのコードにCartesia APIキーを絶対に同梱しないでください。ユーザーがそれを抽出し、あなたのアカウントでリクエストを行う可能性があります。 代わりに、サーバーで短期間有効なアクセストークンを生成し、そのトークンをブラウザに返してください。前提条件
アクセストークンを実装する前に:- Cartesia API キーでサーバーを設定する
- アプリケーションでユーザー認証を実装する
- 安全なクライアント-サーバー間通信を確立する
利用可能なグラント
アクセストークンは、グラントによる細かい権限管理をサポートします。TTS と STT のグラントはいずれも任意です: TTS グラント:grants: { tts: true } を指定すると、クライアントは次のエンドポイントにアクセスできます:
/tts/bytes- チャンクエンコーディングでストリーミングされる同期 TTS 生成/tts/sse- ストリーミング用の Server-Sent Events/tts/websocket- WebSocket ベースのストリーミング
grants: { stt: true } を指定すると、クライアントは次のエンドポイントにアクセスできます:
/stt/websocket- WebSocket ベースの音声テキスト変換ストリーミング/stt- バッチ音声テキスト変換処理/audio/transcriptions- OpenAI 互換のトランスクリプション エンドポイント
grants: { agent: true } を指定すると、クライアントは以下にアクセスできます:
- Agents WebSocket呼び出しエンドポイント
実装ガイド
1. トークン生成 (サーバー側)
cURL または公式クライアントライブラリを使用して、新しいアクセストークンを生成するリクエストを送信します:2. トークン保存 (クライアント側)
トークンの有効期限に合わせた HTTP-only クッキーを設定するなど、トークンを安全に保存します。クッキーはhttpOnly、secure、sameSite: "strict" を設定してください。
3. API を使った認証済みリクエストの送信
4. トークンリフレッシュ戦略
各 API 呼び出しの前に、現在のトークンがまだ有効かどうかを確認します。期限切れまたは期限切れ間近の場合は、処理を続行する前にサーバーから新しいトークンをリクエストします。セキュリティのベストプラクティス
サーバー側
- トークンは必ずサーバー側のみで生成する — ブラウザのコードでは絶対に生成しない
- トークンの有効期間は短く (分単位) する
- トークンは HTTPS のみで配信する
クライアント側
- トークンは HTTP-only クッキー (ブラウザが自動的に送信するが JavaScript からは読み取れないクッキー) に保存する
- クッキーの
secureおよびsameSite: "strict"フラグを有効にする - トークンを
localStorageやsessionStorageに絶対に保存しない - トークンをログに出力したり UI に表示したりしない
追加リソース
- APIリファレンス - アクセストークン生成エンドポイントのドキュメント