The validation node checks data against configurable criteria before passing it to downstream nodes. Use it to enforce data quality, ensure required fields are present, verify formats, or run custom validation logic. Five validation modes are available, from simple field rules to AI-powered checks.Documentation Index
Fetch the complete documentation index at: https://docs.docpipe.ai/llms.txt
Use this file to discover all available pages before exploring further.
When to use validation
- You want to catch bad extractions before delivery: missing required fields, malformed totals, wrong currency.
- You want to gate runs that should go to review when something looks off. Pair validation
Warnwith a downstream review node. - You need to enforce a strict contract with an external system. Use Schema mode with a JSON Schema document.
- You want a programmable check (regex, cross-field math). Use Script mode for deterministic logic, AI mode when the check is genuinely judgment-based.
- Skip validation when the criteria are simple presence checks already covered by the schema’s
requiredfield on extract.
Failure actions
Every validation mode uses a failure action to control what happens when validation errors are found:| Action | Behavior |
|---|---|
| Fail | The step fails and the pipeline stops. Errors are reported in the run detail. |
| Warn | The step succeeds and the pipeline continues. Validation errors are converted to warnings. |
Modes
Rules
Define field-level validation rules using a visual rule editor. Each rule specifies a field path (supports dot notation and array indexing, e.g.items[0].name), an operator, and an optional value. You can also set a custom error message per rule.
Operators
| Operator | Group | Description | Value required |
|---|---|---|---|
required | Presence | Field must exist | No |
not_empty | Presence | Field must not be empty or null | No |
equals | Comparison | Field must equal the value | Yes |
not_equals | Comparison | Field must not equal the value | Yes |
gt | Comparison | Field must be greater than the value | Yes |
gte | Comparison | Field must be greater than or equal to the value | Yes |
lt | Comparison | Field must be less than the value | Yes |
lte | Comparison | Field must be less than or equal to the value | Yes |
contains | String | Field must contain the substring | Yes |
not_contains | String | Field must not contain the substring | Yes |
starts_with | String | Field must start with the value | Yes |
ends_with | String | Field must end with the value | Yes |
matches_regex | String | Field must match the regular expression | Yes |
is_email | Format | Field must be a valid email address | No |
is_number | Format | Field must be a numeric value | No |
is_date | Format | Field must be a valid date | No |
is_url | Format | Field must be a valid URL | No |
in_list | List | Field must be one of the listed values | Yes |
not_in_list | List | Field must not be one of the listed values | Yes |
length_min | Length | Field length must be at least the value | Yes |
length_max | Length | Field length must be at most the value | Yes |
length_between | Length | Field length must be between two values | Yes (two values) |
Schema
Validate data against a JSON Schema document. Paste or write your schema in the editor and the node validates the incoming data against it. Useful when you need to enforce a strict contract on the data shape.Endpoint
Call an external HTTP endpoint to validate data. The node sends the data to your URL and interprets the response to determine pass or fail.| Field | Type | Required | Description |
|---|---|---|---|
| URL | string | Yes | The endpoint URL. Supports template substitution. |
| Method | select | Yes | HTTP method (GET, POST, PUT, etc.) |
| Headers | key-value | No | Custom request headers |
| Body | string | No | Request body template |
| Timeout | number | No | Request timeout in seconds (1–120, default 30) |
| Response mapping | object | No | Dot-path to valid and errors fields in the response JSON |
valid or isValid (boolean) and errors (string array) at the root of the response body. Use response mapping to point to different paths if your endpoint returns a different shape.
Transient errors (HTTP 429, 502, 503, 504) are retried automatically.
Script
Write JavaScript validation logic that runs in a sandboxed runtime. The incoming data is available as thedata variable.
Runtime limits:
| Limit | Value |
|---|---|
| Execution timeout | 5 seconds |
| Max statements | 10,000 |
| Memory | 16 MB |
| Return type | Interpretation |
|---|---|
true | Validation passes |
false | Validation fails (generic error) |
"error message" | Validation fails with the given message |
["error1", "error2"] | Validation fails with multiple errors |
undefined / null | Validation passes |
The script must contain a
return statement. Object return values are not supported.AI
Use an LLM to validate data against natural language instructions. Write a prompt describing what valid data looks like, and the model returns whether the data passes along with any errors.| Field | Type | Required | Description |
|---|---|---|---|
| Prompt | text | Yes | Natural language validation instructions |
| Precision | select | Yes | Model quality level: Small, Medium, or High |
Output format
The validation node passes upstream data through and appends avalidation object:
| Field | Type | Description |
|---|---|---|
data | object | The original upstream payload, passed through unchanged |
validation.isValid | boolean | Whether the data passed validation |
validation.errors | string[] | Validation error messages (empty when valid) |
validation.warnings | string[] | Warning messages (populated when failure action is warn) |
validation.mode | string | The validation mode that was used |
validation.failureAction | string | The configured failure action (fail or warn) |
Inputs and outputs
Allowed inputs: Extract, transform, route, merge, review, parse. Output: Original data with validation results appended. When failure action isfail and validation errors exist, the step fails and downstream nodes do not execute.
Common pitfalls
Failure action set to Fail when you wanted a soft check
Failure action set to Fail when you wanted a soft check
Fail halts the pipeline and downstream nodes never run. If you wanted the run to continue but to flag the issue, switch to Warn and consume the validation.warnings array downstream.Endpoint mode without response mapping for a non-standard API
Endpoint mode without response mapping for a non-standard API
By default, the endpoint mode looks for
valid (or isValid) and errors at the response root. If your service returns a different shape, set Response mapping to point at the correct paths or every response will be treated as invalid.Script that doesn't return
Script that doesn't return
The script must contain a
return statement. A script that finishes without returning is treated as undefined (which passes validation), so a missing return silently disables the check.AI mode used for a check that's actually deterministic
AI mode used for a check that's actually deterministic
AI validation costs LLM credits per run. If the check is “amount must be a positive number” or “currency must be USD or EUR,” use Rules or Script mode for free, deterministic results. Reserve AI mode for genuinely judgment-based checks.
Validation duplicating the extract schema's required list
Validation duplicating the extract schema's required list
A
required field marked on the extract schema already gates the field’s presence. Don’t repeat the same check in validation; use validation for the harder constraints (formats, ranges, cross-field rules).Related
Extract action
Extract structured data before validating
Review action
Add human review for failed validations
Transform action
Transform validated data to a delivery format
Route action
Route data based on conditions before validating