Skip to main content
If you’re working with Python, the official Infisical Python SDK package is the easiest way to fetch and work with secrets for your application.

Migrating to version 1.0.3 or above

We have recently rolled out our first stable version of the SDK, version 1.0.3 and above. The 1.0.3 version comes with a few key changes that may change how you’re using the SDK.
  1. Removal of rest: The SDK no longer exposes the entire Infisical API. This was necessary as we have moved away from using an OpenAPI generator approach. We aim to add support for more API resources in the near future. If you have any specific requests, please open an issue.
  2. New response types: The 1.0.3 release uses return types that differ from the older versions. The new return types such as BaseSecret, are all exported from the Infisical SDK.
  3. Property renaming: Some properties on the responses have been slightly renamed. An example of this would be that the secret_key property on the get_secret_by_name() method, that has been renamed to secretKey.
With this in mind, you’re ready to upgrade your SDK version to 1.0.3 or above. You can refer to our legacy documentation if need be.

Requirements

Python 3.7+

Installation

Getting started

InfisicalSDKClient parameters

The InfisicalSDKClient takes the following parameters, which are used as a global configuration for the lifetime of the SDK instance.
  • host (str, Optional): The host URL for your Infisical instance. Defaults to https://app.infisical.com.
  • token (str, Optional): Specify an authentication token to use for all requests. If provided, you won’t need to call any of the auth methods. Defaults to None
  • cache_ttl (int, Optional): The SDK has built-in client-side caching for secrets, greatly improving response times. By default, secrets are cached for 1 minute (60 seconds). You can disable caching by setting cache_ttl to None, or adjust the duration in seconds as needed.

Core methods

The SDK methods are organized into the following high-level categories:
  1. auth: Handles authentication methods.
  2. secrets: Manages CRUD operations for secrets.
  3. dynamic_secrets: Manages dynamic secrets and leases.
  4. kms: Perform cryptographic operations with Infisical KMS.
  5. folders: Manages folder-related operations.
  6. agent_vault: Manages Agent Vault sessions and proxies.

auth

The Auth component provides methods for authentication:

Universal auth

AWS auth

OIDC auth

Parameters:
  • identity_id (str): The ID of the OIDC identity configuration in Infisical.
  • jwt (str): The OIDC JWT token obtained from your identity provider.
This authentication method is useful when integrating with OIDC-compliant identity providers like Okta, Auth0, or any service that issues OIDC tokens.

LDAP auth

Parameters:
  • identity_id (str): The ID of the LDAP identity configuration in Infisical.
  • username (str): Your LDAP username.
  • password (str): Your LDAP password.
Please note that this authentication method requires LDAP credentials. Please read more about this authentication method.

Token auth

Parameters:
  • token (str): The access token to authenticate with. This can be a machine identity token or a user access token.

secrets

This sub-class handles operations related to secrets:

List secrets

Parameters:
  • project_id (str): The ID of your project.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to list secrets (e.g., “dev”).
  • secret_path (str): The path to the secrets.
  • expand_secret_references (bool): Whether to expand secret references.
  • view_secret_value (bool): Whether or not to include the secret value in the response. If set to false, the secretValue will be masked with <hidden-by-infisical>. Defaults to true.
  • recursive (bool): Whether to list secrets recursively.
  • include_imports (bool): Whether to include imported secrets.
  • tag_filters (List[str]): Tags to filter secrets.
Note: Exactly one of project_id or project_slug is required. If both are provided, project_id takes precedence. Returns:
  • ListSecretsResponse: The response containing the list of secrets.

Create secret

Parameters:
  • secret_name (str): The name of the secret.
  • project_id (str): The ID of your project.
  • project_slug (str): The slug of your project.
  • secret_path (str): The path to the secret.
  • environment_slug (str): The environment in which to create the secret.
  • secret_value (str): The value of the secret.
  • secret_comment (str, optional): A comment associated with the secret.
  • skip_multiline_encoding (bool, optional): Whether to skip encoding for multiline secrets.
  • secret_reminder_repeat_days (Union[float, int], optional): Number of days after which to repeat secret reminders.
  • secret_reminder_note (str, optional): A note for the secret reminder.
  • secret_metadata (List[Dict[str, Any]], optional): Metadata associated with the secret.
  • tags_ids (List[str], optional): IDs of tags to associate with the secret.
Note: Exactly one of project_id or project_slug is required. If both are provided, project_id takes precedence. Returns:
  • BaseSecret: The response after creating the secret.

Update secret

Parameters:
  • current_secret_name (str): The current name of the secret.
  • project_id (str): The ID of your project.
  • project_slug (str): The slug of your project.
  • secret_path (str): The path to the secret.
  • environment_slug (str): The environment in which to update the secret.
  • secret_value (str, optional): The new value of the secret.
  • secret_comment (str, optional): An updated comment associated with the secret.
  • skip_multiline_encoding (bool, optional): Whether to skip encoding for multiline secrets.
  • secret_reminder_repeat_days (Union[float, int], optional): Updated number of days after which to repeat secret reminders.
  • secret_reminder_note (str, optional): An updated note for the secret reminder.
  • new_secret_name (str, optional): A new name for the secret.
  • secret_metadata (List[Dict[str, Any]], optional): Metadata associated with the secret.
  • tags_ids (List[str], optional): IDs of tags to associate with the secret.
Note: Exactly one of project_id or project_slug is required. If both are provided, project_id takes precedence. Returns:
  • BaseSecret: The response after updating the secret.

Get secret by name

Parameters:
  • secret_name (str): The name of the secret.
  • project_id (str): The ID of your project.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to retrieve the secret.
  • secret_path (str): The path to the secret.
  • expand_secret_references (bool): Whether to expand secret references.
  • view_secret_value (bool): Whether or not to include the secret value in the response. If set to false, the secretValue will be masked with <hidden-by-infisical>. Defaults to true.
  • include_imports (bool): Whether to include imported secrets.
  • version (str, optional): The version of the secret to retrieve. Fetches the latest by default.
Note: Exactly one of project_id or project_slug is required. If both are provided, project_id takes precedence. Returns:
  • BaseSecret: The response containing the secret.

Delete secret by name

Parameters:
  • secret_name (str): The name of the secret to delete.
  • project_id (str): The ID of your project.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to delete the secret.
  • secret_path (str): The path to the secret.
Note: Exactly one of project_id or project_slug is required. If both are provided, project_id takes precedence. Returns:
  • BaseSecret: The response after deleting the secret.

dynamic_secrets

This sub-class handles operations related to dynamic secrets. Dynamic secrets generate credentials on-demand with automatic expiration. For more information, see the Dynamic Secrets documentation.

Create dynamic secret

Parameters:
  • name (str): The name of the dynamic secret.
  • provider_type (Union[DynamicSecretProviders, str]): The provider type (e.g., DynamicSecretProviders.SQL_DATABASE).
  • inputs (Dict[str, Any]): The provider-specific configuration inputs. See the Dynamic Secrets API documentation for provider-specific inputs.
  • default_ttl (str): The default time to live for leases (e.g., “1h”, “30m”).
  • max_ttl (str): The maximum time to live for leases (e.g., “24h”).
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to create the dynamic secret.
  • path (str, optional): The path where the dynamic secret will be created. Defaults to ”/”.
  • metadata (List[Dict[str, str]], optional): Optional list of metadata items with ‘key’ and ‘value’.
Returns:
  • DynamicSecret: The created dynamic secret.

Supported provider types

The DynamicSecretProviders enum includes the following providers:

Get dynamic secret by name

Parameters:
  • name (str): The name of the dynamic secret.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to retrieve the dynamic secret.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
Returns:
  • DynamicSecret: The dynamic secret.

Update dynamic secret

Parameters:
  • name (str): The current name of the dynamic secret.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to update the dynamic secret.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
  • default_ttl (str, optional): The new default time to live for leases.
  • max_ttl (str, optional): The new maximum time to live for leases.
  • new_name (str, optional): The new name for the dynamic secret.
  • inputs (Dict[str, Any], optional): Updated provider-specific configuration inputs.
  • metadata (List[Dict[str, str]], optional): Updated metadata list with ‘key’ and ‘value’ items.
  • username_template (str, optional): The new username template for the dynamic secret.
Returns:
  • DynamicSecret: The updated dynamic secret.

Delete dynamic secret

Parameters:
  • name (str): The name of the dynamic secret to delete.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to delete the dynamic secret.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
  • is_forced (bool, optional): A boolean flag to delete the dynamic secret from Infisical without trying to remove it from the external provider. Defaults to False.
Returns:
  • DynamicSecret: The deleted dynamic secret.

dynamic_secrets.leases

This sub-class handles operations related to dynamic secret leases. A lease represents a set of generated credentials with a specific TTL.

Create lease

Create a lease to generate credentials from a dynamic secret:
Parameters:
  • dynamic_secret_name (str): The name of the dynamic secret to create a lease for.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to create the lease.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
  • ttl (str, optional): The time to live for the lease (e.g., “1h”, “30m”).
Returns:
  • CreateLeaseResponse: Response containing:
    • lease: The lease object with ID, expiration, and metadata.
    • dynamicSecret: The associated dynamic secret.
    • data: The generated credentials. The structure depends on the dynamic secret provider.

Get lease

Parameters:
  • lease_id (str): The ID of the lease to retrieve.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to retrieve the lease.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
Returns:
  • DynamicSecretLease: The lease with dynamicSecret included.

Renew lease

Extend the TTL of an existing lease:
Parameters:
  • lease_id (str): The ID of the lease to renew.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to renew the lease.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
  • ttl (str, optional): The new time to live for the lease.
Returns:
  • DynamicSecretLease: The renewed lease.

Revoke lease

Revoke a lease and its associated credentials:
Parameters:
  • lease_id (str): The ID of the lease to revoke.
  • project_slug (str): The slug of your project.
  • environment_slug (str): The environment in which to revoke the lease.
  • path (str, optional): The path to the dynamic secret. Defaults to ”/”.
  • is_forced (bool, optional): A boolean flag to revoke the lease from Infisical without trying to remove it from the external provider. Defaults to False.
Returns:
  • DynamicSecretLease: The revoked lease.

kms

This sub-class handles KMS related operations:

List KMS keys

Parameters:
  • project_id (str): The ID of your project.
  • offset (int, optional): The offset to paginate from.
  • limit (int, optional): The page size for paginating.
  • order_by (KmsKeysOrderBy, optional): The key property to order the list response by.
  • order_direction (OrderDirection, optional): The direction to order the list response in.
  • search (str, optional): The text value to filter key names by.
Returns:
  • ListKmsKeysResponse: The response containing the list of KMS keys.

Get KMS key by ID

Parameters:
  • key_id (str): The ID of the key to retrieve.
Returns:
  • KmsKey: The specified key.

Get KMS key by name

Parameters:
  • key_name (str): The name of the key to retrieve.
  • project_id (str): The ID of your project.
Returns:
  • KmsKey: The specified key.

Create KMS key

Parameters:
  • name (str): The name of the key (must be slug-friendly).
  • project_id (str): The ID of your project.
  • encryption_algorithm (SymmetricEncryption): The encryption algorithm this key should use.
  • description (str, optional): A description of your key.
Returns:
  • KmsKey: The newly created key.

Update KMS key

Parameters:
  • key_id (str): The ID of the key to be updated.
  • name (str, optional): The updated name of the key (must be slug-friendly).
  • description (str): The updated description of the key.
  • is_disabled (str): The flag to disable operations with this key.
Returns:
  • KmsKey: The updated key.

Delete KMS key

Parameters:
  • key_id (str): The ID of the key to be deleted.
Returns:
  • KmsKey: The deleted key.

Encrypt data with KMS key

Parameters:
  • key_id (str): The ID of the key to encrypt the data with.
  • base64EncodedPlaintext (str): The plaintext data to encrypt (must be base64 encoded).
Returns:
  • str: The encrypted ciphertext.

Decrypt data with KMS key

Parameters:
  • key_id (str): The ID of the key to decrypt the data with.
  • ciphertext (str): The ciphertext returned from the encrypt operation.
Returns:
  • str: The base64 encoded plaintext.

folders

This sub-class handles operations related to folders:
update_folder and delete_folder require infisicalsdk version 1.0.17 or newer.

List folders

Parameters:
  • project_id (str): The ID of your project.
  • environment_slug (str): The environment in which to list folders.
  • path (str): The path to list folders from.
  • recursive (bool, optional): Whether to list folders recursively from the specified path and downwards. Defaults to False.
  • last_secret_modified (datetime, optional): The timestamp used to filter folders with secrets modified after the specified date. Defaults to None.
Returns:
  • ListFoldersResponse: The response containing the list of folders.

Create folder

Parameters:
  • name (str): The name of the folder to create.
  • environment_slug (str): The slug of the environment to create the folder in.
  • project_id (str): The ID of your project to create the folder in.
  • path (str, optional): The path to create the folder in. Defaults to /.
  • description (str, optional): An optional description label for the folder. Defaults to None.
Returns:
  • CreateFolderResponseItem: The response containing the created folder.

Get folder by ID

Parameters:
  • id (str): The ID of the folder to retrieve.
Returns:
  • SingleFolderResponseItem: The response containing the folder details.

Update folder

Parameters:
  • folder_id (str): The ID of the folder to update. Folders can only be updated by ID, so use list_folders to look the ID up if you only know the name.
  • name (str): The new name of the folder. This is required, so pass the folder’s current name to leave it unchanged.
  • project_id (str): The ID of your project.
  • environment_slug (str): The slug of the environment the folder is in.
  • path (str, optional): The parent path the folder is in. Defaults to /.
  • description (str, optional): A new description for the folder. Omitting it leaves the existing description unchanged, so it can’t be used to clear one.
Returns:
  • UpdateFolderResponseItem: The response containing the updated folder.

Delete folder

Parameters:
  • folder_id_or_name (str): The ID or the name of the folder to delete.
  • project_id (str): The ID of your project.
  • environment_slug (str): The slug of the environment the folder is in.
  • path (str, optional): The parent path the folder is in. Defaults to /.
  • force_delete (bool, optional): Whether to delete the folder even when it still contains secrets or subfolders. Defaults to False.
Setting force_delete to True removes every secret and subfolder inside the folder along with it.
Returns:
  • DeleteFolderResponseItem: The response containing the deleted folder. Unlike the other folder responses, it doesn’t include a path field.

agent_vault.sessions

This sub-class manages Agent Vault sessions. A session lets an AI agent use the services in one access bundle until the session expires or someone revokes it. What the client can do with sessions depends on the Agent Vault role of the user or machine identity that the client logs in as:
agent_vault requires infisicalsdk version 1.0.19 or newer.

List sessions

Parameters:
  • scope (Union[AgentVaultSessionScope, str], optional): whose sessions to list, either AgentVaultSessionScope.MINE ("mine") for the identity’s own sessions or AgentVaultSessionScope.ALL ("all") for every session if the identity is an admin (defaults to AgentVaultSessionScope.MINE)
  • statuses (List[Union[AgentVaultSessionStatus, str]], optional): the statuses to include, from AgentVaultSessionStatus.ACTIVE ("active"), AgentVaultSessionStatus.REVOKED ("revoked"), and AgentVaultSessionStatus.EXPIRED ("expired") (defaults to all three)
  • search (str, optional): text to find in each session’s label, owner name, owner email, or access bundle name
  • limit (int, optional): the maximum number of sessions to return, from 1 to 100 (defaults to 20)
  • offset (int, optional): the number of sessions to skip (defaults to 0)
Returns:
  • ListAgentVaultSessionsResponse: the sessions in sessions, and the total number of matching sessions in totalCount

Get session

Parameters:
  • session_id (str): the ID of the session
Returns:
  • AgentVaultSession: the session

Create session

Parameters:
  • access_bundle (str): the name of the access bundle that the agent can use during the session
  • ttl (str, optional): how long the session lasts, as a duration of at least one minute such as 30m, 8h, or 7d, or as never for a session that doesn’t expire (defaults to 7d)
  • label (str, optional): a short description of what the session is for, such as nightly deploy (up to 128 characters, without line breaks, tabs, or invisible characters)
Returns:
  • CreatedAgentVaultSession: the new session, with the session token in token (Infisical returns the token only once)
To pass session.token to the agent, follow the steps in Start the agent with the session token.

Update session label

Add, change, or remove a session’s label, for example to record what the agent is working on. You can also change the label after the session expires or is revoked, unless the user or machine identity that owns the session was deleted.
Parameters:
  • session_id (str): the ID of the session
  • label (Optional[str]): the new label, or None to remove the label (up to 128 characters, without line breaks, tabs, or invisible characters)
Returns:
  • AgentVaultSession: the updated session

Revoke session

Revoke a session when its agent finishes, even if the agent fails. The proxy stops attaching credentials for the session within one poll interval. If the agent can run longer than the client’s access token lasts, log in again before you revoke the session, because the SDK doesn’t renew the access token. A ttl close to how long the agent runs limits how long the session stays active if the revoke fails.
Parameters:
  • session_id (str): the ID of the session
Returns:
  • AgentVaultSession: the revoked session, with accessBundles set to None (call get for the access bundle)

agent_vault.proxies

This sub-class manages Agent Vault proxies. A proxy attaches API credentials to the requests that agents send through it. To use any method in this section except list, the client must log in as a user or machine identity with the Admin role in Agent Vault.
agent_vault requires infisicalsdk version 1.0.19 or newer.

List proxies

Parameters:
  • search (str, optional): text to find in proxy names
  • order_by (str, optional): what to sort the proxies by, name or createdAt (defaults to createdAt)
  • order_direction (str, optional): the direction to sort in, asc or desc (defaults to desc)
  • limit (int, optional): the maximum number of proxies to return, from 1 to 100 (defaults to 20)
  • offset (int, optional): the number of proxies to skip (defaults to 0)
Returns:
  • ListAgentVaultProxiesResponse: the proxies in proxies, and the total number of matching proxies in totalCount
If the client logs in as a member, each proxy’s trafficPolicy, allowedHosts, pollInterval, and createdAt fields are None.

Create proxy

Parameters:
  • name (str): the name of the proxy, in lowercase letters, numbers, and hyphens (up to 64 characters)
  • traffic_policy (Union[AgentVaultTrafficPolicy, str], optional): the proxy’s traffic policy, either AgentVaultTrafficPolicy.ANY_HOST ("any-host") to forward requests to any host or AgentVaultTrafficPolicy.BUNDLE_HOSTS ("bundle-hosts") to refuse requests to hosts that no service in the session’s access bundle covers (defaults to AgentVaultTrafficPolicy.ANY_HOST)
  • allowed_hosts (Union[List[str], str], optional): hosts that agents can reach under AgentVaultTrafficPolicy.BUNDLE_HOSTS even if no service covers them, as a list or a comma-separated string (see Exceptions)
  • poll_interval (int, optional): how often, in seconds, the proxy checks its sessions and settings with Infisical, from 10 to 300 (defaults to 60)
Returns:
  • AgentVaultProxyWithTokenResponse: the proxy in proxy, and its proxy token in proxyToken (Infisical returns the token only once)
To start the proxy with the proxy token, run one of the commands in Create a proxy and start it.

Update proxy

The proxy’s name and settings that you don’t pass stay as they are. If the proxy is running, it applies the changes within one poll interval.
Parameters:
  • proxy_id (str): the ID of the proxy
  • name (str, optional): the new name of the proxy
  • traffic_policy (Union[AgentVaultTrafficPolicy, str], optional): the new traffic policy
  • allowed_hosts (Union[List[str], str], optional): the new exceptions, which replace the current ones
  • poll_interval (int, optional): the new poll interval in seconds, from 10 to 300
  • clear_allowed_hosts (bool, optional): set to True to remove every exception (raises a ValueError if you also pass allowed_hosts)
Returns:
  • AgentVaultProxy: the updated proxy

Delete proxy

Parameters:
  • proxy_id (str): the ID of the proxy
You can’t undo deleting a proxy. To stop a proxy temporarily, revoke its access instead.
Returns:
  • AgentVaultProxy: the deleted proxy, with values only in id and name

Rotate proxy token

Issue a new proxy token if the current one leaked, or to restore a proxy whose access you revoked. The old token stops working right away. To restart the proxy and its agents, follow the steps in Rotate a proxy’s token.
Parameters:
  • proxy_id (str): the ID of the proxy
Returns:
  • AgentVaultProxyWithTokenResponse: the proxy in proxy, and the new proxy token in proxyToken (Infisical returns the token only once)

Revoke proxy

Revoke a proxy’s access if you think a machine that runs the proxy is compromised. The proxy stops attaching credentials to requests until you rotate its token.
Parameters:
  • proxy_id (str): the ID of the proxy
Returns:
  • AgentVaultProxy: the revoked proxy