AJV JSON Schema validation node for n8n workflows with support for multiple schemas, formats, and enhanced error messages
npm install @cdmx/n8n-nodes-schema-validator

Advanced JSON Schema validation node for n8n workflows. Validate your data against JSON Schema standards with support for multiple schemas, format validation, and custom error messages.
- ✅ Single & Multiple Schema Validation - Validate against one or multiple schemas per item
- 📧 Format Validation - Built-in support for email, URI, UUID, date, date-time, IPv4, IPv6, and more via ajv-formats
- 💬 Custom Error Messages - Define custom error messages in your schemas via ajv-errors
- 🔀 Dual Output - Valid items go to one output, invalid items go to another
- 🎯 Data Path Extraction - Validate specific parts of your data using JSON paths
- ⚙️ Configurable Options - Control strict mode, all errors collection, and more
1. Go to Settings > Community Nodes in your n8n instance
2. Select Install
3. Enter n8n-nodes-schema-validator in the search field
4. Click Install
For self-hosted n8n instances:
``bash`
npm install n8n-nodes-schema-validator
Then restart your n8n instance.
Validate all incoming items against a single JSON schema:
`json`
{
"type": "object",
"properties": {
"name": { "type": "string", "minLength": 1 },
"email": { "type": "string", "format": "email" },
"age": { "type": "number", "minimum": 0 }
},
"required": ["name", "email"]
}
Validate different parts of your data against different schemas:
1. Set Validation Mode to "Multiple Schemas"
2. Add multiple schema definitions
3. For each schema, specify:
- Schema Name: A descriptive name for error messages
- JSON Schema: The validation schema
- Data Path: Optional path to extract data (e.g., user.profile or items[0])
When using multiple schemas:
- All Must Pass: Item is valid only if ALL schemas pass
- Any Must Pass: Item is valid if ANY schema passes
Thanks to ajv-formats, the following formats are supported:
- email - Email addressesuri
- / url - URIs and URLsuuid
- - UUIDsdate
- - ISO 8601 dates (YYYY-MM-DD)time
- - ISO 8601 timesdate-time
- - ISO 8601 date-timesipv4
- / ipv6 - IP addresseshostname
- - Hostnamesregex
- - Regular expressions
- And more...
Use ajv-errors syntax to define custom messages:
`json`
{
"type": "object",
"properties": {
"email": {
"type": "string",
"format": "email",
"errorMessage": {
"format": "Please provide a valid email address"
}
}
},
"required": ["email"],
"errorMessage": {
"required": {
"email": "Email address is required"
}
}
}
: Human-readable error summary
- _validationErrors (single mode) or _validationResults (multiple mode): Detailed error informationOptions
| Option | Default | Description |
|--------|---------|-------------|
| Enable Formats |
true | Enable ajv-formats for format validation |
| Enable Custom Errors | true | Enable ajv-errors for custom messages |
| Strict Mode | true | Enable strict schema validation |
| All Errors | true | Collect all errors vs. stop at first |
| Include Error Details | true | Include detailed errors in output |Development
`bash
Install dependencies
pnpm installBuild the project
pnpm run buildRun tests
pnpm testRun tests with coverage
pnpm test:coverageLint code
pnpm run lint
``- n8n Community Nodes Documentation
- JSON Schema Documentation
- AJV JSON Schema Validator
- AJV Formats
- AJV Errors
MIT
Contributions are welcome! Please feel free to submit a Pull Request.