トークン管理モジュール¶
機能説明
インターフェースのプレフィックスは https://api-cs-al.naci-tech.com に統一されています
認証トークンを保護するため、本番環境では HTTPS を使用する必要があります。HTTP は開発環境でのみ推奨されます。
ユーザー API Token の完全な管理システム。トークンの作成、更新、削除、一括操作などの機能をサポートしています。モデル制限、IP制限、クォータ管理、有効期限などのきめ細かな制御が含まれます。これはフロントエンドのトークンページのコアデータソースです。
🔐 ユーザー認証¶
New-Api-User の説明と取得方法¶
ユーザー単位の認証を行うすべてのトークン API では、リクエストヘッダーに New-Api-User を追加で付与する必要があります。これは実際に API を呼び出しているユーザー ID を表します。
New-Api-User を取得する手順:
- コンソールにログインし、
https://api-cs-al.naci-tech.com/console/personalを開きます。 - 左側メニューの「個人設定」をクリックします。
- 画面上部のアバターエリアに、
ID: 36のような表示があります。この数値部分(例では36)がNew-Api-Userの値です(数値はあくまで例です)。

全トークンの取得¶
- インターフェース名:全トークンの取得
- HTTP メソッド:GET
- パス:
/api/token/ - 認証要件:ユーザー
- 機能概要:現在のユーザーの全トークンリストをページネーションで取得します
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/?p=1&size=20', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();
✅ 成功レスポンス例:
{
"success": true,
"message": "",
"data": {
"items": [
{
"id": 1,
"name": "API Token",
"key": "<YOUR_API_KEY>",
"status": 1,
"remain_quota": 1000000,
"unlimited_quota": false,
"expired_time": 1640995200,
"created_time": 1640908800,
"accessed_time": 1640995000
}
],
"total": 5,
"page": 1,
"page_size": 20
}
}
ここでの remain_quota は、そのトークンの現在の残りクォータを表します。チャージ金額との換算関係は remain_quota = 金額 * 500000 です。
❗ 失敗レスポンス例:
🧾 フィールド説明:
p(数値): ページ番号、デフォルトは 1size(数値): ページあたりの数量、デフォルトは 20items(配列): トークン情報リストtotal(数値): トークンの総数page(数値): 現在のページ番号page_size(数値): ページあたりの数量
トークンの検索¶
- インターフェース名:トークンの検索
- HTTP メソッド:GET
- パス:
/api/token/search - 認証要件:ユーザー
- 機能概要:キーワードとトークン値に基づいてユーザーのトークンを検索します
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/search?keyword=api&token=sk-123', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();
✅ 成功レスポンス例:
{
"success": true,
"message": "",
"data": [
{
"id": 1,
"user_id": 1,
"key": "sk-your-token-placeholder",
"status": 1,
"name": "Token name",
"created_time": 1770876978,
"accessed_time": 1770879972,
"expired_time": -1,
"remain_quota": -1,
"unlimited_quota": true,
"model_limits_enabled": false,
"model_limits": "",
"allow_ips": "",
"used_quota": 1,
"group": "demo",
"cross_group_retry": false,
"DeletedAt": null
}
]
}
remain_quota フィールドは、そのトークンの残りクォータを表します。-1 かつ unlimited_quota = true の場合は無制限クォータを意味します。通常の課金においては、チャージ金額との換算関係は remain_quota = 金額 * 500000 です。
❗ 失敗レスポンス例:
🧾 フィールド説明:
keyword(文字列): 検索キーワード、トークン名に一致token(文字列): トークン値検索、部分一致をサポート
単一トークンの取得¶
- インターフェース名:単一トークンの取得
- HTTP メソッド:GET
- パス:
/api/token/:id - 認証要件:ユーザー
- 機能概要:指定されたトークンの詳細情報を取得します
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/123', {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();
✅ 成功レスポンス例:
{
"success": true,
"message": "",
"data": {
"id": 123,
"name": "API Token",
"key": "sk-your-token-placeholder",
"status": 1,
"remain_quota": 1000000,
"unlimited_quota": false,
"model_limits_enabled": true,
"model_limits": "gpt-3.5-turbo,gpt-4",
"allow_ips": "192.168.1.1,10.0.0.1",
"group": "default",
"expired_time": 1640995200,
"created_time": 1640908800,
"accessed_time": 1640995000
}
}
ここでの remain_quota は、そのトークンの現在の残りクォータを表します。チャージ金額との換算関係は remain_quota = 金額 * 500000 です。
❗ 失敗レスポンス例:
🧾 フィールド説明:
id (数値): トークン ID、URL パスを通じて渡されます
トークンの作成¶
- インターフェース名:トークンの作成
- HTTP メソッド:POST
- パス:
/api/token/ - 認証要件:ユーザー
- 機能概要:新しい API Token を作成します。一括作成もサポートしています。
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
name: "My API Token",
expired_time: 1640995200,
remain_quota: 1000000,
unlimited_quota: false,
model_limits_enabled: true,
model_limits: ["gpt-3.5-turbo", "gpt-4"],
allow_ips: "192.168.1.1,10.0.0.1",
group: "default"
})
});
const data = await response.json();
✅ 成功レスポンス例:
❗ 失敗レスポンス例:
🧾 フィールド説明:
name(文字列): トークン名、最大長 30 文字expired_time(数値): 有効期限のタイムスタンプ、-1 は無期限を示しますremain_quota(数値): 残りクォータ。チャージ金額との換算関係はremain_quota = 金額 * 500000です。unlimited_quota(ブール型): 無制限クォータであるかどうかmodel_limits_enabled(ブール型): モデル制限を有効にするかどうかmodel_limits(配列): 使用を許可するモデルのリストallow_ips(文字列): 許可された IP アドレス、カンマ区切りgroup(文字列): 所属グループ
トークンの更新¶
- インターフェース名:トークンの更新
- HTTP メソッド:PUT
- パス:
/api/token/ - 認証要件:ユーザー
- 機能概要:トークン設定を更新します。ステータスの切り替えと完全な更新をサポートします。
💡 リクエスト例(完全な更新):
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
id: 123,
name: "Updated Token",
expired_time: 1640995200,
remain_quota: 2000000,
unlimited_quota: false,
model_limits_enabled: true,
model_limits: ["gpt-3.5-turbo", "gpt-4"],
allow_ips: "192.168.1.1",
group: "vip"
})
});
const data = await response.json();
💡 リクエスト例(ステータスのみの更新):
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/?status_only=true', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
id: 123,
status: 1
})
});
const data = await response.json();
✅ 成功レスポンス例:
❗ 失敗レスポンス例:
🧾 フィールド説明:
id(数値): トークン ID、必須status_only(クエリパラメータ): ステータスのみを更新するかどうか- 他のフィールドはトークン作成インターフェースと同じで、すべてオプションです
トークンの削除¶
- インターフェース名:トークンの削除
- HTTP メソッド:DELETE
- パス:
/api/token/:id - 認証要件:ユーザー
- 機能概要:指定されたトークンを削除します
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/123', {
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
}
});
const data = await response.json();
✅ 成功レスポンス例:
❗ 失敗レスポンス例:
🧾 フィールド説明:
id (数値): トークン ID、URL パスを通じて渡されます
トークンの一括削除¶
- インターフェース名:トークンの一括削除
- HTTP メソッド:POST
- パス:
/api/token/batch - 認証要件:ユーザー
- 機能概要:複数のトークンを一括で削除します
💡 リクエスト例:
const response = await fetch('https://api-cs-al.naci-tech.com/api/token/batch', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_user_token',
'New-Api-User': 'your_user_id'
},
body: JSON.stringify({
ids: [1, 2, 3, 4, 5]
})
});
const data = await response.json();
✅ 成功レスポンス例:
❗ 失敗レスポンス例:
🧾 フィールド説明:
ids(配列): 削除するトークン ID のリスト、必須かつ空であってはならないdata(数値): 正常に削除されたトークンの数