Vault

Secrets

Add, import and update write-only secrets; validation and refresh apply only to OAuth secrets.

Add, import and update write-only secrets; validation and refresh apply only to OAuth secrets.

Guide →

Base URL and authentication

Import replaces only the value of an existing name. Hosts change only from that line's own allowed_hosts, never from top-level defaults. New lines use their own hosts or the top-level defaults. Per-line failures appear in failed under HTTP 200 (including SECRET_TOO_LARGE, VAULT_LIMIT_EXCEEDED and INVALID_PARAMS); other lines are still written. Lookup by an invalid name returns 404 SECRET_NOT_FOUND.

List secrets

GET /vault/v1/vaults/{vault_id}/secrets

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
cursorquerynext_cursor from the previous page.
limitqueryItems per page. (default: 50) (1–200)
include_archivedqueryInclude archived items. (default: false)

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
dataSecret[]yesResult items
data[].idstringyesObject ID
data[].type"vault_secret"yesObject type
data[].vault_idstringyesVault ID
data[].namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
data[].kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
data[].allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
data[].descriptionstring / nullyesDescription; null clears it on update, omission preserves it
data[].metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
data[].status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
data[].oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
data[].oauth.expires_atdate-time / nullyesExpiry time, or null
data[].oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
data[].oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
data[].oauth.scopestring / nullyesGranted scope, or null
data[].oauth.last_errorobject / nullyesLast refresh failure, or null
data[].oauth.last_error.codestringyesStable error code
data[].oauth.last_error.messagestringyesHuman-readable error message
data[].oauth.last_error.atdate-timeyesEvent or error time
data[].versionintegeryesIncrements each time the value changes
data[].last_used_atdate-time / nullyesLast use time, or null
data[].created_atdate-timeyesCreation time
data[].updated_atdate-timeyesLast update time
data[].archived_atdate-time / nullyesArchive time, or null
next_cursorstring / nullyesNext page cursor, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Create secret

POST /vault/v1/vaults/{vault_id}/secrets

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.

Request body

FieldType / enumRequiredDescription
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
valuestringyesWrite-only secret value, at most 16 KiB
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullnoDescription; null clears it on update, omission preserves it
metadataobjectnoUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
template_id"github" / "openai" / "anthropic" / "stripe"noStatic template ID only; recorded as metadata.template
kind"static"noMust be static; create OAuth secrets through authorization

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
VAULT_INVALID_STATE409Writing to an archived vault or secret; use an active resourcevalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
SECRET_CONFLICT409Name already exists on creation; rename or update the existing secretvalidation_failurenoneno
VAULT_LIMIT_EXCEEDED400Active-secret limit exceeded; remove unused secretsvalidation_failurenoneno
SECRET_TOO_LARGE413Value exceeds 16384 bytes; reduce its sizevalidation_failurenoneno
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"GITHUB_TOKEN","value":"ghp_example","allowed_hosts":["api.github.com"]}'

Import secrets

POST /vault/v1/vaults/{vault_id}/secrets:import

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.

Request body

FieldType / enumRequiredDescription
linesImportLine[]noImportLine entries
lines[].namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
lines[].valuestringyesWrite-only secret value, at most 16 KiB
lines[].allowed_hostsstring[]noNew entries use line hosts or import defaults; replacements change hosts only with explicit per-line allowed_hosts
dotenvstringnoKEY=VALUE lines; provide exactly one of dotenv or lines
allowed_hostsstring[]noNew entries use line hosts or import defaults; replacements change hosts only with explicit per-line allowed_hosts

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
createdstring[]yesCreated secret names
replacedstring[]yesReplaced secret names
failedobject[]yesFailed import lines
failed[].lineintegeryesFailed line number, starting at 1
failed[].namestring / nullyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
failed[].code"VAULT_NOT_FOUND" / "SECRET_NOT_FOUND" / "AUTHORIZATION_NOT_FOUND" / "SECRET_CONFLICT" / "VAULT_INVALID_STATE" / "VAULT_LIMIT_EXCEEDED" / "INVALID_PARAMS" / "SECRET_KIND_MISMATCH" / "VALIDATE_UNSUPPORTED" / "SECRET_TOO_LARGE" / "RATE_LIMITED" / "AUTHORIZATION_EXPIRED" / "OAUTH_DISCOVERY_FAILED" / "OAUTH_REGISTRATION_UNSUPPORTED" / "OAUTH_ISSUER_MISMATCH" / "OAUTH_STATE_INVALID" / "OAUTH_EXCHANGE_FAILED" / "NOT_IMPLEMENTED"yesStable error code
failed[].messagestringyesHuman-readable error message

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
VAULT_INVALID_STATE409Writing to an archived vault or secret; use an active resourcevalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets:import" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"dotenv":"OPENAI_API_KEY=sk-example\nLINEAR_API_KEY=lin_example","allowed_hosts":["api.openai.com","api.linear.app"]}'

Get secret

GET /vault/v1/vaults/{vault_id}/secrets/{secret}

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
curl "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Update secret

POST /vault/v1/vaults/{vault_id}/secrets/{secret}

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Request body

FieldType / enumRequiredDescription
valuestringnoWrite-only secret value, at most 16 KiB
allowed_hostsstring[]no1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullnoDescription; null clears it on update, omission preserves it
metadataobjectnoMerge by key: strings upsert, null deletes, omitted keys remain; source and template are reserved

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
VAULT_INVALID_STATE409Writing to an archived vault or secret; use an active resourcevalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno
SECRET_TOO_LARGE413Value exceeds 16384 bytes; reduce its sizevalidation_failurenoneno
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"value":"ghp_rotated"}'

Delete secret

DELETE /vault/v1/vaults/{vault_id}/secrets/{secret}

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret_deleted"yesObject type

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
curl -X DELETE "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Archive secret

POST /vault/v1/vaults/{vault_id}/secrets/{secret}/archive

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/GITHUB_TOKEN/archive" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Validate secret

POST /vault/v1/vaults/{vault_id}/secrets/{secret}/validate

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
type"vault_secret_validation"yesObject type
secret_idstringyesAssociated secret ID, or null
vault_idstringyesVault ID
validated_atdate-timeyesValidation time
has_refresh_tokenbooleanyesWhether a refresh token is stored
status"valid" / "invalid" / "unknown"yesCurrent status
probeobjectyesResource probe
probe.method"GET"yesProbe method, currently GET
probe.http_responseHttpCapture / nullyesHTTP response summary, or null when no response was received
probe.http_response.status_codeintegeryesHTTP status code
probe.http_response.content_typestring / nullyesResponse content type, or null
probe.http_response.bodystringyesRedacted response body
probe.http_response.body_truncatedbooleanyesWhether the body was truncated
refreshobjectyesRefresh attempt
refresh.status"succeeded" / "failed" / "connect_error" / "no_refresh_token" / "skipped"yesCurrent status
refresh.http_responseHttpCapture / nullyesHTTP response summary, or null when no response was received
refresh.http_response.status_codeintegeryesHTTP status code
refresh.http_response.content_typestring / nullyesResponse content type, or null
refresh.http_response.bodystringyesRedacted response body
refresh.http_response.body_truncatedbooleanyesWhether the body was truncated

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
VALIDATE_UNSUPPORTED400Validating a static secret; only OAuth secrets support validationvalidation_failurenoneno
RATE_LIMITED429Authorization or validation minute quota exceeded; wait for the next windowrate_limitwait_then_retryyes

OAuth secrets only. Complete authorization and set OAUTH_SECRET_ID to its secret_id before running this example; do not use a static secret.

curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/${OAUTH_SECRET_ID}/validate" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"

Refresh secret

POST /vault/v1/vaults/{vault_id}/secrets/{secret}/refresh

ParameterLocationDescription
vault_idpathID of the vault in your account, returned when the vault is created.
secretpathSecret name, or its vsec_ ID.

Request body

FieldType / enumRequiredDescription
reason"unauthorized"nounauthorized: the resource returned HTTP 401

Response

HTTP 200

application/json

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

Error responses

A missing or invalid API Key returns 401 UNAUTHENTICATED.

CodeHTTPMeaning, trigger and actionkindrecoveryRetryable
VAULT_NOT_FOUND404Vault absent or outside this account; check the vault IDvalidation_failurenoneno
SECRET_NOT_FOUND404Secret absent, including lookup by an invalid name; check name or IDvalidation_failurenoneno
VAULT_INVALID_STATE409Writing to an archived vault or secret; use an active resourcevalidation_failurenoneno
SECRET_KIND_MISMATCH400Refreshing a static secret or another kind mismatch; use an OAuth secretvalidation_failurenoneno
INVALID_PARAMS400Invalid fields, names, hosts, metadata, pagination or return URL; correct the requestvalidation_failurenoneno

OAuth secrets only. Complete authorization and set OAUTH_SECRET_ID to its secret_id before running this example; do not use a static secret.

curl -X POST "https://api.deepraxis.ai/vault/v1/vaults/${VAULT_ID}/secrets/${OAUTH_SECRET_ID}/refresh" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"unauthorized"}'

Secret

FieldType / enumRequiredDescription
idstringyesObject ID
type"vault_secret"yesObject type
vault_idstringyesVault ID
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
kind"static" / "oauth"yesstatic: supplied value; oauth: authorized and refreshed by the platform
allowed_hostsstring[]yes1–16 hosts, public IPv4 addresses or *.example.com (excluding the apex). Rejects IPv6, single-label hosts, localhost, *.internal, platform domains and loopback/link-local/private/CGNAT IPv4; normalized and deduplicated
descriptionstring / nullyesDescription; null clears it on update, omission preserves it
metadataobjectyesUp to 16 caller labels. System keys source and template are reserved and excluded from that limit
status"active" / "refreshing" / "refresh_failed" / "archived"yesCurrent status
oauthSecretOAuthSummary / nullyesOAuth summary; null for static secrets
oauth.expires_atdate-time / nullyesExpiry time, or null
oauth.last_refreshed_atdate-time / nullyesLast refresh time, or null
oauth.next_refresh_atdate-time / nullyesNext scheduled refresh, or null
oauth.scopestring / nullyesGranted scope, or null
oauth.last_errorobject / nullyesLast refresh failure, or null
oauth.last_error.codestringyesStable error code
oauth.last_error.messagestringyesHuman-readable error message
oauth.last_error.atdate-timeyesEvent or error time
versionintegeryesIncrements each time the value changes
last_used_atdate-time / nullyesLast use time, or null
created_atdate-timeyesCreation time
updated_atdate-timeyesLast update time
archived_atdate-time / nullyesArchive time, or null

SecretOAuthSummary

FieldType / enumRequiredDescription
expires_atdate-time / nullyesExpiry time, or null
last_refreshed_atdate-time / nullyesLast refresh time, or null
next_refresh_atdate-time / nullyesNext scheduled refresh, or null
scopestring / nullyesGranted scope, or null
last_errorobject / nullyesLast refresh failure, or null
last_error.codestringyesStable error code
last_error.messagestringyesHuman-readable error message
last_error.atdate-timeyesEvent or error time

ImportLine

FieldType / enumRequiredDescription
namestringyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
valuestringyesWrite-only secret value, at most 16 KiB
allowed_hostsstring[]noNew entries use line hosts or import defaults; replacements change hosts only with explicit per-line allowed_hosts

ImportResult

FieldType / enumRequiredDescription
createdstring[]yesCreated secret names
replacedstring[]yesReplaced secret names
failedobject[]yesFailed import lines
failed[].lineintegeryesFailed line number, starting at 1
failed[].namestring / nullyesSecret name: 1–128 uppercase letters, digits or underscores; starts with a letter or underscore
failed[].code"VAULT_NOT_FOUND" / "SECRET_NOT_FOUND" / "AUTHORIZATION_NOT_FOUND" / "SECRET_CONFLICT" / "VAULT_INVALID_STATE" / "VAULT_LIMIT_EXCEEDED" / "INVALID_PARAMS" / "SECRET_KIND_MISMATCH" / "VALIDATE_UNSUPPORTED" / "SECRET_TOO_LARGE" / "RATE_LIMITED" / "AUTHORIZATION_EXPIRED" / "OAUTH_DISCOVERY_FAILED" / "OAUTH_REGISTRATION_UNSUPPORTED" / "OAUTH_ISSUER_MISMATCH" / "OAUTH_STATE_INVALID" / "OAUTH_EXCHANGE_FAILED" / "NOT_IMPLEMENTED"yesStable error code
failed[].messagestringyesHuman-readable error message

SecretValidation

FieldType / enumRequiredDescription
type"vault_secret_validation"yesObject type
secret_idstringyesAssociated secret ID, or null
vault_idstringyesVault ID
validated_atdate-timeyesValidation time
has_refresh_tokenbooleanyesWhether a refresh token is stored
status"valid" / "invalid" / "unknown"yesCurrent status
probeobjectyesResource probe
probe.method"GET"yesProbe method, currently GET
probe.http_responseHttpCapture / nullyesHTTP response summary, or null when no response was received
probe.http_response.status_codeintegeryesHTTP status code
probe.http_response.content_typestring / nullyesResponse content type, or null
probe.http_response.bodystringyesRedacted response body
probe.http_response.body_truncatedbooleanyesWhether the body was truncated
refreshobjectyesRefresh attempt
refresh.status"succeeded" / "failed" / "connect_error" / "no_refresh_token" / "skipped"yesCurrent status
refresh.http_responseHttpCapture / nullyesHTTP response summary, or null when no response was received
refresh.http_response.status_codeintegeryesHTTP status code
refresh.http_response.content_typestring / nullyesResponse content type, or null
refresh.http_response.bodystringyesRedacted response body
refresh.http_response.body_truncatedbooleanyesWhether the body was truncated

HttpCapture

FieldType / enumRequiredDescription
status_codeintegeryesHTTP status code
content_typestring / nullyesResponse content type, or null
bodystringyesRedacted response body
body_truncatedbooleanyesWhether the body was truncated
Export

On this page