Reference
View as MarkdownSecret managers API
5 operations. Every call needs a session cookie or an Authorization: Bearer nct_… token unless marked Public. Conventions, errors and scopes
/secret-managersList the team's external secret manager integrations
Variables reference a secret as ${{vault:<name>/<path>#<key>}} or, for Doppler, ${{doppler:<name>/<project>/<config>#<key>}}. The value is fetched when a deploy sends its command and is never stored. Credentials are never returned (secretSet only). scope and grants say which projects and environments may reference the integration.
Response 200 · OK · application/json
- SecretManager[] | nullrequired
401Unauthorized403Forbidden500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/secret-managersAdd a secret manager integration
HashiCorp Vault / OpenBao: KV v2 with a token or AppRole. Infisical: a machine identity (universal auth). Doppler: a service token (bound to one config) or a personal / service account token. Nothing contacts the manager until the test or the first deploy that references it. Admin scope.
Request body · application/json · required
- addressstringVault or OpenBao address, e.g. https://vault.example.com:8200
- approleMountstringAppRole auth mount (default approle)
- authMethodenum: token | approletoken (default) or approle
- caCertstringPEM certificate(s) to trust for a private CA (public material)
- clientIdstringMachine identity client id (universal auth)
- defaultConfigstringDoppler config used by references that name none (with defaultProject)
- defaultProjectstringDoppler project used by references that name none, like doppler:<name>#KEY. Set with defaultConfig, or leave both empty (a service token is bound to one config)
- ScopeGrant[] | nullWith scope selected: the projects (or single environments) allowed to reference the integration. At least one.
- kindenum: vault | infisical | dopplerrequiredvault covers HashiCorp Vault and OpenBao (KV v2); doppler is Doppler (service token, or a personal / service account token with a project and config)
- mountstringKV v2 mount path (default secret)
- namestringrequiredLowercase letters, digits and dashes; it appears in references as vault:<name>/… or doppler:<name>/…
- namespacestringVault Enterprise / OpenBao namespace (X-Vault-Namespace)
- organizationSlugstringOptional organization slug to scope the login to
- projectIdstringInfisical project id
- roleIdstringAppRole role id
- scopeenum: team | selectedteam (default on create): every project may reference the integration. selected: only the projects and environments in grants. Omit on update to keep the stored scope.
- secretstringWrite-only: the Vault token (token auth), the AppRole secret id, the Infisical client secret or the Doppler token. Omit on update to keep the stored one.
- siteUrlstringInfisical URL (default https://us.infisical.com) or Doppler API URL (default https://api.doppler.com)
Response 201 · Created · application/json
- SecretManagerConfigrequired
- createdAtstring (date-time)required
- examplestringrequiredA reference in this integration's syntax
- ScopeGrant[] | nullrequiredWith scope selected: the projects and environments that may reference the integration
- idstringrequired
- kindenum: vault | infisical | dopplerrequired
- SecretManagerLastTestrequired
- namestringrequiredUsed in references: ${{vault:<name>/<path>#<key>}} or ${{doppler:<name>/<project>/<config>#<key>}}
- scopeenum: team | selectedrequired
- secretSetbooleanrequired
- updatedAtstring (date-time)required
401Unauthorized403Forbidden404Not Found409Conflict422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/secret-managers/{id}Update a secret manager integration
The name and kind are fixed. Changing the address, auth method or identity requires the credential again. Omitting scope keeps the stored scope and grants. Admin scope.
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body · application/json · required
- addressstringVault or OpenBao address, e.g. https://vault.example.com:8200
- approleMountstringAppRole auth mount (default approle)
- authMethodenum: token | approletoken (default) or approle
- caCertstringPEM certificate(s) to trust for a private CA (public material)
- clientIdstringMachine identity client id (universal auth)
- defaultConfigstringDoppler config used by references that name none (with defaultProject)
- defaultProjectstringDoppler project used by references that name none, like doppler:<name>#KEY. Set with defaultConfig, or leave both empty (a service token is bound to one config)
- ScopeGrant[] | nullWith scope selected: the projects (or single environments) allowed to reference the integration. At least one.
- mountstringKV v2 mount path (default secret)
- namespacestringVault Enterprise / OpenBao namespace (X-Vault-Namespace)
- organizationSlugstringOptional organization slug to scope the login to
- projectIdstringInfisical project id
- roleIdstringAppRole role id
- scopeenum: team | selectedteam (default on create): every project may reference the integration. selected: only the projects and environments in grants. Omit on update to keep the stored scope.
- secretstringWrite-only: the Vault token (token auth), the AppRole secret id, the Infisical client secret or the Doppler token. Omit on update to keep the stored one.
- siteUrlstringInfisical URL (default https://us.infisical.com) or Doppler API URL (default https://api.doppler.com)
Response 200 · OK · application/json
- SecretManagerConfigrequired
- createdAtstring (date-time)required
- examplestringrequiredA reference in this integration's syntax
- ScopeGrant[] | nullrequiredWith scope selected: the projects and environments that may reference the integration
- idstringrequired
- kindenum: vault | infisical | dopplerrequired
- SecretManagerLastTestrequired
- namestringrequiredUsed in references: ${{vault:<name>/<path>#<key>}} or ${{doppler:<name>/<project>/<config>#<key>}}
- scopeenum: team | selectedrequired
- secretSetbooleanrequired
- updatedAtstring (date-time)required
401Unauthorized403Forbidden404Not Found422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/secret-managers/{id}Remove a secret manager integration
Refused with 409 integration_in_use while a variable references it.
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Response 204 · No Content
No body.
401Unauthorized403Forbidden404Not Found409Conflictintegration_in_use422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.
/secret-managers/{id}/testTest a secret manager integration
Signs in and, when path and key are given, reads that secret. The value is discarded and never returned.
| Parameter | In | Type | Description |
|---|---|---|---|
idrequired | path | string |
Request body · application/json · required
- keystringOptional field or secret name to read
- pathstringOptional secret path to read (without the integration name); for Doppler the project and config, like backend/prd, or empty for the integration's defaults
Response 200 · OK · application/json
- messagestringrequired
- okbooleanrequired
- readbooleanrequired
401Unauthorized403Forbidden404Not Found422Unprocessable Entity500Internal Server Error
Errors are RFC 9457 application/problem+json with a stable code field.