Secret — TypeScript SDK
PAI Key (Secret) management — CRUD, lifecycle actions, and per-model usage.
Overview
The Secret resource manages the platform's first-party API keys (PAI Keys): list them with paginated stats, create new ones, edit metadata, enable/disable/delete them, and inspect per-model usage breakdowns. It also exposes the model and provider catalogs used when binding allowed models or providers to a secret.
Accessed via client.secrets.
Available Operations
| Method | Description |
|---|---|
list() | List secrets with pagination and aggregate stats |
detail() | Get a single secret's full record |
create() | Create a new secret (PAI Key) |
edit() | Edit an existing secret's metadata |
action() | Enable, disable, or delete a secret |
usageByModel() | Paginated usage broken down by model |
modelList() | Models available for binding to a secret |
providers() | Provider list for secrets |
list
List secrets with pagination, optional status filter, and an optional UTC expiry upper bound.
Example Usage
import { WltClient } from 'wlt-platform';
const client = new WltClient({ apiKey: 'your-api-key', baseUrl: 'https://console.example.com' });
const result = await client.secrets.list({ pageNum: 1, pageSize: 20 });
console.log(`Total secrets: ${result.totalKeys}`);
for (const secret of result.pageInfo.list) {
console.log(secret.id, secret.name, secret.status);
}
// Filter by active status
const active = await client.secrets.list({ pageNum: 1, pageSize: 5, status: 1 });
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
pageNum | number | No | 1 | Page number, starting from 1 |
pageSize | number | No | 10 | Items per page |
status | number | No | — | Status filter: 1=active, 0=disabled |
expiredBeforeUtc | string | No | — | Expiry upper bound (ISO 8601 UTC); filters secrets expiring before this time |
Response
Returns SecretPageResultVO:
| Field | Type | Description |
|---|---|---|
totalKeys | number | Total number of secrets |
activeKeys | number | Number of active secrets |
totalRequest | number | Total request count |
avgQps | number | Average QPS |
pageInfo | PageInfo<SecretVO> | Paginated secret data |
PageInfo<T>:
| Field | Type | Description |
|---|---|---|
total | number | Total record count |
totalPages | number | Total number of pages |
currentPage | number | Current page number |
pageSize | number | Items per page |
list | T[] | Data list |
SecretVO:
| Field | Type | Description |
|---|---|---|
id | number | Secret ID |
name | string | Secret name |
keyId | string | Key identifier |
status | string | Status |
createdAt | string | Creation time (ISO 8601) |
lastUsed | string | Last used time (ISO 8601) |
expiredFlag | boolean | Whether expired |
allowedModels | string[] | Allowed model list |
allowedProviders | string[] | Allowed provider list |
ipWhiteList | string[] | IP whitelist |
minuteTokensQuota | number | Per-minute token quota |
annualTokensQuota | number | Annual token quota |
description | string | Description |
expiredAtUtc | string | Expiry time (ISO 8601 UTC) |
byokList | ApikeyVO[] | Associated BYOK key list |
defaultSecret | number | Whether default secret: 1=yes, 0=no |
createUser | string | Creator |
Errors
| Code | Error | When |
|---|---|---|
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
detail
Get a single secret's full record by database ID.
Example Usage
const s = await client.secrets.detail(123);
console.log(s.name);
console.log(s.allowedModels);
console.log(s.allowedProviders);
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
id | number | Yes | — | Secret ID |
Response
Returns SecretVO. See list() for field definitions.
Errors
| Code | Error | When |
|---|---|---|
1002 | Data not found | Secret ID does not exist |
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
create
Create a new secret (PAI Key). Returns the generated API key string.
create() does not return the database row's numeric id. To resolve it, call client.secrets.list(...) and match by name — see the lookup at the end of the example below.
Example Usage
// Minimal
const newKey = await client.secrets.create({ name: 'prod-key' });
console.log(`New API key: ${newKey}`);
// Full creation
const fullKey = await client.secrets.create({
name: 'production-key',
allowedModels: ['qwen-turbo', 'qwen-plus'],
allowedProviders: ['dashscope'],
ipWhiteList: ['10.0.0.0/8'],
minuteTokensQuota: 100000,
annualTokensQuota: 50000000,
expiredAtUtc: '2027-01-01T00:00:00Z',
byokIds: [1, 2],
});
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name | string | No | — | Secret name |
allowedModels | string[] | No | — | List of allowed model names |
allowedProviders | string[] | No | — | List of allowed provider names |
ipWhiteList | string[] | No | — | IP whitelist (CIDR notation) |
minuteTokensQuota | number | No | — | Per-minute token quota |
annualTokensQuota | number | No | — | Annual token quota |
expiredAtUtc | string | No | — | Expiry time (ISO 8601 UTC) |
byokIds | number[] | No | — | List of BYOK key IDs to associate |
Response
Returns string — the newly generated API key value. Save it now; the backend will not return it again.
Errors
| Code | Error | When |
|---|---|---|
1001 | Validation error | Invalid parameters |
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
edit
Edit an existing secret. id is required.
Example Usage
const ok = await client.secrets.edit({
id: 123,
name: 'updated-secret-name',
allowedModels: ['qwen-turbo', 'qwen-max'],
minuteTokensQuota: 200000,
});
console.log(`Success: ${ok}`); // true
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
id | number | Yes | — | Secret ID |
name | string | No | — | Updated name |
allowedModels | string[] | No | — | Updated allowed model list |
allowedProviders | string[] | No | — | Updated allowed provider list |
ipWhiteList | string[] | No | — | Updated IP whitelist |
minuteTokensQuota | number | No | — | Updated per-minute token quota |
annualTokensQuota | number | No | — | Updated annual token quota |
expiredAtUtc | string | No | — | Updated expiry time (ISO 8601 UTC) |
byokIds | number[] | No | — | Updated BYOK key IDs |
Response
Returns boolean — true on success.
Errors
| Code | Error | When |
|---|---|---|
1001 | Validation error | Invalid parameters |
1002 | Data not found | Secret ID does not exist |
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
action
Apply a lifecycle action to a secret.
Example Usage
await client.secrets.action({ id: 123, status: 'DISABLE' });
await client.secrets.action({ id: 123, status: 'ENABLE' });
await client.secrets.action({ id: 123, status: 'DELETE' });
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
id | number | Yes | — | Secret ID |
status | string | Yes | — | Action: "ENABLE", "DISABLE", or "DELETE" |
Response
Returns boolean — true on success.
Errors
| Code | Error | When |
|---|---|---|
1001 | Validation error | Invalid status value |
1002 | Data not found | Secret ID does not exist |
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
usageByModel
Paginated usage broken down by model. startTime and endTime are required (ISO 8601 local datetime, e.g. 2026-04-01T00:00:00).
Example Usage
const result = await client.secrets.usageByModel({
secretId: 123,
startTime: '2026-04-01T00:00:00',
endTime: '2026-04-30T23:59:59',
pageNum: 1,
pageSize: 10,
});
for (const item of result.list) {
console.log(item.model, item.promptTokens, item.completionTokens);
}
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
secretId | number | Yes | — | Secret ID |
startTime | string | Yes | — | Query start time (ISO 8601 local datetime) |
endTime | string | Yes | — | Query end time (ISO 8601 local datetime) |
pageNum | number | No | 1 | Page number |
pageSize | number | No | 10 | Items per page |
Response
Returns PageInfo<SecretModelUsageVO>. SecretModelUsageVO:
| Field | Type | Description |
|---|---|---|
model | string | Model name |
requests | number | Request count |
totalTokens | number | Total token consumption |
promptTokens | number | Prompt token count |
completionTokens | number | Completion token count |
Errors
| Code | Error | When |
|---|---|---|
1001 | Validation error | startTime / endTime missing or malformed |
1002 | Data not found | Secret ID does not exist |
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
modelList
Query available models for binding to a secret.
Example Usage
// All inference models
const models = await client.secrets.modelList({ usageType: 'inference' });
for (const m of models) {
console.log(m.modelName, m.provider);
}
// Filter by provider, name, and tag
const filtered = await client.secrets.modelList({
provider: 'dashscope',
modelName: 'qwen',
tags: ['New'],
});
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
modelName | string | No | — | Model name (fuzzy search) |
provider | string | No | — | Provider identifier |
seriesProvider | string | No | — | Series provider identifier |
modelType | string | No | — | Model type |
viewAllFlag | number | No | — | View all flag (1=view all) |
pageSize | number | No | — | Items per page |
pageNum | number | No | — | Page number |
usageType | string | No | — | Usage type: "inference" or "train" |
trainingMethod | string | No | — | Training method: "sft" or "dpo" |
tags | string[] | No | — | Tag filter list, e.g. ["New"] |
capability | string | No | — | Capability filter, e.g. "text_to_text" |
modelTypeList | string[] | No | — | Model type list (multi-select) |
originProviders | string[] | No | — | Origin provider list (multi-select) |
inputs | string[] | No | — | Input type list, e.g. ["text"] |
outputs | string[] | No | — | Output type list, e.g. ["image"] |
Response
Returns ModelInfoVO[]:
| Field | Type | Description |
|---|---|---|
modelId | string | Model ID |
modelName | string | Model name |
modelImage | string | Model icon URL |
isNew | number | Whether new model (1=yes) |
provider | string | Provider identifier |
providerName | string | Provider display name |
originProvider | string | Origin provider identifier |
seriesProvider | string | Series provider identifier |
modelType | string | Model type |
tags | string[] | Tag list |
modelSize | string | Model size |
feature | string | Feature description |
price | number | Price |
unit | string | Price unit |
available | boolean | Whether available |
updated | string | Update time (ISO 8601) |
deployPlatform | string | Deploy platform |
regionId | string | Region ID |
deployFrameworks | string[] | Deploy framework list |
labels | string[] | Label list |
capabilities | string[] | Capability list |
inputs | string[] | Input type set |
outputs | string[] | Output type set |
priceExtend | PartnerApiPriceExtend | Extended price info |
dataSource | string | Data source (model_card or model_router) |
Errors
| Code | Error | When |
|---|---|---|
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |
providers
Get the provider list available for secrets.
Example Usage
const providers = await client.secrets.providers();
for (const p of providers) {
console.log(p.id, p.name);
}
Parameters
None.
Response
Returns ProviderVO[]:
| Field | Type | Description |
|---|---|---|
id | string | Provider identifier |
name | string | Provider display name |
Errors
| Code | Error | When |
|---|---|---|
2000 / 2002 | Authentication failure | API Key invalid |
2007 | Permission denied | Token lacks permission |
3001 | Token expired | Refresh failed |