API キーを作成
自分のアカウントに通常のモデルキーを作成します
中国本土のユーザー向け: 中国本土のユーザーは https://api.toapis.cn を API エンドポイント (Base URL)としてご利用ください. 本ドキュメント内の例では https://api.toapis.com を https://api.toapis.cn に置き換えてください.
動作
新しいモデルキーを作成し, 生成 API の呼び出しに使います. 成功時は HTTP 201 と完全なシークレットを返します: シークレットはこのレスポンスに一度だけ含まれ, 以後の GET では返らないため直ちに保存してください. 新しいキーはアカウントの基本グループを使い, グループ指定, グループ横断リトライ, Webhook 設定はできません.
初期クォータはそのキーの呼び出し上限であり, アカウント残高からの前払いではありません.
金額フィールドは非負の十進文字列のみ受け付け, 内部で使われる整数のクォータ単位に正確に換算できる必要があります (小数は自動で切り捨てられません). アカウントごとの未削除キー上限は 10000 件で, 超過すると 409 (code=13004) を返します. 作成は冪等ではありません: レスポンスを見失った場合は, 再送する前にキー一覧で作成済みか確認してください.
作成済みでシークレットを未保存なら, ローテーションで新しいシークレットを取得できます.
認証
Authorizationstringヘッダー必須Bearer YOUR_SYSTEM_ACCESS_TOKEN を使用します. モデルキーは不可, X-User-Id は不要です. 共通ルールは利用方法を参照してください.
リクエストパラメータ
空でない本文は Content-Type: application/json が必要で, 上限は 16384 バイトです. 最上位は JSON オブジェクトとし, 未知または重複するフィールドやクエリパラメータは拒否します. 本文の読み取り期限は 10 秒です.
namestringボディ必須前後の空白を除いて必須, 最大 50 UTF-8 バイト.
expires_atstring | nullボディ未来の RFC 3339 日時, 小数秒は切り上げ. null または作成時の省略は無期限. 更新時の省略は元の値を保持.
unlimitedbooleanボディデフォルト: false既定 false, null は不可. true の場合 remaining_credits は省略または null のみで, 値を指定すると 400.
remaining_creditsstringボディデフォルト: 0初期残高 credits. 既定は文字列 "0".
daily_limit_creditsstring | nullボディ日次 credits 上限. null または文字列 "0" は無制限.
monthly_limit_creditsstring | nullボディ月次 credits 上限. null または文字列 "0" は無制限.
model_limitsarrayボディデフォルト: モデル ID の配列, 既定 []. 空でない場合に制限を有効化. 空白除去後に空またはカンマを含む項目は不可. 最初の順序で重複を除去し, 結合後は最大 1024 UTF-8 バイト.
allow_ipsarrayボディデフォルト: このモデル API Key の接続元 IP だけを制限する文字列配列. 単一の IPv4/IPv6 アドレスを指定し, 空白除去, 正規化, 重複除去を行います. [] は制限解除, null や無効な値は 400 です. CIDR, ホスト名, ポート, IPv6 zone は未対応です.
リクエスト例
リクエスト例
curl --request POST \
--url 'https://api.toapis.com/api/v1/api-keys' \
--header 'Authorization: Bearer YOUR_SYSTEM_ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"name": "Example Key", "expires_at": "2027-01-01T00:00:00Z", "unlimited": false, "remaining_credits": "500", "daily_limit_credits": null, "monthly_limit_credits": null, "model_limits": ["example-image-model"]}'import requests
response = requests.post(
"https://api.toapis.com/api/v1/api-keys",
headers={"Authorization": "Bearer YOUR_SYSTEM_ACCESS_TOKEN"},
json={'name': 'Example Key', 'expires_at': '2027-01-01T00:00:00Z', 'unlimited': False, 'remaining_credits': '500', 'daily_limit_credits': None, 'monthly_limit_credits': None, 'model_limits': ['example-image-model']},
timeout=30,
)
response.raise_for_status()
print(response.json())const response = await fetch("https://api.toapis.com/api/v1/api-keys", {
method: "POST",
headers: { Authorization: "Bearer YOUR_SYSTEM_ACCESS_TOKEN", "Content-Type": "application/json" },
body: JSON.stringify({"name": "Example Key", "expires_at": "2027-01-01T00:00:00Z", "unlimited": false, "remaining_credits": "500", "daily_limit_credits": null, "monthly_limit_credits": null, "model_limits": ["example-image-model"]}),
signal: AbortSignal.timeout(30_000),
});
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
}
console.log(await response.json());レスポンスフィールド
例は架空のデータです. メタデータはキー詳細, 共通のレスポンスとエラーは利用方法を参照してください.
data.keystringsk- 接頭辞を含む完全なシークレット. 今回の作成またはローテーション応答のみで返します.
レスポンス例
レスポンス例
{
"code": 0,
"message": "",
"data": {
"id": "43",
"name": "Example Key",
"key_hint": "****xyz9",
"status": "enabled",
"created_at": "2026-11-01T08:00:00Z",
"expires_at": "2027-01-01T00:00:00Z",
"unlimited": false,
"remaining_credits": "500",
"daily_limit_credits": null,
"monthly_limit_credits": null,
"key": "sk-example00000000000000000000000000000000000000xyz9",
"model_limits": [
"example-image-model"
],
"allow_ips": []
}
}