Skip to main content

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​

MethodDescription
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​

ParameterTypeRequiredDefaultDescription
pageNumnumberNo1Page number, starting from 1
pageSizenumberNo10Items per page
statusnumberNo—Status filter: 1=active, 0=disabled
expiredBeforeUtcstringNo—Expiry upper bound (ISO 8601 UTC); filters secrets expiring before this time

Response​

Returns SecretPageResultVO:

FieldTypeDescription
totalKeysnumberTotal number of secrets
activeKeysnumberNumber of active secrets
totalRequestnumberTotal request count
avgQpsnumberAverage QPS
pageInfoPageInfo<SecretVO>Paginated secret data

PageInfo<T>:

FieldTypeDescription
totalnumberTotal record count
totalPagesnumberTotal number of pages
currentPagenumberCurrent page number
pageSizenumberItems per page
listT[]Data list

SecretVO:

FieldTypeDescription
idnumberSecret ID
namestringSecret name
keyIdstringKey identifier
statusstringStatus
createdAtstringCreation time (ISO 8601)
lastUsedstringLast used time (ISO 8601)
expiredFlagbooleanWhether expired
allowedModelsstring[]Allowed model list
allowedProvidersstring[]Allowed provider list
ipWhiteListstring[]IP whitelist
minuteTokensQuotanumberPer-minute token quota
annualTokensQuotanumberAnnual token quota
descriptionstringDescription
expiredAtUtcstringExpiry time (ISO 8601 UTC)
byokListApikeyVO[]Associated BYOK key list
defaultSecretnumberWhether default secret: 1=yes, 0=no
createUserstringCreator

Errors​

CodeErrorWhen
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
idnumberYes—Secret ID

Response​

Returns SecretVO. See list() for field definitions.

Errors​

CodeErrorWhen
1002Data not foundSecret ID does not exist
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
namestringNo—Secret name
allowedModelsstring[]No—List of allowed model names
allowedProvidersstring[]No—List of allowed provider names
ipWhiteListstring[]No—IP whitelist (CIDR notation)
minuteTokensQuotanumberNo—Per-minute token quota
annualTokensQuotanumberNo—Annual token quota
expiredAtUtcstringNo—Expiry time (ISO 8601 UTC)
byokIdsnumber[]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​

CodeErrorWhen
1001Validation errorInvalid parameters
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
idnumberYes—Secret ID
namestringNo—Updated name
allowedModelsstring[]No—Updated allowed model list
allowedProvidersstring[]No—Updated allowed provider list
ipWhiteListstring[]No—Updated IP whitelist
minuteTokensQuotanumberNo—Updated per-minute token quota
annualTokensQuotanumberNo—Updated annual token quota
expiredAtUtcstringNo—Updated expiry time (ISO 8601 UTC)
byokIdsnumber[]No—Updated BYOK key IDs

Response​

Returns boolean — true on success.

Errors​

CodeErrorWhen
1001Validation errorInvalid parameters
1002Data not foundSecret ID does not exist
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
idnumberYes—Secret ID
statusstringYes—Action: "ENABLE", "DISABLE", or "DELETE"

Response​

Returns boolean — true on success.

Errors​

CodeErrorWhen
1001Validation errorInvalid status value
1002Data not foundSecret ID does not exist
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
secretIdnumberYes—Secret ID
startTimestringYes—Query start time (ISO 8601 local datetime)
endTimestringYes—Query end time (ISO 8601 local datetime)
pageNumnumberNo1Page number
pageSizenumberNo10Items per page

Response​

Returns PageInfo<SecretModelUsageVO>. SecretModelUsageVO:

FieldTypeDescription
modelstringModel name
requestsnumberRequest count
totalTokensnumberTotal token consumption
promptTokensnumberPrompt token count
completionTokensnumberCompletion token count

Errors​

CodeErrorWhen
1001Validation errorstartTime / endTime missing or malformed
1002Data not foundSecret ID does not exist
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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​

ParameterTypeRequiredDefaultDescription
modelNamestringNo—Model name (fuzzy search)
providerstringNo—Provider identifier
seriesProviderstringNo—Series provider identifier
modelTypestringNo—Model type
viewAllFlagnumberNo—View all flag (1=view all)
pageSizenumberNo—Items per page
pageNumnumberNo—Page number
usageTypestringNo—Usage type: "inference" or "train"
trainingMethodstringNo—Training method: "sft" or "dpo"
tagsstring[]No—Tag filter list, e.g. ["New"]
capabilitystringNo—Capability filter, e.g. "text_to_text"
modelTypeListstring[]No—Model type list (multi-select)
originProvidersstring[]No—Origin provider list (multi-select)
inputsstring[]No—Input type list, e.g. ["text"]
outputsstring[]No—Output type list, e.g. ["image"]

Response​

Returns ModelInfoVO[]:

FieldTypeDescription
modelIdstringModel ID
modelNamestringModel name
modelImagestringModel icon URL
isNewnumberWhether new model (1=yes)
providerstringProvider identifier
providerNamestringProvider display name
originProviderstringOrigin provider identifier
seriesProviderstringSeries provider identifier
modelTypestringModel type
tagsstring[]Tag list
modelSizestringModel size
featurestringFeature description
pricenumberPrice
unitstringPrice unit
availablebooleanWhether available
updatedstringUpdate time (ISO 8601)
deployPlatformstringDeploy platform
regionIdstringRegion ID
deployFrameworksstring[]Deploy framework list
labelsstring[]Label list
capabilitiesstring[]Capability list
inputsstring[]Input type set
outputsstring[]Output type set
priceExtendPartnerApiPriceExtendExtended price info
dataSourcestringData source (model_card or model_router)

Errors​

CodeErrorWhen
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh 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[]:

FieldTypeDescription
idstringProvider identifier
namestringProvider display name

Errors​

CodeErrorWhen
2000 / 2002Authentication failureAPI Key invalid
2007Permission deniedToken lacks permission
3001Token expiredRefresh failed