# 認証と API キー

API キーの作成、使い方、制限、切り替え、安全な管理。

> https://nezhagate.com/ja/docs/guide/api-keys

## API キーを作成する

1. ログインしてコンソールの「API Keys」ページを開き、用途がわかる名前をキーに付けます。

2. 必要に応じて制限（1 分あたりのリクエスト数、予算、許可リスト）を設定します。あとから変更することもできます。

3. 作成したキーが一覧に表示されます。「コピー」をクリックするとキー全体（`sk-` で始まります）を取得できるので、サーバーの環境変数など安全な場所に保管してください。

## リクエストにキーを付ける

OpenAI 互換のエンドポイントは `Authorization: Bearer` ヘッダーを使います。Anthropic のエンドポイントは `x-api-key` を使い、`Authorization: Bearer` も受け付けます。キーはコードに書かず、環境変数に入れておいてください。

```
Authorization: Bearer YOUR_API_KEY
```

```
x-api-key: YOUR_API_KEY
anthropic-version: 2023-06-01
```

```
import os
from openai import OpenAI

# export NEZHAGATE_API_KEY=sk-...   (never commit the key)
client = OpenAI(base_url="https://nezhagate.com/v1", api_key=os.environ["NEZHAGATE_API_KEY"])
```

## キーに制限をかける

キーごとに次の制限を個別に設定でき、互いに影響しません：

| 設定項目 | 内容 |
| --- | --- |
| **1 分あたりのリクエスト数** | このキーが 1 分間に送れるリクエスト数の上限。 |
| **1 日の予算** | このキーが 1 日（UTC）に使える金額の上限（米ドル）。 |
| **合計の利用上限** | このキーが合計で使える金額の上限（米ドル）。暴走させたくない自動化処理に向いています。 |
| **モデル許可リスト** | このキーは、リストにあるモデルしか呼び出せません。 |
| **IP 許可リスト** | リストにある IP またはアドレス範囲からのリクエストだけを受け付けます。 |

[制限を超えたときの応答 →](https://nezhagate.com/ja/docs/guide/rate-limits#per-key)

## 無効化と切り替え

1. 新しいキーを作成し、使っている箇所を新しいキーに切り替えます。

2. 新しいキーで問題なく呼び出せることを確認したら、コンソールで古いキーを無効にします。すぐに反映され、以降は古いキーでのリクエストに 401 が返ります。

3. キーが漏れた疑いがあるときは、まず無効にしてから新しいキーを作成してください。

## キーを安全に保つために

- キーはサーバー側だけに置いてください。ウェブページ、アプリ、公開リポジトリには決して入れないでください。

- アプリごと、環境ごとに別々のキーを使えば、問題が起きたときにそのキーだけを無効にすれば済みます。

- 自動化処理やサードパーティのツールに渡すキーには、予算または合計の利用上限を設定してください。

- サーバーの IP が固定されているなら、IP 許可リストを有効にしてください。

## 残高はアカウント単位

同じアカウントのすべてのキーは 1 つの残高を共有します。どのキーで `GET /v1/usage` を呼び出しても、アカウントの残高と利用額が返ります。
