About

API

Knowviq Verified Answers API

Coming soon The API isn't open yet. This page documents it ahead of launch.

Send a question, get back only the sentences Jev verified against sources, each with its citations and how sure Jev is. Anything Jev couldn't verify is removed before the response leaves Knowviq.

US$29/month

Sign-up isn't open yet. This page documents the API ahead of launch.

Quick start

After you subscribe, your key is shown once. It starts with kvq_live_. Keep it on your server, never in a browser or app. If it leaks, regenerate it on your API account page. The old key stops working straight away.

curl

curl https://knowviq.com/api/v1/answer \
  -H "Authorization: Bearer $KNOWVIQ_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "how tall is the eiffel tower", "include_results": true}'

JavaScript

const res = await fetch("https://knowviq.com/api/v1/answer", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.KNOWVIQ_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ query: "how tall is the eiffel tower" }),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);
for (const s of data.answer) console.log(s.text, `${s.verified_pct}%`);

Python

import os, requests

res = requests.post(
    "https://knowviq.com/api/v1/answer",
    headers={"Authorization": f"Bearer {os.environ['KNOWVIQ_API_KEY']}"},
    json={"query": "how tall is the eiffel tower", "include_results": True},
    timeout=60,
)
data = res.json()
res.raise_for_status()
for s in data["answer"]:
    print(s["text"], s["verified_pct"], [c["url"] for c in s["citations"]])

Request

POST https://knowviq.com/api/v1/answer

Response

{
  "id": "req_4f1c…",
  "object": "verified_answer",
  "query": "how tall is the eiffel tower",
  "verified": true,
  "answer": [
    {
      "text": "The Eiffel Tower is 330 metres tall.",
      "verified_pct": 97,
      "citations": [{ "title": "Eiffel Tower", "url": "https://…" }]
    }
  ],
  "how_sure": 97,
  "results": [
    { "title": "Eiffel Tower", "url": "https://…", "jev_verified_pct": 93 }
  ],
  "usage": { "used": 12, "limit": 250, "resets_at": "2026-10-27T06:00:00.000Z" }
}

Errors and limits

Errors look like {"error": {"code": "…", "message": "…"}, "request_id": "req_…"}.

Every response has X-Request-Id. Answers and quota errors also carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (Unix time the period resets).

Privacy

API queries are not stored beyond counts. We keep a count of verified answers per billing period and a SHA-256 hash of your key, never the key itself. Answers are generated from third-party web sources, and each sentence cites where it came from.