# API ゲートウェイ

## API ゲートウェイとは？

AQBot にはビルトインのローカル API サーバーが含まれており、設定されたプロバイダーを **OpenAI 互換**、**Claude ネイティブ**、**Gemini ネイティブ**エンドポイントとして公開します。これらのプロトコルのいずれかを使用するツールやクライアントは、AQBot をバックエンドとして使用できます — 別の API キーやリレーサービスは不要です。

ユースケース：

- **Claude Code CLI**、**OpenAI Codex CLI**、**Gemini CLI**、**OpenCode** を AQBot 経由で実行。
- IDE 拡張機能を単一のローカル管理エンドポイントに接続。
- 1 セットのプロバイダーキーをキーごとのレート制限で多くのツールで共有。

---

## はじめに

1. **設定 → API ゲートウェイ**を開きます（または <kbd>Cmd/Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>G</kbd> を押します）。
2. **起動**をクリックしてゲートウェイサーバーを起動します。
3. デフォルトでは、サーバーは `127.0.0.1:8080`（HTTP）でリッスンします。**設定**タブでリッスンアドレスとポートを変更できます。

> **ヒント**
>
> ゲートウェイ設定で**自動起動**を有効にすると、AQBot 起動時にサーバーが自動的に起動します。

---

## API キー管理

ゲートウェイは、プロバイダーキーとは別に独自の API キーで受信リクエストを認証します。

1. **API キー**タブに移動します。
2. **新しいキーを生成**をクリックします。
3. 各キーを識別するためにオプションで**説明**を追加します（例：*Claude Code*、*VS Code*）。
4. キーをコピーします — 一度しか表示されません。

各キーには**プレフィックス**、**作成日**、**最終使用**タイムスタンプが表示されます。キーはいつでも**有効化/無効化**または**削除**できます。

> **注意**
>
> ゲートウェイキーは他の API キーと同様に扱ってください。キーを持つ人は誰でも、ゲートウェイが実行中にローカルゲートウェイにリクエストを送信できます。

---

## SSL/TLS

ゲートウェイは HTTP の他に HTTPS を提供できます。

### 自動生成証明書

1. **設定**タブを開きます。
2. **SSL/TLS** を有効にして**生成**モードを選択します。
3. AQBot が自己署名証明書と秘密鍵を以下に作成します：

   ```
   ~/.aqbot/ssl/cert.pem
   ~/.aqbot/ssl/key.pem
   ```

4. **HTTPS ポート**を設定します（デフォルト `8443`）。
5. オプションで**SSL 強制**を有効にして、すべての HTTP リクエストを HTTPS にリダイレクトします。

### カスタム証明書

**アップロード**モードを選択して、独自の証明書と秘密鍵ファイルのパスを提供します。

> **補足**
>
> 秘密鍵は Unix システムではファイルモード `0600` で保存され、他のユーザーが読み取れないようにします。

---

## 使用状況分析

**メトリクス**タブにはゲートウェイアクティビティを監視するためのダッシュボードが表示されます：

| ビュー | 説明 |
|--------|------|
| **API キー別** | 各ゲートウェイキーによるリクエスト量とトークン使用量 |
| **プロバイダー別** | 各アップストリーム AI プロバイダーへのリクエストとトークン |
| **日別** | 時間経過による日次使用トレンド |

これらのダッシュボードを使用してコストを追跡し、異常を発見し、プロバイダー間で負荷を分散します。

---

## リクエストログ

**概要**タブには以下の詳細を含む最近のリクエストログが表示されます：

- **タイムスタンプ**、**HTTP メソッド**、**パス**
- **ステータスコード**と**レスポンスタイム**
- 使用された**プロバイダー**と**モデル**
- **トークン数**（プロンプト + 補完）

任意のログエントリをクリックして完全なリクエストとレスポンスを確認します。**ログをクリア**ボタンでログ履歴をリセットします。

---

## 設定テンプレート

AQBot には人気の CLI ツール用の既製設定スニペットが付属しています。**テンプレート**タブに移動し、ツールを選択して**コピー**をクリックして必要な設定を取得します。

### Claude Code CLI

```bash
claude config set --global apiUrl http://127.0.0.1:8080
claude config set --global apiKey aqbot-xxxx
```

### OpenAI Codex CLI

```bash
export OPENAI_BASE_URL=http://127.0.0.1:8080/v1
export OPENAI_API_KEY=aqbot-xxxx
codex
```

### OpenCode

OpenCode 設定に追加します：

```json
{
  "provider": "openai",
  "baseURL": "http://127.0.0.1:8080/v1",
  "apiKey": "aqbot-xxxx"
}
```

### Gemini CLI

```bash
export GEMINI_API_BASE=http://127.0.0.1:8080
export GEMINI_API_KEY=aqbot-xxxx
gemini
```

### カスタムクライアント

OpenAI 互換のベース URL を受け入れるツールはゲートウェイに接続できます：

```
Base URL:  http://127.0.0.1:8080/v1
API Key:   aqbot-xxxx
```

`aqbot-xxxx` を **API キー**タブで生成したキーに置き換えます。SSL が有効な場合は `https://` とポート `8443`（または設定した HTTPS ポート）を使用します。

---

## 外部ツールの接続

以下は OpenAI 互換クライアントを接続するための一般的なパターンです：

1. AQBot で**ゲートウェイ API キーを生成**します。
2. ツールの設定で**ベース URL** を `http://127.0.0.1:8080/v1`（または HTTPS の同等）に設定します。
3. **API キー**を生成したゲートウェイキーに設定します。
4. AQBot プロバイダーのいずれかに設定した**モデルを選択**します。
5. ツールを使用し始めます — すべてのリクエストは AQBot を経由してアップストリームプロバイダーにルーティングされます。

> **ヒント**
>
> ツールが特定の API 形式（例：Claude または Gemini ネイティブ）を必要とする場合、AQBot はリクエスト形式を自動的に検出して正しいプロバイダーにルーティングします。形式ごとに別のエンドポイントを設定する必要はありません。

---

## 次のステップ

- [クイックスタート](./getting-started) — クイックスタートガイドに戻る
- [プロバイダーの設定](./providers) — ゲートウェイがルーティングするアップストリームプロバイダーの追加
- [MCP サーバー](./mcp) — AI ツール呼び出しのための外部ツールの接続
