クライアント/pi

pi で Wokey API を使う

Wokey の API キーを取得し、pi の Base URL を Wokey に向けてから、curl リクエスト 1 回で接続を確認します。

更新日

このページの内容expand_more

API キーと Base URL を用意するlink

どのクライアントも、同じ Wokey API キーと同じ Base URL を使います。

API キーを作成する

ログインして API ページでプラットフォームのキーを作成します。同じアカウントのキーは残高を共有します。

API キーを作成key

Wokey の Base URL を使う

クライアントの Base URL にはゲートウェイのドメインを設定します。/v1 を付けるかどうかは以下の設定を参照してください。

クライアントを設定するlink

pi はカスタムプロバイダーを models.json から読み込みます。以下の設定では Claude モデルを Anthropic Messages で呼び出します。GPT、DeepSeek などのモデルには、api を openai-completions にし、baseUrl の末尾を /v1 にした 2 つ目のプロバイダーを追加してください。

  1. 1

    API キーを export する

    pi を起動するターミナルで export WOKEY_API_KEY="YOUR_API_KEY" を実行するか、~/.zshrc に追加します。

  2. 2

    models.json を書く

    以下の内容を ~/.pi/agent/models.json に保存します。ファイルにほかのプロバイダーが既にある場合は、providers の下に wokey のエントリだけを追加してください。

  3. 3

    モデルを選ぶ

    pi を起動して /model と入力し、wokey の下のモデルを選びます。

pi
{
  "providers": {
    "wokey": {
      "baseUrl": "https://api.wokey.ai",
      "api": "anthropic-messages",
      "apiKey": "$WOKEY_API_KEY",
      "models": [
        { "id": "claude-opus-5-5", "reasoning": true, "input": ["text", "image"] }
      ]
    }
  }
}

API 形式と Base URLlink

同じクライアントでも API 形式を切り替えると、Base URL の末尾に /v1 を付けるかどうかが変わることがあります。

形式Base URL用途
Anthropic Messageshttps://api.wokey.aiClaude モデル
OpenAI Chat Completionshttps://api.wokey.ai/v1DeepSeek、GLM、Kimi などのモデル
OpenAI Responseshttps://api.wokey.ai/v1GPT モデル

設定場所: ~/.pi/agent/models.json

curl で確認するlink

クライアントがエラーを出す場合は、まず curl で API キーと Base URL の問題ではないことを確認します。

pi はデフォルトで Anthropic Messages 形式を使います。このリクエストで 200 が返れば、API キーと Base URL は正しく設定されています。送信前に YOUR_API_KEY をご自身のキーに置き換えてください。

cURL
curl https://api.wokey.ai/v1/messages \
  -H "x-api-key: YOUR_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [
      { "role": "user", "content": "Hello" }
    ]
  }'

エラーとトラブルシューティングlink

まず認証、残高、レート制限、モデルの利用可否、アップストリームのタイムアウトのどれかを切り分けます。

401

invalid api key

キーがない、入力ミスがある、削除されている、または Authorization と x-api-key ヘッダーの内容が食い違っています。

402

insufficient balance

アカウントの残高が不足しています。リクエストを続ける前にチャージしてください。

403

model_denylisted / account_restricted

違反が繰り返されたため、そのモデル、またはアカウントのすべてのモデルへの呼び出しが停止されています。「違反処理手数料と制限」を参照してください。

403

request_blocked

このリクエストはアップストリームに届く前にブロックされ、課金されていません。たとえば、モデルが直前に拒否したリクエストを変更せずに再送した場合や、停止中のエンドユーザー(X-End-User-Id)の場合です。エラーメッセージに何がブロックされたかが示されるので、その内容に沿ってリクエストを変更するか、時間をおいて再試行してください。ほかのリクエストには影響しません。

429

rate limited

リクエストの頻度が高すぎます。時間をおいて再試行するか、同時実行数を減らしてください。特定のモデル、または特定のエンドユーザー(X-End-User-Id)だけが 429 を返し続ける場合は、違反後の一時的な制限の可能性があります。

499

client disconnected

レスポンスの完了前にクライアントが接続を閉じました(コード downstream_aborted)。デフォルトでは無料です。過去 24 時間にアカウントのクライアント切断が 50 回以上あり、それがリクエストの 10% 以上を占めると、以降の切断されたリクエストはアップストリームが報告した使用量で課金されます。対象は、キャッシュの読み書きを含む処理済みの入力と、アップストリームが計上した場合に限り出力です。アップストリームが使用量を報告する前に切断された場合は無料のままです。課金が始まるとアカウントに通知され、切断率が通常に戻ると 1 時間以内に課金は自動的に停止します。よくある原因は、クライアントやプロキシのタイムアウトが短すぎることや、プログラムが完了前にリクエストをキャンセルしていることです。

502

upstream unavailable

アップストリームのモデルサービスが一時的に利用できません。モデルを切り替えるか、時間をおいて再試行してください。

504

upstream timeout

アップストリームのレスポンスがタイムアウトしました。コンテキストを短くするか、max_tokens を減らすか、再試行してください。

529

upstream overloaded

アップストリームのモデルが一時的に過負荷になっており、Wokey はほかの経路での再試行を済ませています(コード upstream_overloaded)。残高とは関係ありません。少し待ってから再試行するか、モデルを切り替えてください。

よくある質問link

pi の baseUrl に /v1 は必要ですか?
api フィールドによります。anthropic-messages の場合は /v1 なしの https://api.wokey.ai、openai-completions または openai-responses の場合は https://api.wokey.ai/v1 を指定してください。
/model に Wokey のモデルが表示されないのはなぜですか?
pi は API キーを解決できないとカスタムモデルを一覧に表示しません。apiKey が $WOKEY_API_KEY の場合は、pi を起動するのと同じターミナルで export WOKEY_API_KEY を実行し、models.json が有効な JSON かどうかを確認してください。/model は開くたびにこのファイルを読み直します。
pi で Wokey のモデルに画像を送るには?
pi のカスタムモデルは、デフォルトではテキスト入力のみを宣言します。画像に対応するモデルに "input": ["text", "image"] を追加して、画像入力を受け付けることを宣言してください。
コンテキストウィンドウと最大出力を変更する必要はありますか?
指定しない場合、pi は contextWindow 128000、maxTokens 16384 とみなします。モデルのウィンドウがそれより大きい場合は、モデルエントリの contextWindow と maxTokens をモデルページの値に合わせて設定してください。
API キーをファイルに書かずに済ませられますか?
はい。apiKey には $NAME 形式の環境変数や、コマンドの出力からキーを読み取る !command 形式を指定できます。