Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config’s progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.
API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.
Path Parameters
corpus_id
string
required
Minimum string length: 1
Body
application/json
idempotency_key
string
required
Minimum string length: 1
retrieval
object
required
Pin a plugin-provided profile when resolving config. Explicit fields override default fields by logical name; unmapped source data remains preserved. getCorpus returns the effective resolved fields. The only built-in profile, example.editorial, is illustrative (paired with the example extension namespace), not a product default; an uninstalled profile is 422 unsupported_profile.
Show child attributes
Response
Successful response
Administrative execution only. Retries keep identity. Intentional terminal rerun has a new ID and previous_operation_id. Cancellation does not promise universal rollback; already-terminal state and racing completion may win. projection_rebuild, retrieval_configuration and backfill Operations require corpus_id; when succeeded they require result naming the activated logical generation, or for a backfill the generation it filled. A backfill also carries backfill, and its counters versions_in_scope, versions_done, versions_skipped (with skipped_) and segments. A quarantine_reprocess carries corpus_id and quarantine_reprocess, and its counters versions_in_scope, versions_recovered, versions_quarantined and versions_skipped (with skipped_); it has no result. Only a backfill and a quarantine_reprocess can be paused. vector_space_promotion, plugin_activation and plugin_rollback carry admin, with no corpus_id. Their counters records_scanned, versions_missing and segments_missing describe the preflight; required_missing excludes gaps retained from an earlier rollback. Success publishes routing; rollback recovery continues in the background after success.
Logical generation activated for the requested Corpus. Opaque ID, never a physical search collection name.
Show child attributes
admin
object
Routing command target and successful cutover result. Administrative Operations have no corpus_id and require plugins:admin to follow. Their kinds are vector_space_promotion, plugin_activation and plugin_rollback.
Show child attributes
backfill
object
What a backfill fills and how far it got.
Show child attributes
quarantine_reprocess
object
What a quarantine reprocess covers, the plan it runs with and the dry run it followed.
Show child attributes
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Quivr","description":"An open-source engine that turns continuous content streams into search and alerts.","colors":{"primary":"#5b3fd6","light":"#b29aff","dark":"#4b31be"},"api":{"playground":{"display":"interactive"}},"integrations":{"posthog":{"apiKey":"phc_pSFWFc94275asrYSX5PQffv7wE6vUsGDdUnBaDobgtMN","apiHost":"https://us.i.posthog.com","sessionRecording":false}},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"thevibecompany","hasAudioNarration":false,"actualSubdomain":"thevibecompany","customDomains":["docs.quivr.thevibecompany.co"],"gitSource":{"type":"github","owner":"the-vibe-company","repo":"quivr","deployBranch":"main","contentDirectory":"docs-site","isPrivate":false,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae36952217e82a3b9255c43","clientVersion":"0.0.4142","searchFilterCounts":[{"language":"default","tag":"Reference","count":108},{"language":"default","tag":"Endpoints","count":100},{"language":"default","tag":"Documentation","count":52},{"language":"default","tag":"Admin","count":28},{"language":"default","tag":"Run Quivr","count":27},{"language":"default","tag":"Connectors","count":15},{"language":"default","tag":"Use Quivr","count":12},{"language":"default","tag":"Corpora","count":10},{"language":"default","tag":"Subscriptions","count":9},{"language":"default","tag":"Extend Quivr","count":8}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/corpora/configure-retrieval","slug":"/api-reference/corpora/configure-retrieval","pageMetadata":{"title":"Configure retrieval","description":"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config's progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v0/corpora/{corpus_id}/retrieval","href":"/api-reference/corpora/configure-retrieval","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config’s progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Configure retrieval","description":"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config's progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v0/corpora/{corpus_id}/retrieval","href":"/api-reference/corpora/configure-retrieval","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"configureRetrieval","description":"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config's progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.","responses":{"202":"ac67ea66-7ed2-4e74-ab77-99730e2e4539","default":"b7d0597d-429d-45cc-b99b-9e14d1a55719"},"parameters":["d0d38476-e9e1-4530-b395-209a14699982"],"requestBody":"bdedc41f-5252-414a-8b68-6d86764cf2c7","x-required-permissions":["corpora:write","operations:write"],"tags":["Corpora"],"summary":"Configure retrieval","method":"put","type":"path","servers":[],"security":["da9c3b19-c354-4069-aa95-1130425613d3"],"path":"/v0/corpora/{corpus_id}/retrieval","baseUrlOptions":[],"title":"Configure retrieval","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"d0d38476-e9e1-4530-b395-209a14699982":{"name":"corpus_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"idempotency_key":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"idempotency_key","typeLabel":"string"},"retrieval":{"type":"object","additionalProperties":false,"properties":{"plugin_profile":{"type":"string","minLength":1,"uniqueKey":"retrieval.plugin_profile","typeLabel":"string"},"fields":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"retrieval.fields.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","enum":["string","number","boolean","datetime","string_array"],"isRequired":true,"uniqueKey":"retrieval.fields.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"roles":{"type":"array","items":{"type":"string","enum":["search","filter"],"uniqueKey":"retrieval.fields.items.[INDEX].roles.items.[INDEX]","typeLabel":"enum\u003cstring>"},"minItems":1,"isRequired":true,"uniqueKey":"retrieval.fields.items.[INDEX].roles","typeLabel":"enum\u003cstring>[]"},"source_pointer":{"type":"string","minLength":1,"uniqueKey":"retrieval.fields.items.[INDEX].source_pointer","typeLabel":"string"},"boost":{"type":"integer","minimum":1,"maximum":100,"default":1,"description":"Positive integer BM25F weight, allowed only with the search role. For ratios 3/2/2/1.5/1 use 6/4/4/3/2.","uniqueKey":"retrieval.fields.items.[INDEX].boost","typeLabel":"integer"},"analyzer":{"type":"string","enum":["folded","french_light"],"description":"Keyword analyzer for a separate copy of the field, also applied to queries. folded lowercases and folds accents and ligatures in any language; french_light also removes French stopwords and lightly stems. Omit for no copy; canonical text and vectors are unchanged.","uniqueKey":"retrieval.fields.items.[INDEX].analyzer","typeLabel":"enum\u003cstring>"},"part_role":{"type":"string","enum":["title","body","caption","transcript"],"description":"Collect canonical text Parts of this role instead of source_pointer. Requires the search role.","uniqueKey":"retrieval.fields.items.[INDEX].part_role","typeLabel":"enum\u003cstring>"},"part_key_prefix":{"type":"string","maxLength":200,"description":"Optional key prefix to narrow part_role, for example slugline-.","uniqueKey":"retrieval.fields.items.[INDEX].part_key_prefix","typeLabel":"string"},"value_pointer":{"type":"string","minLength":1,"description":"For a string_array source, select this JSON Pointer from each array entry and flatten its string or string-array values.","uniqueKey":"retrieval.fields.items.[INDEX].value_pointer","typeLabel":"string"}},"required":["name","type","roles"],"description":"v0 logical field mapping. name is a logical name matching ^[a-z][a-z0-9_]{0,63}$, never a search-engine field name. source_pointer is an RFC 6901 JSON Pointer into the canonical source view of a Version, rooted at /manifest, /provenance or /extensions/{namespace} with a declared namespace (built in, or owned by the startup-pinned plugin); other roots are rejected as invalid_mapping. Exactly one of source_pointer and part_role is required; Core validates this as invalid_mapping, along with role/type compatibility (search requires string or string_array). A search field named title replaces the projected title; other search fields add text once per Record Version. Filter roles are consumed by SearchFilter.metadata. New generations index each search field once per item with its boost; older generations retain passage scoring until rebuilt.","uniqueKey":"retrieval.fields.items.[INDEX]","typeLabel":"object"},"uniqueKey":"retrieval.fields","typeLabel":"object[]"}},"required":[],"description":"Pin a plugin-provided profile when resolving config. Explicit fields override default fields by logical name; unmapped source data remains preserved. getCorpus returns the effective resolved fields. The only built-in profile, example.editorial, is illustrative (paired with the example extension namespace), not a product default; an uninstalled profile is 422 unsupported_profile.","isRequired":true,"uniqueKey":"retrieval","typeLabel":"object"}},"required":["idempotency_key","retrieval"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"idempotency_key":"\u003cstring>","retrieval":{"plugin_profile":"\u003cstring>","fields":[{"name":"\u003cstring>","roles":[],"source_pointer":"\u003cstring>","boost":1,"part_key_prefix":"\u003cstring>","value_pointer":"\u003cstring>"}]}}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"ac67ea66-7ed2-4e74-ab77-99730e2e4539":{"description":"Successful response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"operation_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"operation_id","typeLabel":"string"},"kind":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"kind","typeLabel":"string"},"state":{"type":"string","enum":["queued","running","paused","succeeded","failed","cancel_requested","canceled"],"isRequired":true,"uniqueKey":"state","typeLabel":"enum\u003cstring>"},"counters":{"type":"object","additionalProperties":{"type":"integer","minimum":0,"uniqueKey":"counters.additionalProperties","typeLabel":"integer"},"isRequired":true,"uniqueKey":"counters","typeLabel":"object"},"errors":{"type":"array","items":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"errors.items.[INDEX].retryable","typeLabel":"boolean"},"request_id":{"type":"string","description":"Bounded caller X-Request-ID, or an engine-generated correlation ID.","uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string"},"trace_id":{"type":"string","description":"W3C trace ID when a trace context is present.","uniqueKey":"errors.items.[INDEX].trace_id","typeLabel":"string"},"span_id":{"type":"string","description":"W3C span ID of the API handler when a trace context is present.","uniqueKey":"errors.items.[INDEX].span_id","typeLabel":"string"},"field":{"type":"string","minLength":1,"description":"JSON Pointer (RFC 6901) to the request member that caused a 422, when known (for example /config/url or /credential/secret/token on connector commands).","uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"resync_url":{"type":"string","format":"uri-reference","uniqueKey":"errors.items.[INDEX].resync_url","typeLabel":"string\u003curi-reference>"}},"required":["code","message","retryable"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"maxItems":20,"isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"progress":{"type":"number","minimum":0,"maximum":1,"description":"Approximate fraction, omitted when unknown.","uniqueKey":"progress","typeLabel":"number"},"previous_operation_id":{"type":"string","minLength":1,"uniqueKey":"previous_operation_id","typeLabel":"string"},"corpus_id":{"type":"string","minLength":1,"conditionalRequirements":[{"when":[[{"property":"kind","values":["projection_rebuild","retrieval_configuration","backfill"]}]]}],"uniqueKey":"corpus_id","typeLabel":"string"},"result":{"type":"object","additionalProperties":false,"properties":{"projection_generation_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"result.projection_generation_id","typeLabel":"string"}},"required":["projection_generation_id"],"description":"Logical generation activated for the requested Corpus. Opaque ID, never a physical search collection name.","conditionalRequirements":[{}],"uniqueKey":"result","typeLabel":"object"},"admin":{"type":"object","additionalProperties":false,"description":"Routing command target and successful cutover result. Administrative Operations have no corpus_id and require plugins:admin to follow. Their kinds are vector_space_promotion, plugin_activation and plugin_rollback.","properties":{"target":{"type":"string","uniqueKey":"admin.target","typeLabel":"string"},"plan_id":{"type":"string","uniqueKey":"admin.plan_id","typeLabel":"string"},"previous_plan_id":{"type":"string","uniqueKey":"admin.previous_plan_id","typeLabel":"string"},"served_space_id":{"type":"string","uniqueKey":"admin.served_space_id","typeLabel":"string"},"previous_space_id":{"type":"string","uniqueKey":"admin.previous_space_id","typeLabel":"string"}},"uniqueKey":"admin","typeLabel":"object"},"backfill":{"type":"object","additionalProperties":false,"description":"What a backfill fills and how far it got.","properties":{"registration_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"backfill.registration_id","typeLabel":"string"},"spaces":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"backfill.spaces.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"backfill.spaces","typeLabel":"string[]"},"estimate":{"type":"object","additionalProperties":false,"properties":{"registration_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"backfill.estimate.registration_id","typeLabel":"string"},"spaces":{"type":"array","items":{"type":"string","minLength":1,"uniqueKey":"backfill.estimate.spaces.items.[INDEX]","typeLabel":"string"},"isRequired":true,"uniqueKey":"backfill.estimate.spaces","typeLabel":"string[]"},"versions":{"type":"integer","minimum":0,"description":"Versions in scope that miss a vector in a target space.","isRequired":true,"uniqueKey":"backfill.estimate.versions","typeLabel":"integer"},"segments":{"type":"integer","minimum":0,"description":"Their segments, which the plugin embeds.","isRequired":true,"uniqueKey":"backfill.estimate.segments","typeLabel":"integer"},"input_tokens":{"type":"integer","minimum":0,"description":"Estimated tokens the plugin embeds, one per four code points of segment text.","isRequired":true,"uniqueKey":"backfill.estimate.input_tokens","typeLabel":"integer"},"estimated_seconds":{"type":"number","format":"double","minimum":0,"description":"How long the backfill should take, at the deployment's backfill.rate or the recent throughput, whichever is slower.","isRequired":true,"uniqueKey":"backfill.estimate.estimated_seconds","typeLabel":"number\u003cdouble>"},"duration_basis":{"type":"string","enum":["rate","recent_backfills","recent_plugin_calls"],"description":"What the duration comes from.","isRequired":true,"uniqueKey":"backfill.estimate.duration_basis","typeLabel":"enum\u003cstring>"},"confirmation_required":{"type":"boolean","description":"The cost exceeds backfill.max_cost_without_confirmation, so starting the backfill needs confirm_cost.","isRequired":true,"uniqueKey":"backfill.estimate.confirmation_required","typeLabel":"boolean"},"estimated_cost_usd":{"type":"number","format":"double","minimum":0,"description":"Estimated cost in US dollars, rounded up to the cent, of the target spaces that declare an input_price in the plugin manifest; a space without one adds nothing. Absent when none declares one, so the cost is unknown.","uniqueKey":"backfill.estimate.estimated_cost_usd","typeLabel":"number\u003cdouble>"}},"required":["registration_id","spaces","versions","segments","input_tokens","estimated_seconds","duration_basis","confirmation_required"],"isRequired":true,"uniqueKey":"backfill.estimate","typeLabel":"object"},"accepted_after":{"type":"string","format":"date-time","uniqueKey":"backfill.accepted_after","typeLabel":"string\u003cdate-time>"},"accepted_before":{"type":"string","format":"date-time","uniqueKey":"backfill.accepted_before","typeLabel":"string\u003cdate-time>"},"plan_id":{"type":"string","minLength":1,"description":"The Pipeline Plan the backfill is pinned to, once it started.","uniqueKey":"backfill.plan_id","typeLabel":"string"},"checkpoint":{"type":"string","minLength":1,"description":"The last Version id it finished; it resumes after it, in Version id order.","uniqueKey":"backfill.checkpoint","typeLabel":"string"}},"required":["registration_id","spaces","estimate"],"uniqueKey":"backfill","typeLabel":"object"},"quarantine_reprocess":{"type":"object","additionalProperties":false,"description":"What a quarantine reprocess covers, the plan it runs with and the dry run it followed.","properties":{"plan_id":{"type":"string","minLength":1,"description":"The Pipeline Plan it runs with, the one active when it was accepted.","isRequired":true,"uniqueKey":"quarantine_reprocess.plan_id","typeLabel":"string"},"estimate":{"type":"object","additionalProperties":false,"properties":{"versions":{"type":"integer","minimum":0,"description":"Stuck Versions in scope.","isRequired":true,"uniqueKey":"quarantine_reprocess.estimate.versions","typeLabel":"integer"},"stages":{"type":"object","description":"Of them, how many failed at each step.","properties":{"normalization":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"quarantine_reprocess.estimate.stages.normalization","typeLabel":"integer"},"ingestion":{"type":"integer","minimum":0,"isRequired":true,"uniqueKey":"quarantine_reprocess.estimate.stages.ingestion","typeLabel":"integer"}},"required":["normalization","ingestion"],"additionalProperties":false,"isRequired":true,"uniqueKey":"quarantine_reprocess.estimate.stages","typeLabel":"object"},"codes":{"type":"object","description":"Of them, how many by reason code.","additionalProperties":{"type":"integer","minimum":0,"uniqueKey":"quarantine_reprocess.estimate.codes.additionalProperties","typeLabel":"integer"},"isRequired":true,"uniqueKey":"quarantine_reprocess.estimate.codes","typeLabel":"object"}},"required":["versions","stages","codes"],"isRequired":true,"uniqueKey":"quarantine_reprocess.estimate","typeLabel":"object"},"plugin":{"type":"string","minLength":1,"uniqueKey":"quarantine_reprocess.plugin","typeLabel":"string"},"code":{"type":"string","minLength":1,"uniqueKey":"quarantine_reprocess.code","typeLabel":"string"},"quarantined_after":{"type":"string","format":"date-time","uniqueKey":"quarantine_reprocess.quarantined_after","typeLabel":"string\u003cdate-time>"},"quarantined_before":{"type":"string","format":"date-time","uniqueKey":"quarantine_reprocess.quarantined_before","typeLabel":"string\u003cdate-time>"},"from_stage":{"type":"string","enum":["normalization"],"x-enum-varnames":["OperationQuarantineReprocessFromStageNormalization"],"description":"The requested restart stage; omitted when retrying the failed step.","uniqueKey":"quarantine_reprocess.from_stage","typeLabel":"enum\u003cstring>"}},"required":["plan_id","estimate"],"uniqueKey":"quarantine_reprocess","typeLabel":"object"}},"required":["operation_id","kind","state","counters","errors"],"description":"Administrative execution only. Retries keep identity. Intentional terminal rerun has a new ID and previous_operation_id. Cancellation does not promise universal rollback; already-terminal state and racing completion may win. projection_rebuild, retrieval_configuration and backfill Operations require corpus_id; when succeeded they require result naming the activated logical generation, or for a backfill the generation it filled. A backfill also carries backfill, and its counters versions_in_scope, versions_done, versions_skipped (with skipped_\u003creason>) and segments. A quarantine_reprocess carries corpus_id and quarantine_reprocess, and its counters versions_in_scope, versions_recovered, versions_quarantined and versions_skipped (with skipped_\u003creason>); it has no result. Only a backfill and a quarantine_reprocess can be paused. vector_space_promotion, plugin_activation and plugin_rollback carry admin, with no corpus_id. Their counters records_scanned, versions_missing and segments_missing describe the preflight; required_missing excludes gaps retained from an earlier rollback. Success publishes routing; rollback recovery continues in the background after success.","conditionallyRequiredProperties":{"corpus_id":[{"when":[[{"property":"kind","values":["projection_rebuild","retrieval_configuration","backfill"]}]]}],"result":[{}]},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"operation_id":"\u003cstring>","kind":"\u003cstring>","state":"queued","counters":{},"errors":[{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","trace_id":"\u003cstring>","span_id":"\u003cstring>","field":"\u003cstring>","resync_url":"\u003cstring>"}],"progress":0.5,"previous_operation_id":"\u003cstring>","corpus_id":"\u003cstring>","result":{"projection_generation_id":"\u003cstring>"},"admin":{"target":"\u003cstring>","plan_id":"\u003cstring>","previous_plan_id":"\u003cstring>","served_space_id":"\u003cstring>","previous_space_id":"\u003cstring>"},"backfill":{"registration_id":"\u003cstring>","spaces":["\u003cstring>"],"estimate":{"registration_id":"\u003cstring>","spaces":["\u003cstring>"],"versions":1,"segments":1,"input_tokens":1,"estimated_seconds":1,"duration_basis":"rate","confirmation_required":true,"estimated_cost_usd":1},"accepted_after":"2023-11-07T05:31:56Z","accepted_before":"2023-11-07T05:31:56Z","plan_id":"\u003cstring>","checkpoint":"\u003cstring>"},"quarantine_reprocess":{"plan_id":"\u003cstring>","estimate":{"versions":1,"stages":{"normalization":1,"ingestion":1},"codes":{}},"plugin":"\u003cstring>","code":"\u003cstring>","quarantined_after":"2023-11-07T05:31:56Z","quarantined_before":"2023-11-07T05:31:56Z","from_stage":"normalization"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b7d0597d-429d-45cc-b99b-9e14d1a55719":{"description":"Structured error; see contract HTTP mapping.","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"code":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"message","typeLabel":"string"},"retryable":{"type":"boolean","isRequired":true,"uniqueKey":"retryable","typeLabel":"boolean"},"request_id":{"type":"string","description":"Bounded caller X-Request-ID, or an engine-generated correlation ID.","uniqueKey":"request_id","typeLabel":"string"},"trace_id":{"type":"string","description":"W3C trace ID when a trace context is present.","uniqueKey":"trace_id","typeLabel":"string"},"span_id":{"type":"string","description":"W3C span ID of the API handler when a trace context is present.","uniqueKey":"span_id","typeLabel":"string"},"field":{"type":"string","minLength":1,"description":"JSON Pointer (RFC 6901) to the request member that caused a 422, when known (for example /config/url or /credential/secret/token on connector commands).","uniqueKey":"field","typeLabel":"string"},"resync_url":{"type":"string","format":"uri-reference","uniqueKey":"resync_url","typeLabel":"string\u003curi-reference>"}},"required":["code","message","retryable"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"\u003cstring>","message":"\u003cstring>","retryable":true,"request_id":"\u003cstring>","trace_id":"\u003cstring>","span_id":"\u003cstring>","field":"\u003cstring>","resync_url":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"da9c3b19-c354-4069-aa95-1130425613d3":{"ApiKey":{"type":"http","scheme":"bearer","description":"API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.","scopes":[],"schemeName":"ApiKey"}}},"servers":{},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.","scopes":[],"schemeName":"ApiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key, not necessarily a JWT. Server derives Organization, permitted actions and Corpus scope; every resource access is authorized.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiKey","name":"Authorization"}],"title":"ApiKey"}]},"originalFileLocation":"openapi.yaml"},"subdomain":"thevibecompany","siteName":"Quivr","title":"Configure retrieval - Quivr","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-13T09:57:32.332Z","originalFileLocation":"api-reference/corpora/configure-retrieval.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config\u0026#x27;s progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Quivr\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/thevibecompany/_generated/favicon/apple-touch-icon.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/thevibecompany/_generated/favicon/favicon-32x32.png?v=3\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/thevibecompany/_generated/favicon/favicon-16x16.png?v=3\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"https://mintlify.s3.us-west-1.amazonaws.com/thevibecompany/_generated/favicon/favicon.ico?v=3\">\u003cmeta data-mint-head property=\"og:title\" content=\"Configure retrieval - Quivr\">\u003cmeta data-mint-head property=\"og:description\" content=\"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config\u0026#x27;s progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Quivr\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://thevibecompany.mintlify.site/_mintlify/api/og/v2?division=Corpora\u0026amp;title=Configure+retrieval\u0026amp;description=Resolve+mapping+and+schedule+a+new+immutable+Projection+Generation+through+a+retrieval_configuration+Operation+%28202+with+Location%29.+Existing+active+config+remai\u0026amp;theme=023e5d222c667e5b3829d1ff\u0026amp;signature=3e3a30502358818658025650dee0987355587f7a5c82987711818afb7e46bf69\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Configure retrieval - Quivr\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config\u0026#x27;s progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://thevibecompany.mintlify.site/_mintlify/api/og/v2?division=Corpora\u0026amp;title=Configure+retrieval\u0026amp;description=Resolve+mapping+and+schedule+a+new+immutable+Projection+Generation+through+a+retrieval_configuration+Operation+%28202+with+Location%29.+Existing+active+config+remai\u0026amp;theme=023e5d222c667e5b3829d1ff\u0026amp;signature=3e3a30502358818658025650dee0987355587f7a5c82987711818afb7e46bf69\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"https://mintlify.s3.us-west-1.amazonaws.com/thevibecompany/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Quivr\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#5b3fd6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/corpora/configure-retrieval.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.quivr.thevibecompany.co/#organization\",\"name\":\"Quivr\",\"url\":\"https://docs.quivr.thevibecompany.co\"},{\"@type\":\"WebSite\",\"@id\":\"https://docs.quivr.thevibecompany.co#website\",\"name\":\"Quivr\",\"url\":\"https://docs.quivr.thevibecompany.co\",\"publisher\":{\"@id\":\"https://docs.quivr.thevibecompany.co/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval#webpage\",\"url\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval\",\"name\":\"Configure retrieval\",\"description\":\"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config's progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\",\"dateModified\":\"2026-10-13T09:57:32.332Z\",\"isPartOf\":{\"@id\":\"https://docs.quivr.thevibecompany.co#website\"},\"breadcrumb\":{\"@id\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.quivr.thevibecompany.co/api-reference/version/read-the-running-quivr-build\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Corpora\",\"item\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/get-corpus-stats\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Configure retrieval\",\"item\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval#apireference\",\"headline\":\"Configure retrieval\",\"name\":\"Configure retrieval\",\"description\":\"Resolve mapping and schedule a new immutable Projection Generation through a retrieval_configuration Operation (202 with Location). Existing active config remains in effect, and is what getCorpus returns, until validated cutover; the Operation reports the pending config's progress and outcome but not its content. A newer accepted config supersedes older pending ones, and a generation pinned to an older config than the effective one fails with retrieval_configuration_superseded instead of reverting it. Same key and canonical request replay the Operation; a changed request is 409 idempotency_conflict. Does not require a separate per-Corpus physical collection.\",\"url\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval\",\"mainEntityOfPage\":{\"@id\":\"https://docs.quivr.thevibecompany.co/api-reference/corpora/configure-retrieval#webpage\"},\"dateModified\":\"2026-10-13T09:57:32.332Z\",\"publisher\":{\"@id\":\"https://docs.quivr.thevibecompany.co/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.quivr.thevibecompany.co#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Quivr\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Quivr\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/corpora/configure-retrieval.md","siteName":"Quivr","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"Reference","groups":[{"group":"Quivr 2","pages":[{"title":"Versions and compatibility","href":"/reference/compatibility"},{"title":"Known limits","href":"/reference/known-limits"}]},{"group":"HTTP API","pages":[{"title":"API overview","href":"/api-reference/overview"}]},{"group":"Endpoints","pages":[{"group":"Version","pages":[{"title":"Read the running Quivr build","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/version","href":"/api-reference/version/read-the-running-quivr-build"}]},{"group":"Records","pages":[{"title":"List records","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/records","href":"/api-reference/records/list-records"},{"title":"Ingest record","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/records","href":"/api-reference/records/ingest-record"},{"title":"Count records","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/records/count","href":"/api-reference/records/count-records"},{"title":"Ingest batch","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/records/batch","href":"/api-reference/records/ingest-batch"},{"title":"Withdraw record","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/records/withdrawals","href":"/api-reference/records/withdraw-record"},{"title":"Get record","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/records/{record_id}","href":"/api-reference/records/get-record"},{"title":"Get version","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/records/{record_id}/versions/{version_id}","href":"/api-reference/records/get-version"}]},{"group":"Facets","pages":[{"title":"Count facets","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/facets","href":"/api-reference/facets/count-facets"}]},{"group":"Corpora","pages":[{"title":"Get corpus stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/corpora/{corpus_id}/stats","href":"/api-reference/corpora/get-corpus-stats"},{"title":"List corpora","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/corpora","href":"/api-reference/corpora/list-corpora"},{"title":"Create corpus","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/corpora","href":"/api-reference/corpora/create-corpus"},{"title":"Get corpus","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/corpora/{corpus_id}","href":"/api-reference/corpora/get-corpus"},{"title":"Rename corpus","deprecated":null,"version":null,"openapi":"/openapi.yaml patch /v0/corpora/{corpus_id}","href":"/api-reference/corpora/rename-corpus"},{"title":"Archive corpus","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/corpora/{corpus_id}/archive","href":"/api-reference/corpora/archive-corpus"},{"title":"Unarchive corpus","description":"Restore an archived corpus and make its retained data visible again.","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/corpora/{corpus_id}/unarchive","href":"/api-reference/corpora/unarchive-corpus"},{"title":"Configure retrieval","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v0/corpora/{corpus_id}/retrieval","href":"/api-reference/corpora/configure-retrieval"},{"title":"List vector spaces","description":"The vector spaces the Corpus's routed Projection Generation carries, the served one first, each with its owner (the engine, or the ingestion plugin that declares it), model, dimensions, metric, indexed and query modalities, its role in the generation (served answers search, evaluation is indexed and compared but never served) and its coverage, the current segments that hold a vector in it. A Corpus built before a space was enabled lists only the spaces it was built with; rebuild it (rebuildCorpusProjection) to add the others.","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/corpora/{corpus_id}/vector-spaces","href":"/api-reference/corpora/list-vector-spaces"},{"title":"Rebuild corpus projection","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/corpora/{corpus_id}/rebuilds","href":"/api-reference/corpora/rebuild-corpus-projection"}]},{"group":"Ingestion receipts","pages":[{"title":"Get receipt","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/ingestion-receipts/{receipt_id}","href":"/api-reference/ingestion-receipts/get-receipt"}]},{"group":"Uploads","pages":[{"title":"Create upload","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/uploads","href":"/api-reference/uploads/create-upload"},{"title":"Confirm upload","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/uploads/{upload_id}/confirm","href":"/api-reference/uploads/confirm-upload"},{"title":"Get upload","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/uploads/{upload_id}","href":"/api-reference/uploads/get-upload"}]},{"group":"Blobs","pages":[{"title":"Get blob","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/blobs/{blob_id}","href":"/api-reference/blobs/get-blob"}]},{"group":"Operations","pages":[{"title":"Get operation","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/operations/{operation_id}","href":"/api-reference/operations/get-operation"},{"title":"Cancel operation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/operations/{operation_id}/cancel","href":"/api-reference/operations/cancel-operation"},{"title":"Rerun operation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/operations/{operation_id}/rerun","href":"/api-reference/operations/rerun-operation"},{"title":"Pause operation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/operations/{operation_id}/pause","href":"/api-reference/operations/pause-operation"},{"title":"Resume operation","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/operations/{operation_id}/resume","href":"/api-reference/operations/resume-operation"}]},{"group":"Changes","pages":[{"title":"Poll changes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/changes","href":"/api-reference/changes/poll-changes"},{"title":"Stream changes","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/changes/stream","href":"/api-reference/changes/stream-changes"}]},{"group":"Saved queries","pages":[{"title":"Create saved query","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/saved-queries","href":"/api-reference/saved-queries/create-saved-query"},{"title":"Get saved query","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/saved-queries/{saved_query_id}","href":"/api-reference/saved-queries/get-saved-query"},{"title":"Get saved query version","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/saved-queries/{saved_query_id}/versions/{version_id}","href":"/api-reference/saved-queries/get-saved-query-version"},{"title":"Create saved query version","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/saved-queries/{saved_query_id}/versions","href":"/api-reference/saved-queries/create-saved-query-version"},{"title":"Delete saved query","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/saved-queries/{saved_query_id}/delete","href":"/api-reference/saved-queries/delete-saved-query"},{"title":"Rename saved query","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/saved-queries/{saved_query_id}/rename","href":"/api-reference/saved-queries/rename-saved-query"}]},{"group":"Subscriptions","pages":[{"title":"List subscriptions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/subscriptions","href":"/api-reference/subscriptions/list-subscriptions"},{"title":"Create subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions","href":"/api-reference/subscriptions/create-subscription"},{"title":"Get subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/subscriptions/{subscription_id}","href":"/api-reference/subscriptions/get-subscription"},{"title":"Get subscription version","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/subscriptions/{subscription_id}/versions/{version_id}","href":"/api-reference/subscriptions/get-subscription-version"},{"title":"Create subscription version","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions/{subscription_id}/versions","href":"/api-reference/subscriptions/create-subscription-version"},{"title":"Delete subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions/{subscription_id}/delete","href":"/api-reference/subscriptions/delete-subscription"},{"title":"Disable subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions/{subscription_id}/disable","href":"/api-reference/subscriptions/disable-subscription"},{"title":"Enable subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions/{subscription_id}/enable","href":"/api-reference/subscriptions/enable-subscription"},{"title":"Rename subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscriptions/{subscription_id}/rename","href":"/api-reference/subscriptions/rename-subscription"}]},{"group":"Subscription previews","pages":[{"title":"Preview subscription","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/subscription-previews","href":"/api-reference/subscription-previews/preview-subscription"}]},{"group":"Matches","pages":[{"title":"List matches","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/matches","href":"/api-reference/matches/list-matches"},{"title":"Get match","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/matches/{match_id}","href":"/api-reference/matches/get-match"}]},{"group":"Deliveries","pages":[{"title":"Get delivery","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/deliveries/{delivery_id}","href":"/api-reference/deliveries/get-delivery"},{"title":"List delivery attempts","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/deliveries/{delivery_id}/attempts","href":"/api-reference/deliveries/list-delivery-attempts"}]},{"group":"Connectors","pages":[{"title":"List connectors","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connectors","href":"/api-reference/connectors/list-connectors"},{"title":"Create connector","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors","href":"/api-reference/connectors/create-connector"},{"title":"List push token metadata","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connectors/{connector_id}/tokens","href":"/api-reference/connectors/list-push-token-metadata"},{"title":"Issue a source-scoped push token","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/tokens","href":"/api-reference/connectors/issue-a-source-scoped-push-token"},{"title":"Replace a push token with five minutes of overlap","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/tokens/{token_id}/rotate","href":"/api-reference/connectors/replace-a-push-token-with-five-minutes-of-overlap"},{"title":"Revoke a push token immediately","deprecated":null,"version":null,"openapi":"/openapi.yaml delete /v0/connectors/{connector_id}/tokens/{token_id}","href":"/api-reference/connectors/revoke-a-push-token-immediately"},{"title":"Answer a declared source challenge","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connectors/{connector_id}/api/{path}","href":"/api-reference/connectors/answer-a-declared-source-challenge"},{"title":"Push data to a declared source route","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/api/{path}","href":"/api-reference/connectors/push-data-to-a-declared-source-route"},{"title":"Get connector","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connectors/{connector_id}","href":"/api-reference/connectors/get-connector"},{"title":"Disable connector","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/disable","href":"/api-reference/connectors/disable-connector"},{"title":"Pause connector","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/pause","href":"/api-reference/connectors/pause-connector"},{"title":"Resume connector","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/resume","href":"/api-reference/connectors/resume-connector"},{"title":"Replace connector credential","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v0/connectors/{connector_id}/credential","href":"/api-reference/connectors/replace-connector-credential"},{"title":"Change connector schedule","deprecated":null,"version":null,"openapi":"/openapi.yaml put /v0/connectors/{connector_id}/schedule","href":"/api-reference/connectors/change-connector-schedule"},{"title":"Request connector run","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connectors/{connector_id}/runs","href":"/api-reference/connectors/request-connector-run"}]},{"group":"Connector webhooks","pages":[{"title":"Relay connector challenge","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connector-webhooks/{connector_id}","href":"/api-reference/connector-webhooks/relay-connector-challenge"},{"title":"Relay connector delivery","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/connector-webhooks/{connector_id}","href":"/api-reference/connector-webhooks/relay-connector-delivery"}]},{"group":"Connector kinds","pages":[{"title":"List connector kinds","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/connector-kinds","href":"/api-reference/connector-kinds/list-connector-kinds"}]},{"group":"Admin","pages":[{"title":"List audit events","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/audit","href":"/api-reference/admin/list-audit-events"},{"title":"List plugin registrations","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/plugins","href":"/api-reference/admin/list-plugin-registrations"},{"title":"Register plugin","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/plugins","href":"/api-reference/admin/register-plugin"},{"title":"Get plugin registration","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/plugins/{registration_id}","href":"/api-reference/admin/get-plugin-registration"},{"title":"Activate plugin","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/plugins/{registration_id}/activate","href":"/api-reference/admin/activate-plugin"},{"title":"Get pipeline plan","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/plugins/plans/{plan_id}","href":"/api-reference/admin/get-pipeline-plan"},{"title":"List pipeline plans","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/plugins/plans","href":"/api-reference/admin/list-pipeline-plans"},{"title":"Request backfill","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/backfills","href":"/api-reference/admin/request-backfill"},{"title":"Promote vector space","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/spaces/{vector_space_id}/promote","href":"/api-reference/admin/promote-vector-space"},{"title":"Get queue backlog","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/queues","href":"/api-reference/admin/get-queue-backlog"},{"title":"List quarantined versions","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/quarantine","href":"/api-reference/admin/list-quarantined-versions"},{"title":"Reprocess quarantine","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/quarantine/reprocess","href":"/api-reference/admin/reprocess-quarantine"},{"title":"Migrate subscription evaluators","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/subscriptions/evaluator-migrations","href":"/api-reference/admin/migrate-subscription-evaluators"},{"title":"List evaluation backlog","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/subscriptions/evaluation-backlog","href":"/api-reference/admin/list-evaluation-backlog"},{"title":"Retire evaluations","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/subscriptions/evaluation-retirements","href":"/api-reference/admin/retire-evaluations"},{"title":"Get evaluation retirement","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/subscriptions/evaluation-retirements/{retirement_id}","href":"/api-reference/admin/get-evaluation-retirement"},{"title":"Rollback pipeline plan","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/admin/plugins/plan/rollback","href":"/api-reference/admin/rollback-pipeline-plan"},{"title":"Get active pipeline plan","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/plugins/plan","href":"/api-reference/admin/get-active-pipeline-plan"},{"title":"List active plugins","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/active-plugins","href":"/api-reference/admin/list-active-plugins"},{"title":"List admin documents","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/documents","href":"/api-reference/admin/list-admin-documents"},{"title":"Get document timeline","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/documents/{version_id}/timeline","href":"/api-reference/admin/get-document-timeline"},{"title":"Count accepted and refused pushes per source instance","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/connector-pushes","href":"/api-reference/admin/count-accepted-and-refused-pushes-per-source-instance"},{"title":"Get plugin call stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/plugins","href":"/api-reference/admin/get-plugin-call-stats"},{"title":"Get search stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/searches","href":"/api-reference/admin/get-search-stats"},{"title":"Get step stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/steps","href":"/api-reference/admin/get-step-stats"},{"title":"Get received stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/received","href":"/api-reference/admin/get-received-stats"},{"title":"Get match stats","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/matches","href":"/api-reference/admin/get-match-stats"},{"title":"Get top queries","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/admin/stats/top-queries","href":"/api-reference/admin/get-top-queries"}]},{"group":"Search","pages":[{"title":"Search records","deprecated":null,"version":null,"openapi":"/openapi.yaml post /v0/search","href":"/api-reference/search/search-records"},{"title":"List search profiles","deprecated":null,"version":null,"openapi":"/openapi.yaml get /v0/search/profiles","href":"/api-reference/search/list-search-profiles"}]},{"group":"Webhooks","pages":[{"title":"Receive monitoring notification","version":null,"deprecated":null,"openapi":"/openapi.yaml webhook monitoringNotification","href":"/api-reference/webhooks/receive-monitoring-notification"}]}]},{"group":"Command line","pages":[{"title":"Command-line reference","href":"/reference/cli"},{"title":"MCP reference","href":"/reference/mcp"}]},{"group":"Plugins","pages":[{"title":"Plugin manifest","href":"/reference/plugin-manifest"},{"title":"Plugin protocol","href":"/reference/plugin-protocol"}]},{"group":"Deployment","pages":[{"title":"Configuration","href":"/reference/configuration"}]}]}]},"basePath":"","title":"Configure retrieval - Quivr","buildId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","deploymentId":"dpl_G2Qd45vZZ7MkBiGF9yYx8ZsbbKXX","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-NXj-Rqjv.js","utils-m0thOP-_.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-D13EKcfm.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema--XTdfsEb.js","snippetPresets-D3s4lmAH.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-ChURybxL.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DL8CiXq2.js","shallow-DI2-YB2E.js","getApiPlaygroundDisplay-DxbW7b_y.js","CodeSnippet-CiNYS0pP.js","CodeSnippets-BT87bThu.js","Page-DSpdRuhM.js","getPastedJson-F_g_IrFQ.js","icon-CCIG5BAs.js","MethodPill-DY3E0jwx.js","DuplicateIcon-BN88xnEg.js","createIcon-VCCc5HO5.js","DynamicMarkdown-CaSwclgK.js","SectionHeading-DXV8nWhc.js","axios-vUo_bRtp.js","Markdown-CV32Re6G.js","clsx-5ydLOnhV.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-pFDdfjRe.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BUGO5bPJ.js"]}