An LLM that cannot show its sources is hard to trust and impossible to fact-check. ODEN returns ranked citations with every answer, so your application can attribute each claim to a real URL — the single biggest credibility upgrade you can give an AI feature.
What you get#
Every /search response includes a citations array, ranked by relevance:
{
"results": {
"answer": "...",
"citations": [
{ "title": "Standard Contractual Clauses — European Commission", "url": "https://commission.europa.eu/...", "score": 0.938, "snippet": "The SCCs are model clauses adopted by the Commission..." }
]
}
}
Set include_snippets: true to get one attributed sentence per source — enough to show why a source was cited without fetching the page.
Rendering inline citations#
The clean pattern: number the sources, ask your model to cite [n] inline, and render the numbers as links.
def cited_answer(question: str) -> dict:
r = requests.post(
"https://api.oden-api.com/search",
headers={"Authorization": f"Bearer {os.environ['ODEN_KEY']}"},
json={"query": question, "include_snippets": True},
timeout=30,
).json()["results"]
sources = r["citations"]
numbered = "\n".join(f"[{i+1}] {c['title']} — {c['url']}" for i, c in enumerate(sources))
prompt = (
"Answer the question using only these sources and cite them inline as [n].\n\n"
f"{numbered}\n\nQuestion: {question}"
)
# ... send prompt to your model ...
return {"sources": sources} # render [n] as links to sources[n-1]["url"]
In the UI, turn each [n] into a link or a hover card pointing at sources[n-1].url. Because ODEN ranks by score, you can also drop weak sources (below ~0.6) before showing them.
Why ODEN's citations are trustworthy#
ODEN returns citations as metadata — title, URL, score, and an optional attributed sentence — rather than reproducing full source text. That keeps you on the right side of the TDM opt-out while still giving users a real link to verify against.
FAQ#
Can I get citations without a synthesized answer?#
Yes. Send "answer": false and ODEN returns ranked citations only. See answers and citations.
How do I avoid citing weak sources?#
Filter on score. Dropping citations below about 0.6 removes most low-relevance sources before they reach the user.
Does ODEN guarantee the answer only uses the cited sources?#
ODEN synthesizes from the sources it retrieved and returns them as citations. If you need strict grounding, pass answer: false, take the citations, and do the synthesis yourself with an instruction to use only those sources.