This is an n8n community node for Skyflow, a data privacy vault platform. It provides secure tokenization, detokenization, and text deidentification capabilities for sensitive data.
n8n is a workflow automation platform that allows you to connect various services and build powerful integrations.
Skyflow is a data privacy vault that helps you protect sensitive data through tokenization, encryption, and granular access controls.
For n8n users, you can install this node directly from the n8n Community Nodes:
- Go to Settings > Community Nodes
- Select Install
- Enter
n8n-nodes-skyflowin Enter npm package name - Click Install
To install the node manually:
npm install n8n-nodes-skyflowFor local development and testing:
# Clone the repository
git clone https://github.com/SkyflowFoundry/Skyflowforn8n.git
cd Skyflowforn8n
# Install dependencies
npm install
# Build the node
npm run build
# Link the package locally
npm link
# In your n8n installation directory
npm link n8n-nodes-skyflowBefore using this node, you'll need:
- Skyflow Account: Sign up at Skyflow
- Skyflow Vault: Create a vault in the Skyflow Studio
- API Key: Generate an API key with appropriate permissions
- Vault Details: Note your Vault ID and Cluster ID from the vault URL
- In n8n, go to Credentials > New
- Search for and select Skyflow API
- Fill in the required fields:
- API Key: Your Skyflow API key
- Vault ID: The ID of your Skyflow vault
- Cluster ID: The cluster identifier from your vault URL (e.g.,
my-clusterfromhttps://my-cluster.vault.skyflowapis.com) - Environment: Select the appropriate environment (Production, Development, Sandbox, or Stage)
- Log Level: Set logging level (ERROR recommended for production)
- Click Create to save the credentials
- Vault ID: Found in Skyflow Studio under vault settings
- Cluster ID: Extract from your vault URL:
https://{clusterId}.vault.skyflowapis.com - API Key: Generate in Skyflow Studio under API Keys section
Automatically detects and replaces sensitive data in text with tokens using Skyflow's AI-powered entity detection.
Parameters:
- Text (required): The text containing sensitive data to deidentify
- Entities: Types of entities to detect (Credit Card, SSN, Phone Number, Name, Date of Birth, Driver License)
- Leave empty to detect all supported entity types
- Options:
- Token Type: How to format replacement tokens
- Vault Token: Store in vault and return token (recommended)
- Entity Only: Replace with entity type (e.g.,
[SSN]) - Entity Counter: Replace with entity type and counter (e.g.,
[SSN_1])
- Token Type: How to format replacement tokens
Example Input:
My SSN is 123-45-6789 and my card is 4111 1111 1111 1111.
Example Output:
{
"processedText": "My SSN is [SSN_1] and my card is [CREDIT_CARD_1].",
"entities": [
{
"token": "SSN_1",
"value": "123-45-6789",
"entity_type": "SSN",
"location": {...}
},
{
"token": "CREDIT_CARD_1",
"value": "4111 1111 1111 1111",
"entity_type": "CREDIT_CARD",
"location": {...}
}
],
"wordCount": 13
}Converts tokens back to their original values.
Detokenize one token at a time.
Parameters:
- Token (required): The token to detokenize
- Redaction Type: How to redact the returned data
- Plain Text: Return unredacted values
- Masked: Return partially masked values
- Redacted: Return fully redacted values
- Default: Use default redaction settings
Example:
{
"token": "9738-1683-0486-1480",
"redactionType": "PLAIN_TEXT"
}Response:
{
"detokenizedFields": [
{
"token": "9738-1683-0486-1480",
"value": "4111111111111115",
"type": "STRING"
}
]
}Detokenize multiple tokens in a single request (more efficient).
Parameters:
- Tokens (required): JSON array of tokens to detokenize
- Redaction Type: How to redact the returned data
Example:
{
"tokens": ["token1", "token2", "token3"],
"redactionType": "PLAIN_TEXT"
}Response:
{
"detokenizedFields": [
{
"token": "token1",
"value": "value1",
"type": "STRING"
},
{
"token": "token2",
"value": "value2",
"type": "STRING"
},
{
"token": "token3",
"value": "value3",
"type": "STRING"
}
]
}Continue On Error
- When enabled, the operation continues processing all tokens even if some fail
- Failed tokens are included in the
errorsarray in the response - When disabled, the operation stops at the first error
Download URL
- When enabled, generates download URLs for file tokens
- Useful when working with file-type data stored in Skyflow
Example with Errors:
{
"detokenizedFields": [
{
"token": "valid-token",
"value": "value",
"type": "STRING"
}
],
"errors": [
{
"token": "invalid-token",
"error": "Token Not Found"
}
]
}Converts tokens in text back to their original or redacted values.
Parameters:
- Text (required): Text containing tokens to reidentify (e.g., from deidentify operation)
- Redaction Type: How to display the reidentified values
- Plain Text: Return original unredacted values
- Masked: Return masked values (show last 4 characters)
- Redacted: Return fully redacted values
Example Input:
My SSN is [SSN_1] and my card is [CREDIT_CARD_1].
Example Output (Masked):
{
"processedText": "My SSN is ***-**-6789 and my card is ****-****-****-1111."
}Example Output (Plain Text):
{
"processedText": "My SSN is 123-45-6789 and my card is 4111 1111 1111 1111."
}Tokenizes sensitive data and returns secure tokens for safe reference.
Parameters:
- Table Name (required): The vault table where data will be inserted
- Records (required): JSON object or array of objects containing the data
- Single record:
{"card_number": "4111111111111111", "name": "John Doe"} - Multiple records:
[{"field1": "value1"}, {"field2": "value2"}]
- Single record:
- Options:
- Return Tokens (default: true): Whether to return tokens for the inserted data
- Continue On Error (default: false): Continue if some records fail
- Upsert Column: Column name for upsert (update if exists, insert if not)
Example Input:
{
"tableName": "cards",
"records": {
"card_number": "4111111111111111",
"cardholder_name": "John Doe",
"expiry": "12/25"
}
}Example Output:
{
"insertedFields": [
{
"skyflowId": "a8f3ed5d-55eb-4f32-bf7e-2dbf4b9d9097",
"card_number": "5484-7829-1702-9110",
"cardholder_name": "b2308e2a-c1f5-469b-97b7-1f193159399b",
"expiry": "c7f89a1d-33ed-4821-ab12-5e4d8f1a2b3c"
}
]
}Batch Insert Example:
{
"tableName": "users",
"records": [
{"email": "user1@example.com", "ssn": "123-45-6789"},
{"email": "user2@example.com", "ssn": "987-65-4321"}
]
}- Add the Skyflow node to your workflow
- Select Deidentify Text operation
- Enter text containing sensitive data
- Optionally select specific entity types to detect
- Execute the workflow to get tokenized text
- Add the Skyflow node to your workflow
- Select Tokenize operation
- Enter table name (e.g.,
customers) - Enter records as JSON:
{"email": "user@example.com", "ssn": "123-45-6789"} - Enable Return Tokens to get tokens back
- Execute the workflow
- Add the Skyflow node to your workflow
- Select Detokenize operation
- Choose Batch Tokens input mode
- Enter tokens in JSON array format:
["token1", "token2", "token3"] - Select Masked redaction type to show last 4 digits
- Execute the workflow
[Webhook] → [Skyflow: Deidentify Text] → [Store in DB] → [Skyflow: Reidentify Text] → [Send Email]
Use expressions to pass data between nodes:
- Pass processed text:
{{ $json.processedText }} - Pass tokens:
{{ JSON.stringify($json.entities) }}
The node provides detailed error messages for common issues:
- Invalid token format: Validates that tokens are not empty
- Invalid JSON: For batch mode, ensures the input is a valid JSON array
- API errors: Wraps Skyflow API errors with helpful context
- Empty arrays: Validates that at least one token is provided
All errors include the item index for debugging workflows with multiple inputs.
- n8n version: Requires n8n v1.0.0 or later
- Node.js: Requires Node.js v18 or later
- Skyflow SDK: Uses skyflow-node v2.0.2
npm run buildnpm run devnpm run lint
npm run lint:fixnpm run formatIf you encounter issues or have questions:
- Check the Skyflow Documentation
- Open an issue on GitHub
- Contact Skyflow Support at support@skyflow.com
- Deidentify Text: Automatically detect and replace sensitive data in text
- Detokenize: Convert tokens back to values with single and batch modes
- Reidentify Text: Convert tokens in text back with redaction options
- Tokenize: Protect sensitive data and return tokens
- API Key authentication
- Support for multiple redaction types
- Advanced options (Continue On Error, Download URL, Upsert)
- Comprehensive error handling