Ask a question over your documents
Retrieval-augmented generation: searches your indexed corpus, then generates an LLM answer grounded in the retrieved passages.
Modes:
stream=false(default): returns a single JSON response withresultsandanswer.stream=true: returns Server-Sent Events —event: sources(retrieved chunks),event: token(answer tokens),event: done(stream complete), orevent: error(generation failure).
Model: defaults to mistral-large-latest (flagship, best answer quality).
Pass model=alfred-ft5 for the lighter, faster LightOn fine-tune.
Company-specific custom models (custom-{company_id}-{uuid}) are also accepted.
Any other value returns 422.
Scoping: same rules as /api/v3/search — use workspace_id and/or tag_id
to narrow results, or file_id to target specific files. file_id cannot be
combined with workspace_id or tag_id (422).
Facet filtering: use content_type and attribute to narrow results by facet
metadata. Content type uses colon-separated paths (e.g. legal:contract:nda).
Repeated attribute entries are ANDed; values inside one entry are ORed with
| (pipe, recommended). Example: attribute=fiscal_year:2024|2025&attribute=status:active
→ (fiscal_year 2024 OR 2025) AND (status active). Supports operators (>, >=,
<, <=), prefix (name:prefix*), smart dates, and content-type scoping.
Billing: 1 search-with-generation credit per request.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
DRF serializer mixin providing content_type and attribute fields.
Compose into any request serializer via multiple inheritance::
class SearchRequestSerializer(FacetFilterFieldsMixin, serializers.Serializer):
query = serializers.CharField(...)
# content_type and attribute inherited from the mixinNatural-language question. Maximum 1500 characters.
1500Filter by content type path. Multiple values are OR. Exact-or-subtree matching by default (e.g. legal matches legal, legal:contract). Wildcards: *contract* (contains), legal:contract* (prefix).
Filter by attribute value. Repeated attribute entries are ANDed; values inside one entry are ORed with | (pipe is the recommended OR delimiter — comma also works but can be ambiguous with multi-key values). Example: attribute=fiscal_year:2024|2025&attribute=status:active → (fiscal_year 2024 OR 2025) AND (status active). Formats: name (has any value), name:value (exact), name:>value / name:>=value (gt/gte), name:<value / name:<=value (lt/lte), name:prefix* (starts with, case-insensitive), name:*text* (contains, case-insensitive), name:a|b (OR). Smart dates: filing_date:2023 (year), filing_date:2023-06 (month). Type-aware: booleans (true/false), multi-select (membership check). Scoped: content_type(legal:compliance).regulation:AML.
Maximum number of chunks to retrieve for context. Range: 1–50.
1 <= x <= 50Restrict search to these workspace IDs. Cannot combine with file_id.
Restrict to documents carrying any of these tag IDs (OR). Cannot combine with file_id.
Restrict to specific file IDs. Cannot combine with workspace_id or tag_id.
When true, response is streamed as Server-Sent Events.
LLM used for answer generation. Standard values:
mistral-large-latest: Mistral Large 2 — flagship general-purpose model. Best answer quality (default).alfred-ft5: Alfred FT5 — LightOn fine-tuned model, lighter and faster for straightforward questions. Custom model technical names (e.g.custom-{company_id}-{uuid}) are also accepted.
Response
Synchronous mode (stream=false): complete answer with sources.
Streaming mode (stream=true): Server-Sent Events with event: sources, event: token, and event: done (or event: error).