> ## 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."
}
```
