Capabilities
Chat
Conversational retrieval-augmented generation over a tenant's vault. Every answer is grounded in document citations you can render back into your UI.
chat.ask
/api/v2/chatAsk a question over the vault. Returns a grounded answer and structured citations.
Request body
json{ "query": "What's the overall fire rating strategy on the tower?", "project_ids": ["8f2e3c1a-..."], "document_ids": null, "conversation_id": null, "k": 15 }
field— 1 to 8000 characters. Required.field— optional scope. Omit to search the entire accessible vault.field— optional deep scope to specific documents.field— continue an existing thread. Omit to start a new one.field— 1 to 50, default 15. Controls how many chunks the retriever feeds the LLM.
bashcurl -sS https://api.alloovium.com/api/v2/chat \ -H "Authorization: Bearer $ALLOOVIUM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "What fire rating is specified for the tower lobby?", "project_ids": ["8f2e3c1a-..."] }'
Response
json{ "answer": "The lobby walls require a 90-minute fire rating per AS 1530.4...", "citations": [ { "document_id": "4a1c2b3d-...", "chunk_id": "7b3e1a-...", "page_number": 14, "content": "Level-3 lobby walls carry a 90-minute fire rating per AS 1530.4...", "score": 0.9142 } ], "conversation_id": "2e5f09bb-...", "message_id": "9d8c7b6a-...", "usage": { "prompt_tokens": 3120, "completion_tokens": 284, "total_tokens": 3404 } }
The field is created on the first call if you didn't pass one. Store it and pass it back on the next capability to keep a multi-turn dialogue going.
Citations are the contract
answer is human-readable and may reorder between calls. The Citations are the contract array is the stable, machine-parseable grounding — each item identifies the exact chunk in your vault. Render citations as footnotes or inline link badges and your users will trust the output more.chat.ask_stream
/api/v2/chat/streamStreaming variant of chat.ask. Returns server-sent events as the model generates.
Not available in v2 yet
code. If you need SSE today, use the v1 chat streaming endpoint from the main app. When v2 streaming lands it will mirror the v1 event protocol (delta, progress, citation, done).Once enabled, clients should consume it with fetch streaming plus a manual SSE parser — eventsource cannot send an auth header. The cost (10 tokens) is deducted at request time, not per event.
chat.list_conversations
/api/v2/conversationsPaginated list of the API key's user's chat conversations.
Request
bashcurl -sS "https://api.alloovium.com/api/v2/conversations?limit=25" \ -H "Authorization: Bearer $ALLOOVIUM_API_KEY"
Response
json{ "data": [ { "id": "2e5f09bb-...", "title": "Fire rating strategy", "created_at": "2026-04-08T10:12:00+00:00", "updated_at": "2026-04-08T10:14:22+00:00", "message_count": 4 } ], "next_cursor": null, "has_more": false }
chat.get_conversation
/api/v2/conversations/{conversation_id}Fetch a single conversation with its full message history.
Response
json{ "id": "2e5f09bb-...", "title": "Fire rating strategy", "created_at": "2026-04-08T10:12:00+00:00", "updated_at": "2026-04-08T10:14:22+00:00", "messages": [ { "id": "9d8c7b6a-...", "role": "user", "content": "What fire rating is specified for the tower lobby?", "created_at": "2026-04-08T10:12:00+00:00" }, { "id": "abc123...", "role": "assistant", "content": "The lobby walls require a 90-minute fire rating...", "citations": [ { "document_id": "4a1c2b3d-...", "page_number": 14, "content": "Level-3 lobby walls carry a 90-minute fire rating per AS 1530.4..." } ], "created_at": "2026-04-08T10:12:05+00:00" } ] }
Tenant isolation
code.Patterns
Stateless Q&A
For one-shot questions, omit field. Each call creates a fresh conversation. You can still read the field from the response and audit the history later via capability.
Multi-turn with memory
Store the field from the first response and pass it back on each subsequent call. The server re-assembles the history — you don't need to echo prior messages.
Scoping for accuracy
Narrow searches outperform broad ones. If you know the relevant project, pass field. If you know the exact documents, pass field. The LLM gets cleaner context and the citations become sharper.
See also
- vault.search — retrieval without generation, if you want to rank chunks and render them yourself.
- Rate Limits —
capabilitycosts 10 tokens per call.