The answer engine speaks the OpenAI API, so anything built against OpenAI works by changing one base URL. Or use the grounded endpoints, where every sentence is drawn only from your records and cites its source.
POST /v1/chat/completions — OpenAI-compatible.
curl $VALIDITI_AI/v1/chat/completions -H "Authorization: Bearer $KEY" \
-d '{"model":"validiti","messages":[{"role":"user","content":"How is the NC book trending?"}]}'POST /ask — plain English in; an answer drawn only from your records + citations. Honest when there is no record.
// request
{ "query": "average margin in North Carolina this year" }
// response
{ "answer": "North Carolina averages 18.29% across 34 jobs.",
"citations": [ { "record": "PRJ-100100", "field": "margin_pct" } ],
"receipt": "vq-6d3c…" }POST /sense — tell it a record changed; it works out what it means and who should know, each at their level.
// request
{ "record_id": "PRJ-110295", "field": "margin_pct", "new": -10.0 }
// response
{ "severity": "critical",
"brief": "MassMutual · Lincolnton NC · margin -4% -> -10%.",
"notify": [ { "role": "account_owner", "note": "This job is now unprofitable — review." },
{ "role": "finance", "note": "Book impact immaterial; pattern flagged." } ],
"receipt": "brf-6d3c…" }