Enable a virtual key
/v1/virtual-keys/{slug}/enableEnable a virtual key.
Sets the key to ACTIVE and clears its disable reason, so a DISABLED key works again.
Requires an organization admin key, or a workspace admin key for the key's workspace.
Errors: 403 without the required role; 404 when no key has this slug; 409 when the key is EXPIRED (expiry is final).
Authorization
AuthorizationBearer va_A platform API key (
va_...), created under Settings > API keys. Scoped to an organization or one workspace, with an admin or member role. Used by the management API.
Path parameters
slugstringrequiredthe key's slug
Responses
slugstringThe key's stable identifier:
vk-followed by 16 hex characters. Used in URLs, logs and routing configs.token_hintstringThe last characters of the API key's secret, to tell keys apart. Absent for a key with
legacy_auth.legacy_authbooleanTrue for a key created before API keys existed: its bare slug still authenticates, until the key is rotated for the first time.
rotated_atstring<date-time>When the API key was last rotated (ISO 8601 date-time). Absent if it never was.
namestringThe key's name, unique within the organization.
notestringA free-text note about the key. Absent when none was set.
statusenum<string>The key's status:
ACTIVE: requests are served.DISABLED: turned off by an admin; requests are refused (403) until it is enabled.EXHAUSTED: its spend reachedcredit_limit_usd; requests are refused (403) until the limit is raised or removed, the spend resets (credit_reset_policy) or, for a PLATFORM key, credit is added.EXPIRED: pastexpires_at; final.
One of
"ACTIVE","DISABLED","EXHAUSTED","EXPIRED"disable_reasonstringThe reason given when the key was disabled. Absent unless the key is
DISABLEDwith a reason.credential_modeenum<string>Where the provider credentials come from:
BYOK(your provider keys, incredentials) orPLATFORM(VectorAxis's provider accounts, paid from your organization's credits).One of
"BYOK","PLATFORM"credentialsobject[]The key's provider credentials, as hints only. Empty for a PLATFORM key.
Child attributes
providerstringThe provider id, e.g.
OPENAI(see "List supported providers").key_hintstringThe last four characters of the provider key, to tell keys apart.
vertex_project_idstringFor a
VERTEX_AIcredential: the Google Cloud project id. Absent for other providers.vertex_regionstringFor a
VERTEX_AIcredential: the Vertex AI region, orglobal. Absent for other providers.
organizationstringThe slug of the organization the key belongs to.
workspace_idstring<uuid>The workspace the key belongs to (UUID).
created_atstring<date-time>When the key was created (ISO 8601 date-time).
updated_atstring<date-time>When the key's settings or status last changed (ISO 8601 date-time).
expires_atstring<date-time>When the key expires (ISO 8601 date-time). Absent: it never expires.
last_used_atstring<date-time>When the key last served a request (ISO 8601 date-time). Absent if it never has.
total_requestsinteger<int64>How many requests the key has served.
total_cost_usdnumber<double>What the key has spent, in USD, since it was created or since its last credit reset. This is the figure
credit_limit_usdandcredit_alert_threshold_usdare compared with.metadatamap<string, string>Your own string key/value pairs. Absent when none are set.
model_allowliststring[]The models the key may call; others are refused (403
MODEL_NOT_ALLOWED). Absent: every model.credit_limit_usdnumber<double>The most the key may spend, in USD, before it becomes
EXHAUSTED. Absent: no limit.credit_alert_threshold_usdnumber<double>The soft spend alert, in USD: at or above it the key carries the
ALERT_THRESHOLD_EXCEEDEDwarning. Absent: no alert.credit_reset_policyenum<string>When the key's spend goes back to zero:
MONTHLY(the 1st of each month, 00:00 UTC),WEEKLY(each Monday, 00:00 UTC) orNEVER.One of
"MONTHLY","WEEKLY","NEVER"credit_next_reset_atstring<date-time>When the next credit reset is due (ISO 8601 date-time). Absent when the policy is
NEVER.rate_limit_rpminteger<int32>The most requests per minute (a 60-second window). Absent: no limit.
rate_limit_tpminteger<int32>The most tokens per minute (a 60-second window). Absent: no limit.
rate_limit_rpdinteger<int32>The most requests per UTC calendar day. Absent: no limit.
initial_credits_usdnumber<double>For a PLATFORM key: the credit in USD it was created with. Absent for a BYOK key.
credit_balance_usdnumber<double>For a PLATFORM key: what it may still spend, in USD (
credit_limit_usdminustotal_cost_usd). Absent for a BYOK key, or when there is no limit.provider_whiteliststring[]For a PLATFORM key: the only providers it may use, as provider ids. Absent: any provider.
guardrail_slugsstring[]Slugs of the guardrails run on every request made with the key. Absent: none.
markup_pctnumber<double>For a PLATFORM key: its own markup on the provider's price, as a fraction (
0.06is 6%). Absent: the platform default markup applies.warningsenum<string>[]Advisory warnings, computed when the key is read; they never block requests:
ALERT_THRESHOLD_EXCEEDED:total_cost_usdhas reachedcredit_alert_threshold_usd.EXPIRING_SOON: the key expires within the next few days.
Empty when there is nothing to report.