POST /api/v1/investigate
A full investigation of one picked entity: deterministic registry and domain checks, then agent-driven exploration of additional sources within a step allowance. Typical latency 10–40 seconds.
Request body
Address the entity one of three ways — whichever your system already holds:
// 1 — our id, from a prior search
{ "entityId": "denue-4325279" }
// 2 — official registration number: skip search entirely
{ "country": "BR", "registrationNumber": "07918048" }
// 3 — registry + ref, round-tripped from any search result
{ "registry": "INEGI DENUE", "registryRef": "4325279" }
| FIELD | DESCRIPTION |
|---|---|
entityId / country+registrationNumber / registry+registryRef | The entity address — exactly one form. The response echoes resolvedBy. |
context | Optional. What you already know: {website, email, address, note}. The investigation verifies against it — it is treated as claims, not truth. |
focus | Optional. Areas to prioritize, e.g. ["tax_status"]. |
goals | Optional. Why you are checking: any of compliance, risk, partnership, employer, contractor. Defaults to ["compliance"]. Same goals as the app; decides which bonus balance, if any, the investigation draws from before your monthly allowance. |
budget | Optional. Exploration steps to allow; capped by your plan. |
Response
| FIELD | DESCRIPTION |
|---|---|
summary | Plain-language conclusion, written from the consulted sources. |
confidence | high | medium | low — about coverage and corroboration. |
riskScore | 0–100. Computed deterministically from the findings — same findings, same score. |
complianceScore | 0–100. Computed from failed/review checks the same way. |
coverage | full — checks + exploration ran · baseline_only — the exploration layer was unavailable; findings contain only the deterministic checks. |
findings[] | The investigation. Each: section · finding (plain language) · risk LOW/MED/HIGH · compliance PASS/REVIEW/FAIL · sources[] · input (exactly what was queried) · origin baseline/exploration. |
notChecked[] | Sources not consulted, each with the investigator's stated reason. |
Example
curl -X POST -H "x-api-key: vk_live_…" -H "Content-Type: application/json" \
-d '{"entityId":"denue-7785482","context":{"website":"grupobimbo.com"}}' \
https://app.verety.ai/api/v1/investigate
{
"entityId": "denue-7785482", "country": "MX", "entity": { "name": "GRUPO BIMBO" },
"summary": "Small establishment (0–5 employees) in Arriaga, Chiapas…",
"confidence": "high", "riskScore": 20, "complianceScore": 70, "coverage": "full",
"findings": [
{ "section": "Business domain", "risk": "MED", "compliance": "REVIEW",
"sources": ["ENTITY CONTACT INFO ON FILE"], "input": null,
"finding": "No business email domain on file for this establishment.", "origin": "baseline" },
{ "section": "Website content", "risk": "LOW", "compliance": "PASS",
"sources": ["LIVE WEBSITE FETCH"], "input": "grupobimbo.com",
"finding": "grupobimbo.com is the official site of the global Bimbo corporation…", "origin": "exploration" }
],
"notChecked": [
{ "capability": "lookup_wayback",
"reason": "Domain age already confirmed by WHOIS — archive history would not change the conclusion." }
]
}
Nothing is fabricated. Findings come only from consulted sources. When a source is down you get fewer findings and an honest
coverage flag — never invented data.