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

# 認証

> API key で TokenLab API リクエストを安全に保護します

## APIキー

すべての TokenLab API リクエストには API key が必要です。

OpenAI 互換エンドポイントでは、次のように送信します:

```bash theme={null}
Authorization: Bearer sk-your-api-key
```

Anthropic 互換の `/v1/messages` リクエストでは、次も使用できます:

```bash theme={null}
x-api-key: sk-your-api-key
```

## API Key の取得

1. [TokenLab Dashboard](https://tokenlab.sh/dashboard) にログインします
2. **API Keys** を開きます
3. 新しい key を作成します
4. わかりやすい名前を付けます
5. 表示されるのは一度だけなので、すぐにコピーします

<Warning>
  * API key をクライアントサイドのコードに決して公開しないでください
  * API key をバージョン管理に決してコミットしないでください
  * 環境変数または secret manager を使用してください
  * 定期的に key をローテーションしてください
  * 使用していない key は削除してください
</Warning>

## API Key の使用

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.tokenlab.sh/v1/responses \
    -H "Authorization: Bearer $TOKENLAB_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "gpt-5.4",
      "input": "Hello!"
    }'
  ```

  ```python Python theme={null}
  import os
  from openai import OpenAI

  client = OpenAI(
      api_key=os.environ.get("TOKENLAB_API_KEY"),
      base_url="https://api.tokenlab.sh/v1"
  )
  ```

  ```javascript JavaScript theme={null}
  import OpenAI from 'openai';

  const client = new OpenAI({
    apiKey: process.env.TOKENLAB_API_KEY,
    baseURL: 'https://api.tokenlab.sh/v1'
  });
  ```
</CodeGroup>

## API Key の機能

### 使用制限

各 API key に使用制限を設定できます:

| 設定              | 説明                                   |
| --------------- | ------------------------------------ |
| **No Limit**    | 制限なしで アカウント balance を使用して key が動作します |
| **Fixed Limit** | 指定した金額に達すると key は動作を停止します            |

### キープレフィックス

すべての TokenLab API key は `sk-` で始まります。

## Anthropic 互換性

`/v1/messages` エンドポイントでは、Anthropic スタイルのヘッダーは想定どおりに動作します:

```bash theme={null}
curl https://api.tokenlab.sh/v1/messages \
  -H "x-api-key: sk-your-api-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
```

<Note>
  `/v1/responses`、`/v1/chat/completions`、`/v1/models`、およびその他のほとんどの TokenLab ルートなどの OpenAI 互換エンドポイントでは、`Authorization: Bearer ...` を使用してください。
</Note>

## エラーレスポンス

| ステータスコード | 型                      | コード                    | 説明                     |
| -------- | ---------------------- | ---------------------- | ---------------------- |
| 401      | `invalid_api_key`      | `invalid_api_key`      | API key が存在しないか無効です    |
| 401      | `expired_api_key`      | `expired_api_key`      | API key は失効しています       |
| 402      | `insufficient_balance` | `insufficient_balance` | アカウント balance が不足しています |
| 402      | `quota_exceeded`       | `quota_exceeded`       | API key の使用制限に達しました    |

例:

```json theme={null}
{
  "error": {
    "message": "Invalid API key provided",
    "type": "invalid_api_key",
    "code": "invalid_api_key"
  }
}
```
