Docs

qzira AI API Gateway
セットアップガイド

複数のAIモデルを「たった1つのキー」で管理・統合する

Ver 1.0 最終更新: 2026-02-05

qzira は、複数のAI APIプロバイダー(OpenAI・Anthropic・Google AI)を 1つのエンドポイント で統合管理できるAI APIゲートウェイです。

BYOK(Bring Your Own Key)方式 — お持ちのAPIキーをそのまま使えます。qziraがリクエストのプロキシ、使用量の可視化、フェイルオーバー、レート制限を自動処理します。

qzira を使うメリット

  • コスト可視化: ダッシュボードでリクエスト数・トークン消費量をリアルタイム確認
  • フェイルオーバー: プロバイダー障害時に自動で別プロバイダーに切替
  • レート制限の自動処理: 429エラーのリトライをqziraが代行
  • APIキー管理の統一: 複数プロバイダーのキーをqzira側で一元管理し、アプリには gw_ キー1つだけ
  • 予算アラート・自動停止: AIエージェントの暴走によるコスト超過を防止

1. アカウント作成

1ダッシュボードにアクセス

https://app.qzira.com にアクセスします。

2Googleアカウントでログイン

「Googleでログイン」ボタンをクリックし、お使いのGoogleアカウントで認証します。

ℹ️ ログイン時に利用規約への同意が必要です。

2. APIキー発行

ログイン後、サイドバーの「APIキー」をクリックします。

1新しいAPIキーを作成

「新しいAPIキーを作成」ボタンをクリックし、キーの名前を入力します(例: my-app-keycursor-dev など)。

2APIキーをコピー

作成直後に表示される gw_xxxxxxxx 形式のキーを 必ずコピーして安全な場所に保存 してください。このキーは一度しか表示されません。

⚠️ 重要: APIキーは作成時に一度だけ表示されます。紛失した場合は新しいキーを発行してください。
💡 このAPIキーが、qzira経由で全プロバイダーにアクセスするための統一キーになります。

3. プロバイダーAPIキー登録(BYOK)

サイドバーの「プロバイダー」をクリックします。

対応プロバイダー

プロバイダーAPIキーの取得先キー形式
OpenAI platform.openai.com/api-keys sk-...
Anthropic console.anthropic.com/settings/keys sk-ant-...
Google AI aistudio.google.com/apikey AIza...

登録手順

  1. 使用するプロバイダーの「APIキーを登録」をクリック
  2. お持ちのAPIキーを入力
  3. 「登録」をクリック — qzira側でキーの有効性を自動検証します
🔒 登録されたAPIキーは暗号化して保存され、リクエストのプロキシにのみ使用されます。全プランで3社すべてのAPIキーを登録できます。

4. プロバイダー有効化

APIキーを登録しただけでは、まだそのプロバイダー経由でのリクエストはできません。有効化 が必要です。

有効化の手順

プロバイダー画面で、使用したいプロバイダーの「有効化」ボタンをクリックします。

プラン別の同時有効化数

プラン同時有効化数
Free1社
Starter3社
Pro以上無制限
💡 Freeプランでは1社のみ有効化できます。別のプロバイダーに切り替えたい場合は、新しいプロバイダーを有効化すると自動的に切り替わります(APIキーの再入力は不要)。

5. コード移行

qziraはOpenAI互換のAPIエンドポイントを提供します。既存コードの Base URLAPIキー を変更するだけで移行完了です。

基本情報

項目
Base URLhttps://api.qzira.com/v1
エンドポイント/chat/completions
認証Authorization: Bearer gw_xxxxxxxx

移行例: Python(OpenAI SDK)

Before(直接呼び出し):

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxxxxxxx"  # OpenAI APIキー
)

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Hello"}]
)

After(qzira経由):

from openai import OpenAI

client = OpenAI(
    api_key="gw_xxxxxxxx",                  # qzira APIキー
    base_url="https://api.qzira.com/v1"     # qzira エンドポイント
)

response = client.chat.completions.create(
    model="gpt-4o",  # モデル名はそのまま
    messages=[{"role": "user", "content": "Hello"}]
)

移行例: Python(Anthropic SDK → OpenAI互換形式)

Before(Anthropic SDK 直接呼び出し):

import anthropic

client = anthropic.Anthropic(api_key="sk-ant-xxxxxxxx")

response = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system="You are a helpful assistant.",
    messages=[{"role": "user", "content": "Hello"}]
)

After(qzira経由 — OpenAI互換形式):

from openai import OpenAI

client = OpenAI(
    api_key="gw_xxxxxxxx",
    base_url="https://api.qzira.com/v1"
)

response = client.chat.completions.create(
    model="claude-sonnet-4-20250514",  # Claudeモデルもそのまま指定
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello"}
    ]
)
ℹ️ qziraがモデル名からプロバイダーを自動判定し、Anthropic APIの形式に変換します。system メッセージも自動で処理されます。

移行例: Python(Google Gemini → OpenAI互換形式)

from openai import OpenAI

client = OpenAI(
    api_key="gw_xxxxxxxx",
    base_url="https://api.qzira.com/v1"
)

response = client.chat.completions.create(
    model="gemini-2.0-flash",  # Geminiモデルもそのまま指定
    messages=[{"role": "user", "content": "Hello"}]
)

移行例: JavaScript / TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  apiKey: "gw_xxxxxxxx",
  baseURL: "https://api.qzira.com/v1",
});

const response = await client.chat.completions.create({
  model: "claude-sonnet-4-20250514",
  messages: [{ role: "user", content: "Hello" }],
});

環境変数での管理(推奨)

.env ファイル:

QZIRA_API_KEY=gw_xxxxxxxx
QZIRA_BASE_URL=https://api.qzira.com/v1

Python:

import os
from openai import OpenAI

client = OpenAI(
    api_key=os.getenv("QZIRA_API_KEY"),
    base_url=os.getenv("QZIRA_BASE_URL")
)

ストリーミング対応

qziraはSSE(Server-Sent Events)形式のストリーミングに全プロバイダーで対応しています。

stream = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Tell me a story"}],
    stream=True
)

for chunk in stream:
    if chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="")

対応モデル一覧(主要なもの)

プロバイダーモデル例
OpenAIgpt-4o, gpt-4o-mini, gpt-4-turbo
Anthropicclaude-sonnet-4-20250514, claude-3-5-haiku-20241022, claude-3-opus-20240229
Google AIgemini-2.0-flash, gemini-1.5-pro, gemini-1.5-flash

6. curlでのテスト

qziraの動作をすぐに確認したい場合は、curlコマンドで試せます。

OpenAIモデル

curl -X POST https://api.qzira.com/v1/chat/completions \
  -H "Authorization: Bearer gw_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Anthropicモデル

curl -X POST https://api.qzira.com/v1/chat/completions \
  -H "Authorization: Bearer gw_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-3-5-haiku-20241022",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

Google AIモデル

curl -X POST https://api.qzira.com/v1/chat/completions \
  -H "Authorization: Bearer gw_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.0-flash",
    "messages": [{"role": "user", "content": "Hello"}]
  }'

ストリーミングテスト

curl -N -X POST https://api.qzira.com/v1/chat/completions \
  -H "Authorization: Bearer gw_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [{"role": "user", "content": "Count from 1 to 5"}],
    "stream": true
  }'

PowerShell(Windows)

$headers = @{
  "Authorization" = "Bearer gw_xxxxxxxx"
  "Content-Type"  = "application/json"
}
$body = '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"Hello"}]}'

Invoke-RestMethod -Uri "https://api.qzira.com/v1/chat/completions" `
  -Method POST -Headers $headers -Body $body

正常なレスポンス例

{
  "id": "chatcmpl-xxxxx",
  "object": "chat.completion",
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! How can I help you today?"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 8,
    "completion_tokens": 9,
    "total_tokens": 17
  },
  "provider": "openai"
}
💡 レスポンスに provider フィールドが付加され、どのプロバイダーが応答したか確認できます。

7. Cursor / AIエージェント統合

Cursor

Cursorの設定で、OpenAI互換のAPIプロバイダーとしてqziraを追加できます。

Settings → Models → OpenAI API Key:

  • API Key: gw_xxxxxxxx
  • Base URL: https://api.qzira.com/v1

これにより、Cursor内でのAI補完・チャットがすべてqzira経由になり、ダッシュボードで使用量を確認できます。

Claude Code

export ANTHROPIC_BASE_URL=https://api.qzira.com/v1
export ANTHROPIC_API_KEY=gw_xxxxxxxx
claude

その他のAIエージェント

OpenAI互換のBase URLとAPIキーを設定できるツールであれば、同様の方法で統合可能です。

ツール設定場所
CursorSettings → Models → OpenAI API Key
Continue.devconfig.jsonapiBase
Aider--openai-api-base オプション
LangChainbase_url パラメータ

8. ダッシュボードで使用量を確認

https://app.qzira.com/dashboard にログインすると、以下の情報をリアルタイムで確認できます。

ダッシュボード概要

  • 今月のリクエスト数: 月間の合計リクエスト数(プラン上限との比較)
  • 使用率: プラン上限に対する使用割合
  • 入力トークン / 出力トークン: 合計トークン消費量
  • 日別リクエスト数グラフ: 過去のリクエスト推移を視覚化

最近のリクエスト

各リクエストの詳細を確認できます:

項目内容
モデル使用したモデル名(例: claude-sonnet-4-20250514
プロバイダー応答したプロバイダー(例: Anthropic)
トークン入力 / 出力トークン数
レイテンシ応答時間(ミリ秒)
ステータス成功 / エラー
時刻リクエスト日時

9. 予算アラート・自動停止

サイドバーの「予算設定」から、コスト管理の設定ができます(Starter以上)。

設定項目

項目説明対応プラン
月間リクエスト上限月間の最大リクエスト数全プラン
日次リクエスト上限1日の最大リクエスト数Starter以上
予算アラート通知50% / 80% / 100% 到達時にメール通知Starter以上
自動停止上限到達時にリクエストを自動ブロックPro以上
⚠️ AIエージェントが夜間に大量リクエストを送信するケースへの対策として、日次上限+自動停止の設定を推奨します。

10. プランアップグレード

サイドバーの「プラン・請求」からプラン変更が可能です。

プラン比較

プラン月額リクエスト/月同時有効化APIキー数
Free¥01,00011
Starter¥50010,00032
Pro¥1,500100,000無制限5
Business¥4,000500,000無制限50
Scale¥10,000上限緩和無制限無制限

プラン別の主要機能

機能FreeStarterProBusinessScale
ストリーミング
リトライ(自動再試行)
フェイルオーバー
予算アラート
予算上限・自動停止
優先サポート

トラブルシューティング

よくあるエラー

エラー原因対処法
401 Unauthorized APIキーが無効または未設定 gw_ で始まるqzira APIキーを確認
403 Provider not enabled プロバイダーが有効化されていない ダッシュボードでプロバイダーを有効化
403 Budget Exceeded 予算上限に到達 ダッシュボードで上限を引き上げ or リセットを待つ
400 Provider not configured プロバイダーのAPIキーが未登録 ダッシュボードでプロバイダーAPIキーを登録
429 Rate Limited レート制限に到達 少し待ってからリトライ
502 / 503 プロバイダー側の障害 フェイルオーバーが自動発動(Starter以上)

即時切り戻し方法

qzira経由で問題が発生した場合、Base URLとAPIキーを元に戻すだけで即座に直接呼び出しに切り替えられます。

# qzira経由 → 直接呼び出しに切り戻し
client = OpenAI(
    api_key="sk-xxxxxxxx",           # 元のAPIキーに戻す
    # base_url を削除(デフォルトに戻る)
)

環境変数で管理している場合は、.env ファイルの値を切り替えるだけです:

# QZIRA_API_KEY=gw_xxxxxxxx          ← コメントアウトで切り戻し
# QZIRA_BASE_URL=https://api.qzira.com/v1
OPENAI_API_KEY=sk-xxxxxxxx            # ← 元のキーがそのまま使える

サポート

ご質問・不具合報告は以下よりお問い合わせください。