Skip to main content

Secret — Python SDK

Manage the API secrets your apps use to call the gateway.

Overview​

The Secret resource covers the full lifecycle of API secrets: listing, inspecting, creating, editing, enabling/disabling/deleting, and querying per-model usage. It also exposes the supporting model and provider catalogues used when binding a secret to a specific subset of upstream services.

Accessed via client.secrets.

Available Operations​

MethodDescription
list()List secrets with pagination and optional filters
detail()Get a single secret's details by ID
create()Create a new secret and return the generated API key
edit()Edit an existing secret
action()Enable, disable, or delete a secret
usageByModel()Query secret usage breakdown by model
modelList()List available models for secret binding
providers()List providers available for secrets

list​

List secrets with pagination and optional filters.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# Basic listing
result = client.secrets.list()
print(f"Total secrets: {result.data.totalKeys}")
for secret in result.data.pageInfo.list:
print(secret.id, secret.name, secret.status)

# With filters
result = client.secrets.list(page_num=1, page_size=5, status=1)

Parameters​

ParameterTypeRequiredDefaultDescription
page_numintNo1Page number, starting from 1
page_sizeintNo10Items per page
statusintNoNoneStatus filter: 1=active, 0=disabled
expired_before_utcdatetimeNoNoneExpiry time upper bound (UTC), filter secrets expiring before this time

Response​

Returns BaseResponse[SecretPageResultVO].

SecretPageResultVO fields:

FieldTypeDescription
totalKeysintTotal number of secrets
activeKeysintNumber of active secrets
totalRequestintTotal request count
avgQpsfloatAverage QPS
pageInfoPageInfo[SecretVO]Paginated secret data

PageInfo fields:

FieldTypeDescription
totalintTotal record count
totalPagesintTotal number of pages
currentPageintCurrent page number
pageSizeintItems per page
listlist[SecretVO]Data list

SecretVO fields:

FieldTypeDescription
idintSecret ID
namestrSecret name
keyIdstrKey identifier
statusstrStatus
createdAtdatetimeCreation time
lastUseddatetimeLast used time
expiredFlagboolWhether expired
allowedModelslist[str]Allowed model list
allowedProviderslist[str]Allowed provider list
ipWhiteListlist[str]IP whitelist
minuteTokensQuotaintPer-minute token quota
annualTokensQuotaintAnnual token quota
descriptionstrDescription
expiredAtUtcdatetimeExpiry time (UTC)
byokListlist[ApikeyVO]Associated BYOK key list
defaultSecretintWhether default secret: 1=yes, 0=no
createUserstrCreator

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

detail​

Get a single secret's details by ID.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

detail = client.secrets.detail(id=123)
print(detail.data.name)
print(detail.data.allowedModels)
print(detail.data.allowedProviders)

Parameters​

ParameterTypeRequiredDefaultDescription
idintYes--Secret ID

Response​

Returns BaseResponse[SecretVO].

SecretVO fields: see client.secrets.list() above.

Errors​

CodeExceptionWhen
1001ValidationErrorInvalid request parameters
1002NotFoundErrorSecret not found
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

create​

Create a new secret. 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​

from wlt import WltClient
from datetime import datetime, timezone, timedelta

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# Minimal creation
result = client.secrets.create(name="my-secret")
print(f"New API key: {result.data}")

# Full creation with all options
result = client.secrets.create(
name="production-key",
allowed_models=["qwen-turbo", "qwen-plus"],
allowed_providers=["dashscope"],
ip_white_list=["10.0.0.0/8"],
minute_tokens_quota=100000,
annual_tokens_quota=50000000,
expired_at_utc=datetime(2027, 1, 1, tzinfo=timezone.utc),
byok_ids=[1, 2],
)
print(f"New API key: {result.data}")

# To obtain the new secret's DB id, look it up by name via list():
page = client.secrets.list(page_num=1, page_size=100)
new_id = next(s.id for s in page.data.list if s.name == "production-key")

Parameters​

ParameterTypeRequiredDefaultDescription
namestrNoNoneSecret name
allowed_modelslist[str]NoNoneList of allowed model names
allowed_providerslist[str]NoNoneList of allowed provider names
ip_white_listlist[str]NoNoneIP whitelist (CIDR notation)
minute_tokens_quotaintNoNonePer-minute token quota
annual_tokens_quotaintNoNoneAnnual token quota
expired_at_utcdatetimeNoNoneExpiry time in UTC
byok_idslist[int]NoNoneList of BYOK key IDs to associate

Response​

Returns BaseResponse[str]. The data field contains the generated API key string (the secret key value -- save it now, the backend will not return it again).

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

edit​

Edit an existing secret.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

result = client.secrets.edit(
id=123,
name="updated-secret-name",
allowed_models=["qwen-turbo", "qwen-max"],
minute_tokens_quota=200000,
)
print(f"Success: {result.data}") # True

Parameters​

ParameterTypeRequiredDefaultDescription
idintYes--Secret ID
namestrNoNoneUpdated name
allowed_modelslist[str]NoNoneUpdated allowed model list
allowed_providerslist[str]NoNoneUpdated allowed provider list
ip_white_listlist[str]NoNoneUpdated IP whitelist
minute_tokens_quotaintNoNoneUpdated per-minute token quota
annual_tokens_quotaintNoNoneUpdated annual token quota
expired_at_utcdatetimeNoNoneUpdated expiry time (UTC)
byok_idslist[int]NoNoneUpdated BYOK key IDs

Response​

Returns BaseResponse[bool]. data=True on success.

Errors​

CodeExceptionWhen
1001ValidationErrorInvalid request parameters
1002NotFoundErrorSecret not found
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

action​

Perform an action on a secret: "ENABLE", "DISABLE", or "DELETE".

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# Disable a secret
result = client.secrets.action(id=123, status="DISABLE")
print(f"Success: {result.data}") # True

# Enable a secret
result = client.secrets.action(id=123, status="ENABLE")

# Delete a secret
result = client.secrets.action(id=123, status="DELETE")

Parameters​

ParameterTypeRequiredDefaultDescription
idintYes--Secret ID
statusstrYes--Action: "ENABLE", "DISABLE", or "DELETE"

Response​

Returns BaseResponse[bool]. data=True on success.

Errors​

CodeExceptionWhen
1001ValidationErrorInvalid request parameters
1002NotFoundErrorSecret not found
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

usageByModel​

Query secret usage breakdown by model with pagination.

Example Usage​

from wlt import WltClient
from datetime import datetime

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

result = client.secrets.usage_by_model(
secret_id=123,
start_time=datetime(2026, 4, 1),
end_time=datetime(2026, 4, 21),
page_num=1,
page_size=10,
)
for item in result.data.list:
print(item.model, item.promptTokens, item.completionTokens)

Parameters​

ParameterTypeRequiredDefaultDescription
secret_idintYes--Secret ID
start_timedatetimeNoNoneQuery start time
end_timedatetimeNoNoneQuery end time
page_numintNo1Page number
page_sizeintNo10Items per page

Response​

Returns BaseResponse[PageInfo[SecretModelUsageVO]].

SecretModelUsageVO fields:

FieldTypeDescription
modelstrModel name
requestsintRequest count
totalTokensintTotal token consumption
promptTokensintPrompt token count
completionTokensintCompletion token count

Errors​

CodeExceptionWhen
1001ValidationErrorInvalid request parameters
1002NotFoundErrorSecret not found
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

modelList​

Query available models for secret binding.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

# List all inference models
models = client.secrets.model_list(usage_type="inference")
for m in models.data:
print(m.modelName, m.provider)

# Filter by provider
models = client.secrets.model_list(
provider="dashscope",
model_name="qwen",
tags=["New"],
)
for m in models.data:
print(m.modelName)

Parameters​

ParameterTypeRequiredDefaultDescription
model_namestrNoNoneModel name (fuzzy search)
providerstrNoNoneProvider identifier
series_providerstrNoNoneSeries provider identifier
model_typestrNoNoneModel type
view_all_flagintNoNoneView all flag (1=view all)
page_sizeintNoNoneItems per page
page_numintNoNonePage number
usage_typestrNoNoneUsage type: "inference" or "train"
training_methodstrNoNoneTraining method: "sft" or "dpo"
tagslist[str]NoNoneTag filter list, e.g. ["New"]
capabilitystrNoNoneCapability filter, e.g. "text_to_text"
model_type_listlist[str]NoNoneModel type list (multi-select)
origin_providerslist[str]NoNoneOrigin provider list (multi-select)
inputslist[str]NoNoneInput type list, e.g. ["text"]
outputslist[str]NoNoneOutput type list, e.g. ["image"]

Response​

Returns BaseResponse[list[ModelInfoVO]].

ModelInfoVO fields:

FieldTypeDescription
modelIdstrModel ID
modelNamestrModel name
modelImagestrModel icon URL
isNewintWhether new model (1=yes)
providerstrProvider identifier
providerNamestrProvider display name
originProviderstrOrigin provider identifier
seriesProviderstrSeries provider identifier
modelTypestrModel type
tagslist[str]Tag list
modelSizestrModel size
featurestrFeature description
priceDecimalPrice
unitstrPrice unit
availableboolWhether available
updateddatetimeUpdate time
deployPlatformstrDeploy platform
regionIdstrRegion ID
deployFrameworkslist[str]Deploy framework list
labelslist[str]Label list
capabilitieslist[str]Capability list (e.g. text_to_text)
inputslist[str]Input type set
outputslist[str]Output type set
priceExtendPartnerApiPriceExtendExtended price info
dataSourcestrData source (model_card or model_router)

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed

providers​

Get the list of providers available for secrets.

Example Usage​

from wlt import WltClient

client = WltClient(api_key="your-api-key", base_url="https://console.example.com")

providers = client.secrets.providers()
for p in providers.data:
print(p.id, p.name)

Parameters​

None.

Response​

Returns BaseResponse[list[ProviderVO]].

ProviderVO fields:

FieldTypeDescription
idstrProvider identifier
namestrProvider display name

Errors​

CodeExceptionWhen
2000 / 2002AuthenticationErrorAPI Key invalid
2007PermissionErrorPermission denied
3001AuthenticationErrorToken expired and refresh failed