Quickstart
Create a memory, add a document, and get a cited answer — in about five minutes.
By the end of this page you will have ingested a document and asked a question about it through the API.
Get an API key
Sign in to the console, open Settings → API Keys and create a key.
The key is shown once. Copy it now — it is stored as a hash, so it cannot be recovered later. (It can be rotated, which is the intended recovery path.)
export CHORDIAN_API_KEY="ck_live_..."Treat the key like a password. It carries your tenant's full API scope unless you restricted it at creation. For anything that only needs one memory, mint a per-memory key instead — see Authentication.
Confirm you can reach the API
curl https://api.uni-flow.ai/api/v1/workspaces \
-H "x-api-key: $CHORDIAN_API_KEY"You should get your workspaces back, including which one is active. Every new account has one default workspace with a memory already attached, so there is nothing to create before ingesting.
Add some content
curl https://api.uni-flow.ai/api/v1/memory/ingest \
-H "x-api-key: $CHORDIAN_API_KEY" \
-H "content-type: application/json" \
-d '{
"content": "# Acme Corp — Q4 expansion\n\nDeal value EUR 240k. Stage: Security Review. Blocker: BAA approval and EU hosting confirmation. Primary contact: Jana Mueller, VP Sales.",
"content_type": "markdown",
"routing": { "mode": "auto" }
}'The response tells you where it landed and how confident the classifier was:
{
"doc_id": "ing_9f2c8a1e",
"vault_id": "v_sales",
"routing_confidence": 0.91,
"needs_review": false,
"dlp_matches": 0
}Indexing continues in the background — extraction, perimeter scan, chunking, embedding and entity extraction. For a short document it is ready in a second or two.
Ask a question
curl https://api.uni-flow.ai/api/v1/memory/search \
-H "x-api-key: $CHORDIAN_API_KEY" \
-H "content-type: application/json" \
-d '{"query": "What is blocking the Acme deal?"}'{
"answer": "The Acme Corp Q4 expansion is in Security Review. Two items are blocking it: BAA approval and confirmation of EU hosting [1].",
"citations": [
{ "index": 1, "title": "Acme Corp — Q4 expansion", "document_id": "ing_9f2c8a1e" }
],
"chunk_count": 1,
"suggested_followups": ["Who is the primary contact at Acme?"]
}The answer carries inline [1] markers that map to the citations array. If a
claim has no marker, it is not grounded — that is your signal to be sceptical.
Try it interactively
Every reference page has a live playground. Paste your key once and fire real requests without leaving the docs:
Search memory
The endpoint you just called, with an interactive request builder.
Ingest content
Full schema for routing modes, metadata and options.
What just happened
Two things worth noticing. The gateway resolved your key to a tenant and injected that identity — you never sent a tenant id, and there is no parameter that would let you claim one. And the perimeter scanned the content before it was embedded, so if that document had contained a secret it would have been masked before it reached the vector store.