Available · v1
Data Quality Intelligence
Send any JSON business record with optional field definitions and rules. Get back structural errors, values that don't make sense together, and corrections only where the intended value is certain.
- Types, formats, and your rules checked exactly in code
- Contradictions and placeholders found across fields
- Interpreted findings never mark a record invalid
- Corrections only when the intended value is certain
Request body
{
"record_type": "customer_account",
"record": {
"company_name": "Northwind Traders",
"status": "active",
"billing_email": "billing@northwind.example",
"contract_start": "2026-03-01",
"contract_end": "2027-02-28",
"address": {
"city": "Seattle",
"state": "WA",
"postal_code": "98101",
"country": "US"
}
},
"fields": [
{
"path": "company_name",
"type": "string",
"required": true
},
{
"path": "status",
"type": "enum",
"enum_values": [
"Active",
"Suspended",
"Closed"
],
"required": true
},
{
"path": "billing_email",
"type": "email",
"required": true
},
{
"path": "account_owner",
"type": "string",
"required": true
}
],
"rules": [
{
"type": "date_before",
"field": "contract_start",
"other": "contract_end"
}
]
}Response · 200 OK
{
"request_id": "req_Gm5tQ8wLn2RvK7pX",
"status": "invalid",
"requires_review": false,
"issues": [
{
"type": "invalid_format",
"method": "deterministic",
"field": "status",
"explanation": "The value isn't one of the allowed values.",
"evidence": [
"record.status",
"fields[1]"
]
},
{
"type": "missing_required_value",
"method": "deterministic",
"field": "account_owner",
"explanation": "A required value is missing or empty.",
"evidence": [
"record.account_owner",
"fields[3]"
]
}
],
"missing_information": [
"account_owner"
],
"suggested_corrections": [
{
"field": "status",
"current": "active",
"suggested": "Active",
"reason": "It matches an allowed value except for case or spacing."
}
]
}The problem
Valid JSON isn't valid data
A record can pass schema validation with a Boston address in California, a job title in the phone field, or a contract that ends before it starts. Bad records spread into billing, shipping, and reporting.
Use cases
Where teams use it
- CRM hygiene
- Data onboarding
- Master data review
- Form validation
- Integration monitoring
Limitations
- No external verification of addresses, IDs, or companies.
- Up to 30 values interpreted per request.
- Not a general schema engine.
Integrate
One HTTP call
const response = await fetch("https://kovca.io/api/v1/data/validate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.KOVCA_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"record_type": "customer_account",
"record": {
"company_name": "Northwind Traders",
"status": "active",
"billing_email": "billing@northwind.example",
"contract_start": "2026-03-01",
"contract_end": "2027-02-28",
"address": {
"city": "Seattle",
"state": "WA",
"postal_code": "98101",
"country": "US"
}
},
"fields": [
{
"path": "company_name",
"type": "string",
"required": true
},
{
"path": "status",
"type": "enum",
"enum_values": [
"Active",
"Suspended",
"Closed"
],
"required": true
},
{
"path": "billing_email",
"type": "email",
"required": true
},
{
"path": "account_owner",
"type": "string",
"required": true
}
],
"rules": [
{
"type": "date_before",
"field": "contract_start",
"other": "contract_end"
}
]
}),
});
if (!response.ok) {
const { error, request_id } = await response.json();
throw new Error(`${error.code}: ${error.message} (${request_id})`);
}
const { status, issues, suggested_corrections } = await response.json();Related APIs
- Policy Evaluation
Check requests against the policies you write and get a structured, advisory decision.
- Scope Intelligence
Check whether a requested change is within an agreed statement of work, excluded, or needs a change request.
- Content Intelligence
Evaluate user-generated content against your platform rules and get a structured moderation recommendation.