Overview
Validatar's Execution API enables orchestration tools to trigger test and job execution, poll for completion, and take action based on results. This allows you to embed data quality gates directly into your ETL/ELT pipelines — if quality checks fail, the pipeline can stop before propagating bad data downstream.
Authentication
All orchestration API calls use a custom header for authentication:
x-val-api-token: {your_api_token}
Create an API token in Validatar under Settings > Authentication > API Tokens with the Execution scope enabled. A single token can have multiple scopes if you also need Authoring or Explorer access. For full details on token creation, see User Tokens.
Base URL
All endpoints use the pattern:
{VALIDATAR_API_URL}/core/api/v1/{endpoint}
Replace {VALIDATAR_API_URL} with your Validatar instance URL (e.g., https://mycompany.cloud.validatar.com).
Common Pattern
All orchestration integrations follow the same core workflow:
- Trigger — POST to the execute endpoint for a job (or individual test)
- Poll — GET the results endpoint every 5 seconds until execution completes
- Evaluate — parse the result status to determine pass/fail
- Act — continue the pipeline, halt, or raise an alert based on the evaluation
Tip: For standard test execution, the API supports a
waitUntilCompleteoption that makes the call synchronous — the response only returns after the test finishes. This can simplify integrations that don't need polling. Jobs and template tests always require polling.
Key API Endpoints
| Endpoint | Method | Description |
|---|---|---|
projects/{projectId}/jobs/{jobId}/execute |
POST | Execute a job |
projects/{projectId}/jobs/{jobId}/results/{batchKey} |
GET | Get job execution summary |
projects/{projectId}/tests/{testId}/execute |
POST | Execute a standard test |
projects/{projectId}/tests/{testId}/results/{batchKey} |
GET | Get standard test summary |
projects/{projectId}/template-tests/{testId}/execute |
POST | Execute a template test |
projects/{projectId}/template-tests/{testId}/results/{batchKey} |
GET | Get template test summary |
Note: Jobs are the recommended execution unit for orchestration. A job groups multiple tests into a single execution with a defined order, so you can trigger one API call and get a consolidated result.
Finding IDs
The project, test, and job IDs you need are visible in the Validatar UI URL. For example:
https://mycompany.cloud.validatar.com/projects/43/folders/1408/tests/57878
^^ ^^^^^
project ID test ID
You can also retrieve IDs programmatically using the Authoring API:
GET /core/api/v1/projects— returns all projects with their IDsGET /core/api/v1/projects/{projectId}/jobs/{jobId}— returns job details
Execute Request Bodies
Job Execution
Job execution requires no request body — just the project ID and job ID in the URL:
POST /core/api/v1/projects/{projectId}/jobs/{jobId}/execute
Standard Test Execution
{
"saveInRepository": true,
"waitUntilComplete": false,
"leftDataSourceId": null,
"rightDataSourceId": null
}
| Field | Type | Description |
|---|---|---|
saveInRepository |
bool | Set to true to persist results (recommended) |
waitUntilComplete |
bool | Set to true for synchronous execution (no polling needed) |
leftDataSourceId |
int? | Override the test's source data source (optional) |
rightDataSourceId |
int? | Override the test's target data source (optional) |
Template Test Execution
{
"saveInRepository": true,
"parallelTestCount": 10,
"childTestId": null
}
| Field | Type | Description |
|---|---|---|
saveInRepository |
bool | Set to true to persist results (recommended) |
parallelTestCount |
int | Number of child tests to run in parallel (default: 10) |
childTestId |
int? | Execute only a specific child test (optional) |
Execute Response
All execute endpoints return the same response shape:
{
"name": "My Job Name",
"executionKey": "abc123-def456",
"batchId": 12345
}
Use the executionKey value as the batchKey parameter when polling for results.
Result Evaluation
Standard Test Results
The result field returns one of:
| Value | Meaning | Pipeline Action |
|---|---|---|
Running |
Execution still in progress | Continue polling |
Passed |
Test passed | Continue pipeline |
Failed |
Test failed | Fail or alert |
Error |
Execution error | Fail or alert |
Job and Template Test Results
The status field returns one of:
| Value | Meaning | Pipeline Action |
|---|---|---|
Running |
Execution still in progress | Continue polling |
Completed |
All steps finished | Evaluate individual test results |
Aborted |
Execution was cancelled | Fail or alert |
Aborting |
Cancellation in progress | Continue polling |
Abandoned |
Execution failed to start | Fail or alert |
For jobs, the response also includes a tests array with individual test outcomes. Check each test's status to determine the overall quality gate result.
Polling Best Practices
- Poll every 5 seconds — this balances responsiveness with load on the Validatar server
- Implement a timeout — set a configurable maximum wait time (default: 30 minutes) to avoid hanging pipelines
- Log each poll response — include the status and elapsed time for troubleshooting
- Handle network errors gracefully — a failed poll request doesn't mean the test failed; retry the poll