API Keys & Provisioning
plm_ API キーを発行・管理し、自動化向けに管理キーで子キーをプロビジョニングします。
このページのエンドポイントはダッシュボード管理用で、ログインセッションの JWT アクセストークン(Authorization: Bearer <JWT access token>) で認証します。plm_ キーや SDK 互換トークンでは呼び出せません。ここで発行した plm_ キーが、そのまま OpenAI · Anthropic SDK 呼び出しに使うキーです。
個人キー#
POST /v1/keys で新しいキーを発行します。ボディのフィールドはすべて任意で、 省略するとデフォルト値が適用されます。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| name | string | null | 任意 | キー名。省略すると "Default"。 |
| allowed_models | string[] | null | 任意 | このキーで呼び出せるモデル ID のホワイトリスト。空または null なら全モデル許可。 |
| monthly_budget_krw | integer | null | 任意 | 月間支出上限(ウォン)。null は無制限。 |
| monthly_token_limit | integer | null | 任意 | 入力+出力合計トークン数の月間上限。null は無制限。超過時は 402。 |
| expires_at | datetime | null | 任意 | キーの有効期限(ISO 8601)。null は期限なし。 |
| pii_masking_enabled | boolean | 任意 | アウトバウンド PII マスキングを適用するか。デフォルト値 true。 |
| response_cache_mode | string | 任意 | off | exact | semantic。デフォルト値 off。下記「キースコープ」参照。 |
| scopes | string[] | null | 任意 | 権限スコープ。"chat" と "usage:read" の任意の組み合わせ。その他の値は 422。下記「キースコープ」参照。 |
| ip_allowlist | string[] | null | 任意 | 許可する IP/CIDR のリスト(例: 203.0.113.0/24)。null は制限なし。不正な形式は 422。 |
curl https://apirouter.pleum.ai/v1/keys \
-H "Authorization: Bearer <JWT access token>" \
-H "Content-Type: application/json" \
-d '{
"name": "production",
"allowed_models": ["gpt-4o", "claude-sonnet-4-6"],
"monthly_budget_krw": 50000,
"expires_at": "2026-12-31T23:59:59Z",
"pii_masking_enabled": true,
"response_cache_mode": "off",
"scopes": ["chat"],
"ip_allowlist": ["203.0.113.0/24"]
}'レスポンスにはキーのメタデータに加えて key(完全な秘密キー)が含まれます。完全なキーは作成時に一度だけ表示され、以降は key_prefix(例: plm_a1b2)のみ取得できます。すぐに安全な場所に保管してください。
{
"id": "k_a1b2c3d4",
"name": "production",
"key_prefix": "plm_a1b2",
"key": "plm_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"allowed_models": ["gpt-4o", "claude-sonnet-4-6"],
"monthly_budget_krw": 50000,
"is_active": true,
"pii_masking_enabled": true,
"response_cache_mode": "off",
"scopes": ["chat"],
"ip_allowlist": ["203.0.113.0/24"],
"created_at": "2026-06-27T09:00:00Z",
"expires_at": "2026-12-31T23:59:59Z"
}pii_masking_enabled=false のキーを作成したり、マスキングを無効化したりできません — 試みると 403 が返されます。キースコープ#
scopes は、キーがどの API を呼び出せるかを 制限します。"chat" はモデル呼び出し(課金される呼び出し) を、"usage:read" は read-only 使用量レポート (GET /v1/usage/report)を許可します。 null(デフォルト)はレガシー動作で、モデル呼び出しのみ可能です。 scopes を指定して "chat" を 含めない場合、課金呼び出しは 403 で拒否されます — 支出権限のない モニタリング専用キーを作れます。
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
| scopes | string[] | null | 任意 | ["chat"] · ["usage:read"] · 両方。null = レガシー(モデル呼び出しのみ)。 |
| ip_allowlist | string[] | null | 任意 | キーの使用をこれらの IP/CIDR 範囲に限定。すべてのキー認証ポイントで強制され、null は制限なし。 |
| response_cache_mode | string | 任意 | off(デフォルト)| exact(同一リクエストの完全一致)| semantic(完全一致 + 埋め込み類似度)。キャッシュヒット時はプロバイダーを呼ばずに応答し、課金は 0、レスポンスに "cached": true が付きます。 |
管理キーとプロビジョニング#
POST /v1/management-keys(ボディ {name})で plmk_ 管理キーを発行できます。管理キーは子キーのプロビジョニングに使い、 完全なキーは作成時に一度だけ表示されます。GET · POST(201)· DELETE をサポートします。
プロビジョニングエンドポイント(/v1/provisioning/keys)は JWT ではなく plmk_ 管理キーで認証します (Authorization: Bearer plmk_...)。ダッシュボードセッションなしでキーを 発行する必要がある CI · 自動化に適しています。GET(所有者のキー一覧)· POST(201、子キー作成)· DELETE をサポートします。
curl https://apirouter.pleum.ai/v1/provisioning/keys \
-H "Authorization: Bearer plmk_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"name": "ci-runner",
"monthly_budget_krw": 20000
}'子キーのボディ(ProvisionKeyCreate)では name と monthly_budget_krw のみ指定できます — allowed_models · pii_masking_enabled · expires_at は設定できません。