> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.voicecheap.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 認証

> VoiceCheap APIの認証方法について学びます

# 認証

VoiceCheap APIは認証にAPIキーを使用します。すべてのAPIリクエストには、`x-api-key`ヘッダーにAPIキーを含める必要があります。

## APIキーの取得

<Steps>
  <Step title="VoiceCheapにサインイン">
    [app.voicecheap.ai](https://app.voicecheap.ai)にアクセスし、アカウントにサインインします。
  </Step>

  <Step title="APIページへ移動">
    [app.voicecheap.ai/page-api](https://app.voicecheap.ai/page-api)の**API**ページに移動します。
  </Step>

  <Step title="APIキーの生成">
    **新しいキーを作成**をクリックし、キーに名前を付けます。完全なAPIキーは一度しか表示されないため、すぐにコピーして安全な場所に保管してください。
  </Step>
</Steps>

<Warning>
  **重要：キーをすぐに保存してください**

  完全なAPIキーは作成時に**一度だけ**表示されます。モーダルを閉じると、マスクされたバージョン（`vc_abc...xyz`）のみが表示されます。キーを紛失した場合は、削除して新しいキーを作成する必要があります。
</Warning>

## APIキーの制限

* アカウントごとに**最大5つのAPIキー**を作成できます
* 各キーには、識別しやすい名前を付けることができます（例：「本番環境」、「開発環境」）
* キーはAPIページからいつでも削除できます

## APIキーの使用

すべてのリクエストで、`x-api-key`ヘッダーにAPIキーを含めてください：

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.voicecheap.ai/v1/translate \
    -H "x-api-key: vc_your-api-key-here" \
    -F "file=@video.mp4" \
    -F "targetLanguage=spanish"
  ```

  ```typescript TypeScript theme={null}
  const formData = new FormData();
  formData.append('file', videoFile);
  formData.append('targetLanguage', 'spanish');

  const response = await fetch('https://api.voicecheap.ai/v1/translate', {
    method: 'POST',
    headers: {
      'x-api-key': 'vc_your-api-key-here'
    },
    body: formData
  });

  const data = await response.json();
  ```

  ```javascript JavaScript theme={null}
  const formData = new FormData();
  formData.append('file', videoFile);
  formData.append('targetLanguage', 'spanish');

  const response = await fetch('https://api.voicecheap.ai/v1/translate', {
    method: 'POST',
    headers: {
      'x-api-key': 'vc_your-api-key-here'
    },
    body: formData
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  files = {'file': open('video.mp4', 'rb')}
  data = {'targetLanguage': 'spanish'}
  headers = {'x-api-key': 'vc_your-api-key-here'}

  response = requests.post(
      'https://api.voicecheap.ai/v1/translate',
      headers=headers,
      files=files,
      data=data
  )
  ```
</CodeGroup>

## 要件

<Warning>
  **有料サブスクリプションが必要**

  APIへのアクセスには、有効な有料サブスクリプションが必要です。無料アカウントではAPIを使用できません。有効なサブスクリプションなしでAPIを使用しようとすると、`403 Forbidden`エラーが発生します。
</Warning>

## APIキーのセキュリティ

<CardGroup cols={2}>
  <Card title="秘密を保持する" icon="lock">
    APIキーをクライアント側のコード、公開リポジトリ、または一般にアクセス可能な場所に公開しないでください。
  </Card>

  <Card title="環境変数を使用する" icon="shield">
    APIキーは環境変数または安全なシークレットマネージャーに保存してください。
  </Card>

  <Card title="定期的にローテーションする" icon="rotate">
    特に漏洩の疑いがある場合は、定期的にAPIキーをローテーションしてください。
  </Card>

  <Card title="使用状況を監視する" icon="eye">
    APIの使用状況を追跡し、不正アクセスを検知できるようにしてください。
  </Card>
</CardGroup>

## エラーレスポンス

認証に失敗した場合、以下のいずれかのエラーが返されます：

| ステータスコード | エラーコード                   | 説明                               |
| -------- | ------------------------ | -------------------------------- |
| 401      | `MISSING_API_KEY`        | `x-api-key`ヘッダーが提供されていません        |
| 401      | `INVALID_API_KEY_FORMAT` | APIキーが期待される`vc_`プレフィックスを使用していません |
| 401      | `INVALID_API_KEY`        | 提供されたAPIキーは無効です                  |
| 403      | `API_ACCESS_REQUIRED`    | このアカウントではAPIアクセスが有効になっていません      |
| 403      | `SUBSCRIPTION_REQUIRED`  | APIアクセスには有効な有料サブスクリプションが必要です     |
| 403      | `INSUFFICIENT_CREDITS`   | アカウントにこの操作を行うための十分なクレジットがありません   |

## エラーレスポンスの例

```json theme={null}
{
  "code": "INVALID_API_KEY",
  "message": "The provided API key is invalid. Please check your API key and try again."
}
```
