Description
@tadnt2003/n8n-nodes-infisical
An n8n community node for integrating Infisical — the open-source secrets management platform — into your n8n workflows.
> Forked from kennis-ai/n8n-nodes-infisical.
> Credit and thanks to the original author at Kennis AI for the initial implementation.
n8n is a fair-code licensed workflow automation platform.
Installation
Credentials
Operations
Compatibility
Resources
—
Installation
Follow the community nodes installation guide in the n8n documentation.
Package name: @tadnt2003/n8n-nodes-infisical
—
Credentials
The node supports two authentication methods. Universal Auth is strongly recommended — Service Tokens are deprecated by Infisical.
Universal Auth (Machine Identity) — Recommended
Universal Auth uses a Machine Identity’s Client ID and Client Secret to obtain a short-lived access token automatically before each workflow execution.
1. Log in to your Infisical account (Cloud or self-hosted)
2. Go to Organization Settings → Access Control → Machine Identities
3. Create a new Machine Identity
4. Under the identity, add a Universal Auth client secret
5. Assign the identity to your project with appropriate roles
6. Copy the Client ID and Client Secret
Service Token (Legacy)
Service Tokens are deprecated by Infisical and may be removed in future versions. Use Universal Auth for new integrations.
1. Log in to your Infisical account
2. Go to Project Settings → Service Tokens
3. Create a new Service Token with the required permissions
4. Copy the token
> For self-hosted Infisical, set API URL to your instance (e.g., https://infisical.example.com/api).
—
Operations
Secret
All Secret operations require: Project ID, Environment, Secret Path (default: /).
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Get | Fetch a single secret by key | GET | /v4/secrets/{key} |
| Get Many | List all secrets in a path | GET | /v4/secrets |
| Create | Create a single secret | POST | /v4/secrets/{key} |
| Create Many | Create multiple secrets in one request | POST | /v4/secrets/batch |
| Update | Update a single secret | PATCH | /v4/secrets/{key} |
| Update Many | Update multiple secrets in one request | PATCH | /v4/secrets/batch |
| Delete | Delete a single secret by key | DELETE | /v4/secrets/{key} |
| Delete Many | Delete multiple secrets in one request | DELETE | /v4/secrets/batch |
#### Get
Required: Secret Key
#### Get Many
No extra required fields. Returns each secret as a separate output item.
#### Create
Required: Secret Key, Secret Value
Additional Fields (optional):
| Field | Description |
| — | — |
| Secret Comment | Attach a comment to the secret |
| Skip Multiline Encoding | Disable multiline encoding for the value |
| Type | shared (default) or personal |
Secret Metadata (optional): Add one or more key/value metadata tags to attach to the secret.
#### Create Many
Add secrets using the repeatable Secrets list. Each entry requires Secret Key and Secret Value.
Per-secret optional fields:
| Field | Description |
| — | — |
| Secret Comment | Attach a comment to this secret |
| Skip Multiline Encoding | Disable multiline encoding for this secret’s value |
| Secret Metadata | Key/value metadata tags for this secret |
Additional Fields (optional):
| Field | Description |
| — | — |
| Secret Path Override | Use a different path than the top-level Secret Path for this batch |
Returns each created secret as a separate output item. If a secret protection policy is active, returns an approval object instead.
#### Update
Required: Secret Key (identifies the secret to update)
All update values are optional — set only what needs to change.
Additional Fields (optional):
| Field | Description |
| — | — |
| Secret Value | The new value |
| New Secret Name | Rename the secret to a new key |
| Secret Comment | Update the attached comment |
| Type | shared or personal |
| Skip Multiline Encoding | Disable multiline encoding for the value |
Secret Metadata (optional): Add one or more key/value metadata tags to attach to the secret.
#### Update Many
Add secrets using the repeatable Secrets list. Each entry requires Secret Key (the current name).
Per-secret optional fields:
| Field | Description |
| — | — |
| Secret Value | The new value (leave blank to keep existing) |
| New Secret Name | Rename this secret |
| Secret Comment | Update the comment for this secret |
| Skip Multiline Encoding | Disable multiline encoding for this secret’s value |
| Secret Metadata | Key/value metadata tags for this secret |
Additional Fields (optional):
| Field | Description |
| — | — |
| Mode | failOnNotFound (default) — error if secret missing; upsert — create if missing; ignore — skip missing secrets |
| Secret Path Override | Use a different path than the top-level Secret Path for this batch |
Returns each updated secret as a separate output item. If a secret protection policy is active, returns an approval object instead.
#### Delete
Required: Secret Key
#### Delete Many
Add secrets using the repeatable Secrets list. Each entry requires Secret Key and Type (shared or personal).
Additional Fields (optional):
| Field | Description |
| — | — |
| Secret Path Override | Use a different path than the top-level Secret Path for this batch |
—
Environment
All Environment operations require: Project ID.
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Create | Create a new environment in a project | POST | /v1/projects/{projectId}/environments |
| Get | Fetch an environment by its ID | GET | /v1/projects/{projectId}/environments/{id} |
| Get by Slug | Fetch an environment by its slug¹ | GET | /v1/projects/{projectId}/environments/slug/{envSlug} |
| Update | Update an environment by ID | PATCH | /v1/projects/{projectId}/environments/{id} |
| Delete | Delete an environment by ID | DELETE | /v1/projects/{projectId}/environments/{id} |
| Restore | Restore a soft-deleted environment by ID¹ | POST | /v1/projects/{projectId}/environments/{id}/restore |
> ¹ Get by Slug and Restore (plus the Hard Delete toggle’s soft-delete behavior) rely on newer Infisical API features. Older self-hosted instances only expose get-by-ID and treat every delete as permanent; on those instances these operations return an error. Use Get (by ID) if Get by Slug is unavailable.
#### Create Environment
Required: Project ID, Environment Name (1–255 characters), Environment Slug (1–64 characters).
Additional Fields (optional):
| Field | Description |
| — | — |
| Position | Display position; the lowest number is shown first |
#### Get Environment
Required: Project ID, Environment ID
#### Get Environment by Slug
Required: Project ID, Environment Slug. Requires a newer Infisical version (see note above).
#### Update Environment
Required: Project ID, Environment ID
Update Fields (optional):
| Field | Description |
| — | — |
| Name | The new display name (1–255 characters) |
| Slug | The new slug (1–64 characters) |
| Position | The new display position; the lowest number is shown first |
#### Delete Environment
Required: Project ID, Environment ID
Additional Fields (optional):
| Field | Description |
| — | — |
| Hard Delete | Permanently delete the environment. If disabled, it is soft-deleted and can be restored. |
#### Restore Environment
Required: Project ID, Environment ID
Restores a previously soft-deleted environment.
—
Project
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Create | Create a new project | POST | /v1/projects |
| Get | Fetch a project by ID | GET | /v1/projects/{id} |
| Get by Slug | Fetch a project by slug | GET | /v1/projects/slug/{slug} |
| Get Many | List all accessible projects | GET | /v1/projects |
| Get Secret Snapshots | List secret snapshots for a project environment | GET | /v1/projects/{id}/secret-snapshots |
| Get User Memberships | List all user memberships in a project | GET | /v1/projects/{id}/memberships |
| Get User by Username | Fetch a project member by username | POST | /v1/projects/{id}/memberships/details |
| Update | Update a project by ID | PATCH | /v1/projects/{id} |
| Delete | Delete a project by ID | DELETE | /v1/projects/{id} |
#### Create Project
Required: Project Name (max 64 characters).
Additional Fields (optional):
| Field | Description |
| — | — |
| Description | An optional description for the project (max 1024 characters) |
| Slug | A URL-friendly slug for the project (5–64 characters) |
| KMS Key ID | The ID of the KMS key to use for encryption |
| Template | The name of the project template to apply (default: default) |
| Type | Project type: Secret Manager (default), Cert Manager, KMS, SSH, Secret Scanning, PAM, or AI |
| Create Default Environments | Create the default dev, staging, and prod environments (default: on) |
| Delete Protection | Prevent the project from being deleted (default: off) |
#### Get Project
Required: Project ID
#### Get by Slug
Required: Project Slug
#### Get Many Projects
No extra required fields. Returns each project as a separate output item.
#### Get Secret Snapshots
Required: Project ID, Environment
Additional Fields (optional):
| Field | Description |
| — | — |
| Secret Path | Filter snapshots by path (default: /) |
| Offset | Number of results to skip (for pagination) |
| Limit | Maximum number of results to return |
Returns each snapshot as a separate output item.
#### Get User Memberships
Required: Project ID
Returns each membership as a separate output item.
#### Get User by Username
Required: Project ID, Username
#### Update Project
Required: Project ID
Update Fields (optional):
| Field | Description |
| — | — |
| Name | A new name for the project (max 64 characters) |
| Description | A new description for the project (max 1024 characters) |
| Slug | A new slug (max 64 characters, unique within the organization) |
| Auto Capitalization | Enable auto-capitalization of secret keys |
| Delete Protection | Prevent the project from being deleted |
| Secret Sharing | Allow secret sharing in the project |
| PIT Version Limit | Number of point-in-time secret versions to retain (1–100) |
#### Delete Project
Required: Project ID
> Warning: Deleting a project is irreversible and removes all associated data.
—
Folder
All Folder operations except Get Folder by ID require: Project ID, Environment, Folder Path (default: /).
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Get Folder by ID | Fetch a folder by its ID | GET | /v2/folders/{id} |
| List Folders | List all folders at a path | GET | /v2/folders |
| Create | Create a new folder | POST | /v2/folders |
| Update | Rename or update a folder | PATCH | /v2/folders/{id} |
| Delete | Delete a folder | DELETE | /v2/folders/{id} |
#### Get Folder by ID
Required: Folder ID
#### List Folders
Required: Project ID, Environment, Folder Path
Additional Fields (optional):
| Field | Description |
| — | — |
| Recursive | Return all nested subfolders as well |
| Last Secret Modified | Filter folders by last secret modification time |
Returns each folder as a separate output item.
#### Create Folder
Required: Project ID, Environment, Folder Path (parent path), Folder Name
Additional Fields (optional):
| Field | Description |
| — | — |
| Description | A description for the folder |
#### Update Folder
Required: Project ID, Environment, Folder Path, Folder ID, Folder Name (new name)
Additional Fields (optional):
| Field | Description |
| — | — |
| Description | A description for the folder |
#### Delete Folder
Required: Project ID, Environment, Folder Path, Folder ID or Name
Additional Fields (optional):
| Field | Description |
| — | — |
| Force Delete | Delete the folder even if it contains secrets or subfolders |
—
Secret Import
A secret import links secrets from a source environment/path into a destination environment/path. All Secret Import operations require: Project ID, Environment (destination), Secret Path (destination, default: /).
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Create | Create a secret import | POST | /v2/secret-imports |
| List | List secret imports at a path | GET | /v2/secret-imports |
| Update | Update a secret import | PATCH | /v2/secret-imports/{id} |
| Delete | Delete a secret import | DELETE | /v2/secret-imports/{id} |
#### Create Secret Import
Required: Project ID, Environment, Import From Environment (source), Import From Path (source).
Additional Fields (optional):
| Field | Description |
| — | — |
| Source Project ID | Import from a different project (defaults to the destination project) |
| Is Replication | Automatically sync new secrets from the source into the destination |
#### List Secret Imports
Required: Project ID, Environment, Secret Path. Returns each import as a separate output item.
#### Update Secret Import
Required: Project ID, Environment, Secret Import ID.
Update Fields (optional):
| Field | Description |
| — | — |
| Import From Environment | The new source environment slug |
| Import From Path | The new source path |
| Position | Display position; the lowest number is shown first |
#### Delete Secret Import
Required: Project ID, Environment, Secret Import ID.
—
Secret Tag
Tags are project-scoped labels that can be attached to secrets. All Secret Tag operations require: Project ID.
> Note: Infisical’s tag endpoints are workspace-scoped (/v1/workspace/{projectId}/tags) — this is the legacy path segment (workspace == project) and is the only documented tags API. It remains functional.
| Operation | Description | Method | API endpoint |
| — | — | — | — |
| Create | Create a tag | POST | /v1/workspace/{projectId}/tags |
| Get | Fetch a tag by ID | GET | /v1/workspace/{projectId}/tags/{tagId} |
| Get by Slug | Fetch a tag by slug | GET | /v1/workspace/{projectId}/tags/slug/{tagSlug} |
| List | List all tags in a project | GET | /v1/workspace/{projectId}/tags |
| Update | Update a tag by ID | PATCH | /v1/workspace/{projectId}/tags/{tagId} |
| Delete | Delete a tag by ID | DELETE | /v1/workspace/{projectId}/tags/{tagId} |
#### Create Tag
Required: Project ID, Tag Slug (1–64 characters), Tag Color (hex code, e.g. #bec2c8).
#### Get Tag
Required: Project ID, Tag ID.
#### Get Tag by Slug
Required: Project ID, Tag Slug.
#### List Tags
Required: Project ID. Returns each tag as a separate output item.
#### Update Tag
Required: Project ID, Tag ID, Tag Slug, Tag Color.
#### Delete Tag
Required: Project ID, Tag ID.
—
InfisicalSync
The InfisicalSync node provides bidirectional sync between n8n credentials and Infisical secrets. It requires an InfisicalApi credential (to authenticate to Infisical) and optionally an n8nApi credential (to read and write n8n credentials via the REST API).
Sync Operations
| Operation | Direction | Description |
| — | — | — |
| Sync to Infisical | n8n → Infisical | Push an n8n credential as a folder of secrets in Infisical. Each field becomes a secret; a n8ncredentialtype metadata tag is attached to every secret for auto-discovery. Supports Form mode (select credential type from a dropdown and fill individual fields) and JSON mode (paste any credential type as a raw JSON object). When an n8nApi credential is configured, the input is validated against the n8n schema before any Infisical write occurs. |
| Sync from Infisical | Infisical → n8n | Pull all secrets from a named Infisical folder and update an existing n8n credential by ID. |
| Auto Sync from Infisical | Infisical → n8n | Discover all subfolders under a root Infisical path, read the n8ncredentialtype metadata tag from each folder’s secrets, then create or update the matching n8n credentials automatically. Uses the n8n REST API and validates credential data against each type’s JSON Schema before saving. |
Both Infisical → n8n operations expose an If Credential Missing option for when the target n8n credential can’t be found (deleted since the last sync, or — for Auto Sync — never created):
- Create New Credential (default) — recreate it using the
n8ncredentialtypemetadata tag stored on the folder’s secrets. - Skip — leave n8n untouched and report the item as skipped instead of creating or erroring.
- Create Only (default) — create OAuth credentials that don’t exist yet, but never update existing ones, so a connected credential’s token is never overwritten. You still authorize each newly created OAuth credential once in n8n.
- Skip — never create or update OAuth credentials; report them as skipped for manual handling.
- Update All — treat OAuth credentials like any other. ⚠️ Under Full Replace update strategy, updating an already-connected OAuth credential clears its saved access token and requires re-authorization. Under Partial Merge (default), the token is preserved.
- Partial Merge (default) — sets
isPartialData: trueso n8n merges the payload into the existing credential. Fields n8n manages but Infisical does not — notably OAuth access tokens (oauthTokenData) — are preserved instead of wiped. Requires a recent n8n version that supports partial credential updates. - Full Replace — overwrites the entire credential data object. Use for older n8n versions that don’t support partial updates. ⚠️ Wipes fields not included in the sync, including OAuth access tokens (the credential must be re-authorized).
- All operations use Infisical API v4 for single-secret endpoints (
/api/v4/secrets/…) and batch secret endpoints (/api/v4/secrets/batch). - Project operations use Infisical API v1 (
/api/v1/projects/…). - Folder operations use Infisical API v2 (
/api/v2/folders/…). - When a secret protection policy is active on the project, create/update/delete endpoints return an approval object (
{ approval: { id, status, … } }) instead of the secret directly. - n8n Community Nodes documentation
- Infisical documentation
- Infisical Universal Auth (Machine Identities)
- Infisical API reference
- Original repository — kennis-ai/n8n-nodes-infisical
#### OAuth Credential Handling (Auto Sync only)
OAuth1/OAuth2 credentials obtain their access token through an interactive browser consent, stored by n8n in an oauthTokenData field that is not synced. Because updating a credential replaces its stored data, blindly re-syncing an already-connected OAuth credential would wipe its token and force re-authorization. Auto Sync from Infisical therefore exposes an OAuth Credential Handling option:
Non-OAuth credentials are unaffected by this option and always create/update per If Credential Missing.
#### Update Strategy (Sync from / Auto Sync)
Controls how existing n8n credentials are updated when syncing Infisical → n8n:
Both strategies send a complete, schema-valid payload (n8n validates data against the full credential schema before applying it, regardless of the flag). The difference is what happens to fields the sync doesn’t track:
Supported Credential Types (Form Mode)
Form mode supports 75 credential types. JSON mode accepts any type registered in n8n.
#### AI / LLM
anthropicApi, openAiApi, groqApi, cohereApi, huggingFaceApi, mistralCloudApi, googlePalmApi
#### Productivity / Project Management / SaaS
jiraSoftwareCloudApi, airtableTokenApi, notionApi, stripeApi, hubspotAppToken, sendGridApi
#### Messaging / Social
discordBotApi, discordWebhookApi, slackApi, telegramApi, twilioApi, mattermostApi, matrixApi, rocketchatApi, whatsAppApi, facebookGraphApi, pushoverApi
#### Messaging / Social (OAuth2)
slackOAuth2Api, microsoftTeamsOAuth2Api, twitterOAuth2Api, twitterOAuth1Api, linkedInOAuth2Api, discordOAuth2Api
> Note: OAuth2 credentials sync only the app-registration fields (clientId/clientSecret and service-specific config). The oauthTokenData blob from the browser consent flow is not synced — a pulled credential must be re-authorised (one “Connect” click) in the target n8n.
#### SaaS (OAuth2)
salesforceOAuth2Api, hubspotOAuth2Api, dropboxOAuth2Api, spotifyOAuth2Api
> Note: Same pattern as the Messaging/Social OAuth2 group above (clientId/clientSecret only, no oauthTokenData). salesforceOAuth2Api additionally syncs environment (production/sandbox); dropboxOAuth2Api additionally syncs accessType (app folder/full Dropbox). hubspotOAuth2Api and spotifyOAuth2Api have no extra user-editable fields beyond the standard OAuth2 app registration.
#### Source Control
githubApi, githubOAuth2Api, gitlabApi, gitlabOAuth2Api, bitbucketApi, bitbucketAccessTokenApi
googleApi, googleOAuth2Api, googleSheetsOAuth2Api, googleDriveOAuth2Api, googleDocsOAuth2Api
#### Databases
mySql, postgres, mongoDb, microsoftSql, redis, crateDb, questDb, timescaleDb, elasticsearchApi, supabaseApi, nocoDb, snowflake
> Note: crateDb/questDb/timescaleDb are Postgres wire-compatible and share its host/database/user/password/port/ssl shape. snowflake supports both password and key-pair authentication via its authentication field.
#### SSH
sshPassword, sshPrivateKey
> Note: These are the standalone SSH credential types — distinct from the SSH-tunnel sub-fields already synced inside mySql/postgres for database connections routed through an SSH tunnel.
smtp, imap
> Note: smtp has a conditional disableStartTls field that only applies when secure: false. Neither type has any top-level required field in the live schema.
#### Cloud / Infrastructure
aws, awsAssumeRole
> Note: aws and awsAssumeRole share the same region and custom-endpoint fields (7 VPC endpoint overrides gated by customEndpoints). aws supports temporary STS credentials via temporaryCredentials; awsAssumeRole assumes an IAM role via roleArn/externalId and can source its base credentials from n8n’s own system credentials (useSystemCredentialsForRole) instead of static keys.
#### Infrastructure
n8nApi, infisicalApi
#### Generic HTTP Auth
httpBearerAuth, httpBasicAuth, httpDigestAuth, httpHeaderAuth, httpQueryAuth, httpCustomAuth, httpSslAuth, oAuth1Api, oAuth2Api, jwtAuth
> Note: httpMultipleHeadersAuth is not supported in form mode because its headers field is a fixedCollection that cannot be serialised to flat Infisical key-value secrets. Use JSON mode for that type.
—
API behaviour notes
—
Compatibility
| Component | Version |
| — | — |
| n8n | v2.21.5 |
| Infisical | Cloud and Community Edition |
| Infisical API | v4 |
| n8n Nodes API | v1 |
—
Resources
—