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

# 認証

> APIキー管理、環境変数、レート制限、およびセキュリティのベストプラクティス。

すべてのRAIL APIリクエストはAPIキーで認証されます。キーはあなたのアカウントに紐づいており、クレジット残高を保持し、使用ログに表示されます。

```mermaid theme={null}
flowchart LR
    App["あなたのアプリケーション"] -->|"Authorization: Bearer rail_..."| API["RAIL API"]
    API -->|"200 + 結果"| App
    API -->|"401 無効なキー"| App
    API -->|"429 レート制限"| App
```

## APIキーの取得

<Steps>
  <Step title="サインアップ">
    [responsibleailabs.aiで無料アカウントを作成](https://responsibleailabs.ai/register)します。
  </Step>

  <Step title="ダッシュボードを開く">
    [ダッシュボード](https://responsibleailabs.ai/dashboard)に移動し、**APIキー**セクションに移動します。
  </Step>

  <Step title="キーを生成">
    **キーを生成**をクリックします。キーは`rail_`で始まり、一度だけ表示されます。すぐにコピーしてください。

    <Warning>
      ダイアログを閉じた後、キーは再表示されません。ページを離れる前に安全に保存してください。
    </Warning>
  </Step>
</Steps>

## APIキーの使用

リクエストごとに`Authorization`ヘッダーにBearerトークンとしてキーを渡します：

```
Authorization: Bearer YOUR_RAIL_API_KEY
```

完全なcURLの例：

```bash theme={null}
curl -X POST https://api.responsibleailabs.ai/railscore/v1/eval \
  -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": "あなたのAI生成テキスト", "mode": "basic"}'
```

## SDK認証

両方のSDKはクライアント構築時にAPIキーを受け取り、ヘッダーを自動的に追加します：

<CodeGroup>
  ```python Python theme={null}
  from rail_score_sdk import RailScoreClient
  import os

  # キーを直接渡す（スクリプトには適しています）
  client = RailScoreClient(api_key="YOUR_RAIL_API_KEY")

  # 推奨：環境変数から読み取る
  client = RailScoreClient(api_key=os.environ["RAIL_API_KEY"])
  ```

  ```typescript JavaScript theme={null}
  import { RailScoreClient } from "@responsible-ai-labs/rail-score";

  // キーを直接渡す
  const client = new RailScoreClient({ apiKey: "YOUR_RAIL_API_KEY" });

  // 推奨：環境変数から読み取る
  const client = new RailScoreClient({ apiKey: process.env.RAIL_API_KEY });
  ```
</CodeGroup>

## 環境変数

ソースファイルにAPIキーをハードコーディングしないでください。環境変数を使用し、キーをバージョン管理から除外してください。

<Tabs>
  <Tab title="ローカル（dotenv）">
    ```bash theme={null}
    # .env  — .gitignoreに追加し、このファイルをコミットしないでください
    RAIL_API_KEY=YOUR_RAIL_API_KEY
    ```

    ```python theme={null}
    from dotenv import load_dotenv
    import os

    load_dotenv()
    api_key = os.environ["RAIL_API_KEY"]
    ```
  </Tab>

  <Tab title="Vercel / Edge">
    **Vercel Dashboard > 設定 > 環境変数**から追加します。

    変数名：`RAIL_API_KEY`

    <Warning>
      変数を`NEXT_PUBLIC_`でプレフィックスしないでください。そうするとブラウザバンドルに露出します。
    </Warning>

    ```typescript theme={null}
    // サーバーサイドのみ
    const apiKey = process.env.RAIL_API_KEY;
    ```
  </Tab>

  <Tab title="Docker">
    ```bash theme={null}
    # 実行時に渡す — 秘密をイメージレイヤーに焼き込まないでください
    docker run -e RAIL_API_KEY=YOUR_RAIL_API_KEY my-app

    # docker-compose.yml
    services:
      app:
        image: my-app
        environment:
          - RAIL_API_KEY=${RAIL_API_KEY}
    ```
  </Tab>
</Tabs>

## キー管理

異なる環境（本番、ステージング、CI）用に複数のキーを作成できます。すべてのキーは[ダッシュボード](https://responsibleailabs.ai/dashboard)から管理します。

| アクション       | 使用するタイミング                                               |
| ----------- | ------------------------------------------------------- |
| **キーを生成**   | 新しい環境、新しいサービスのオンボーディング、またはスケジュールに従った資格情報のローテーション        |
| **キーをリネーム** | 使用状況追跡のために「production-chatbot」や「staging-ci」などのコンテキストを追加 |
| **キーを無効化**  | 漏洩が疑われる場合、従業員のオフボーディング、またはサービスの廃止。即時に有効になります。           |

<Tip>
  **ゼロダウンタイムローテーション：** 新しいキーを生成し、それをサービスにデプロイして動作を確認した後、古いキーを無効化します。スワッピングは数秒で完了します。
</Tip>

## レート制限

レート制限はAPIキーごとに適用されます。制限を超えるとHTTP 429が返されます。

| プラン      | リクエスト / 分 | リクエスト / 日 |
| -------- | --------- | --------- |
| 無料       | 10        | 100       |
| プロ       | 60        | 5,000     |
| ビジネス     | 300       | 50,000    |
| エンタープライズ | カスタム      | カスタム      |

## セキュリティのベストプラクティス

<Warning>
  * **クライアントサイドコードにキーを露出しないでください。** ブラウザは公開されています。常にバックエンドまたはサーバーレス関数からAPIを呼び出してください。
  * **キーを環境変数に保存し、** ソースファイルやDockerイメージにハードコーディングしないでください。
  * **最初のコミットの前に`.env`を`.gitignore`に追加し、キーが誤ってプッシュされないようにします。**
  * **環境ごとに別々のキーを使用してください。** ステージングが侵害された場合でも、本番は安全です。
  * **露出した場合は即座に無効化してください。** まずは代替を生成し、その後無効化します。
  * **スケジュールに従ってローテーションしてください。** 定期的にキーを再生成することで、未検出の漏洩の影響範囲を制限します。
</Warning>

## 認証エラー応答

| ステータス | エラー                       | 修正                              |
| ----- | ------------------------- | ------------------------------- |
| `401` | Authorizationヘッダーが欠落または不正 | `Authorization: Bearer …`を追加    |
| `401` | 無効なAPIキー                  | キーが`rail_`で始まり、正しくコピーされていることを確認 |
| `403` | APIキーが無効または非アクティブ         | ダッシュボードから新しいキーを生成               |
| `429` | レート制限を超えました               | リクエスト頻度を減らすか、プランをアップグレード        |

## 次は何をするか

<CardGroup cols={2}>
  <Card title="クイックスタート" icon="rocket" href="/getting-started/quickstart">
    5分以内に最初の評価リクエストを行います。
  </Card>

  <Card title="クレジットと料金" icon="coins" href="/getting-started/credits">
    呼び出しごとのクレジットの請求方法を理解します。
  </Card>

  <Card title="APIリファレンス" icon="code" href="/api-reference/overview">
    すべてのエンドポイントの完全なパラメータリファレンス。
  </Card>

  <Card title="ダッシュボード" icon="chart-line" href="https://responsibleailabs.ai/dashboard">
    キーを管理し、使用状況を確認し、クレジット残高を監視します。
  </Card>
</CardGroup>
