ToAPIsToAPIs
API キー

API キーを作成

自分のアカウントに通常のモデルキーを作成します

POST
/api/v1/api-keys

中国本土のユーザー向け: 中国本土のユーザーは 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.keystring

sk- 接頭辞を含む完全なシークレット. 今回の作成またはローテーション応答のみで返します.

レスポンス例

レスポンス例

{
  "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": []
  }
}