Mixpeek API key, sent as Authorization: Bearer mxp_sk_.... Create one in Studio under Settings → API Keys, or with an admin key via POST /v1/organizations/users/{user_email}/api-keys. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.
Namespace id (ns_...), not the namespace name. This scopes the request rather than authenticating it, and it is required on every operation marked x-mixpeek-namespace-scoped.
Body
application/json
Keys this body does not declare are refused with 422 extra_forbidden naming the accepted keys (since 2026-11-02).
Create a clustering job for one or more collections.
Makes this a composite cluster: it groups the centroids of these clusters' runs instead of documents. Each id must be a vector cluster in this namespace with the same feature_uris as this one. Executing a composite cluster without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition (a partition is a run's filters). Vector clusters only.
Optional filters to pre-filter documents before clustering (same format as list documents). Applied during the vector store scroll before parquet export. Useful for clustering subsets like: status='active', category='electronics', etc.
Optional configuration for LLM-based cluster labeling. When provided with enabled=True, clusters will have semantic labels generated by LLM instead of generic labels like 'Cluster 0'. When not provided or enabled=False, uses fallback labels.
If True, cluster results are written back to source collection(s) in-place instead of creating new output collections. Documents will be enriched with cluster_id, cluster_label, distance_to_centroid, and optionally other metadata. Similar to taxonomy enrichment pattern.
Configuration for source collection enrichment (only used if enrich_source_collection=True). Controls which fields are added to source documents and field naming conventions.
Automatically execute this cluster whenever a batch completes on any of its input collections. When True, a ClusterApplicationConfig entry is added to each input collection's cluster_applications field at creation time. The cluster will then auto-trigger after each batch completion (subject to cooldown and document threshold). When False (default), the cluster must be executed manually via the API.
Minimum number of documents required before auto-executing cluster. Only used when auto_execute_on_batch=True. If the collection has fewer documents than this threshold, clustering is skipped.
Set on a composite cluster: the clusters whose run centroids it groups. Executing it without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition.
Automatically learned feature weights (when multi_feature_strategy='weighted'). Keys are feature URIs, values are learned weights. Only populated after clustering execution completes.
Clustering quality score from weight learning (e.g., silhouette score). Only populated when multi_feature_strategy='weighted' and weights were learned.
Stored post-HDBSCAN face-identity merge config. Populated from vector_config.face_cluster_merge at cluster creation and replayed into ClusteringConfig on every execute. Only applies to vector clustering.
Stored per-execution document cap. Populated from vector_config.sample_size at cluster creation and replayed into ClusteringConfig on every POST /v1/clusters/{id}/execute so re-runs stay consistent with the original config. When None, the export is uncapped (bounded by the engine's 100,000 safety limit). Only applies to vector clustering.
Stored layout-stability mode from vector_config.layout_stability. Replayed into ClusteringConfig on every execute. When unset, executions default to 'align' (keep the map stable across runs via post-hoc registration).
Collection IDs where cluster documents are stored. Each holds one centroid document (is_centroid=true) per cluster and one member document (is_centroid=false) per clustered source document. A member carries cluster_id, cluster_label and source_document_id, the ID of the document you clustered, so filter on source_document_id to find a source document's cluster. For single output: list with one collection ID. For per-feature output: list with one collection ID per feature. With enrich_source_collection=true no output collection is created: this lists the source collections, and each source document carries its assignment as fields.
Clustering quality metrics (silhouette_score, davies_bouldin_score, calinski_harabasz_score, etc.). Open diagnostic bag like ClusteringResult.metrics: mostly numeric, but the three-state degenerate flag (False | reason string) and its prose degenerate_detail are non-numeric, so the value type is Any. A float-only type 400'd every GET on a cluster whose run flagged a degenerate result ('s read-path sibling: the write side persisted the string, this read side then rejected it).
List of errors encountered during LLM labeling (if any). Stored in MongoDB cluster metadata only, NOT in vector store cluster documents. Used to track LLM failures while allowing fallback labels to work.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Mixpeek","colors":{"primary":"#FC5185","light":"#FFA0BD","dark":"#364F6B"},"logo":{"light":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f","dark":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/dark.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=e18979c495dbd68be4fc44473098773e"},"favicon":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/favicon.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=8be5d2f6dc7e4cb44127a0493d57cde1","api":{"openapi":"api-reference/openapi.json","mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":["https://api.mixpeek.com"]}},"background":{"image":"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/images/background.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=a68d0aa9f5eba448bcf67f5f410a6c90","color":{"dark":"#121212"}},"navbar":{"links":[{"href":"https://mixpeek.com/contact","label":"Talk to Engineers"}],"primary":{"type":"button","label":"Use Mixpeek","href":"https://studio.mixpeek.com/?utm_source=docs\u0026utm_medium=docs_navbar\u0026utm_campaign=mvs_onramp"}},"footer":{"socials":{"website":"https://mixpeek.com/","github":"https://github.com/mixpeek"}},"integrations":{"posthog":{"apiKey":"phc_x1G3IrW97qXoodTPWbyBK8dbZ3H7x5k5aZPCXmRvuWw","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["view","claude","chatgpt","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mixpeek","hasAudioNarration":false,"actualSubdomain":"mixpeek","customDomains":["docs.mixpeek.com"],"gitSource":{"type":"github","owner":"mixpeek","repo":"mixpeek","deployBranch":"main","contentDirectory":"docs","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true,"edits":false,"issues":false},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6aeff52f552e9ea17aa8eeb5","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"API Reference","count":536},{"language":"default","tag":"Documentation","count":195},{"language":"default","tag":"Advanced","count":140},{"language":"default","tag":"Administer","count":77},{"language":"default","tag":"Buckets","count":70},{"language":"default","tag":"Organization","count":62},{"language":"default","tag":"Retrievers","count":61},{"language":"default","tag":"Integrate \u0026 operate","count":59},{"language":"default","tag":"Build retrievers","count":55},{"language":"default","tag":"Apps","count":53}]},"assistantConfig":{"deflection":{"enabled":true,"email":"ethan@mixpeek.com"}},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","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":"llms-txt-v2","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":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/clusters/create-cluster","slug":"/api-reference/clusters/create-cluster","pageMetadata":{"openapi":"post /v1/clusters","title":"Create Cluster","description":"Create a new cluster configuration and output collection.\n\n This endpoint:\n 1. Creates cluster metadata\n 2. Creates output collection for cluster documents\n 3. Returns cluster metadata with output_collection_id\n\n The cluster can then be executed via POST /v1/clusters/{id}/execute","href":"/api-reference/clusters/create-cluster"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n li: \"li\",\n ol: \"ol\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Create a new cluster configuration and output collection.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"This endpoint:\"\n }), \"\\n\", _jsxs(_components.ol, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"Creates cluster metadata\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Creates output collection for cluster documents\"\n }), \"\\n\", _jsx(_components.li, {\n children: \"Returns cluster metadata with output_collection_id\"\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The cluster can then be executed via POST /v1/clusters/\", \"/execute\"]\n })]\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":{"openapi":"post /v1/clusters","title":"Create Cluster","description":"Create a new cluster configuration and output collection.\n\n This endpoint:\n 1. Creates cluster metadata\n 2. Creates output collection for cluster documents\n 3. Returns cluster metadata with output_collection_id\n\n The cluster can then be executed via POST /v1/clusters/{id}/execute","href":"/api-reference/clusters/create-cluster"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/docs/_mintlify/custom/mixpeek/fd427c04b3bf84bb/custom.js","/docs/_mintlify/custom/mixpeek/e878da59c725dc0d/scripts/test_first_touch.js"],"openApiReferenceData":{"operation":{"tags":["Clusters"],"summary":"Create Cluster","description":"Create a new cluster configuration and output collection.\n\n This endpoint:\n 1. Creates cluster metadata\n 2. Creates output collection for cluster documents\n 3. Returns cluster metadata with output_collection_id\n\n The cluster can then be executed via POST /v1/clusters/{id}/execute","operationId":"create_cluster_v1_clusters_post","parameters":[],"requestBody":"cd584ad5-3068-4f0e-811a-afd8e5815e2c","responses":{"200":"4f7f8c0d-2f2e-401f-81b1-07a609d6f4a7","400":"318633cc-6c64-4f46-996f-d2f02b936c72","401":"b4d766ea-8f63-4c22-adeb-59e7a32fb038","403":"b2967cb6-5c1a-4fb4-a42b-315a6719d8d8","404":"68b63ffe-12eb-47c8-9dff-8b93591f9c26","422":"351e1848-d945-47ed-87cc-336d4d79c1c4","429":"1a986b32-d11a-48a5-a8a6-bd4d31681e8b","500":"b63721e2-f694-494a-bfd5-6d4b4d56107a","503":"d502c597-1dd2-43e8-a351-dd4843be9903"},"x-mixpeek-plan":{"minimum_tier":null,"requires_selected_plan":false,"permissions":["write"]},"x-mixpeek-namespace-scoped":true,"security":["c57999ef-31ba-48bb-be9a-40d2b509f2cc"],"method":"post","type":"path","servers":["a3ca4d02-9041-4306-8eae-afdf7d554be4"],"path":"/v1/clusters","baseUrlOptions":["https://api.mixpeek.com"],"title":"Create Cluster","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"collection_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"collection_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Collection Ids","description":"Collections to cluster together. Required unless source_cluster_ids is set, in which case it defaults to the source clusters' input collections.","minItems":1,"uniqueKey":"collection_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Collection Ids","description":"Collections to cluster together. Required unless source_cluster_ids is set, in which case it defaults to the source clusters' input collections.","uniqueKey":"collection_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"collection_ids","typeLabel":"string[] | null"},"source_cluster_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"source_cluster_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Source Cluster Ids","description":"Makes this a composite cluster: it groups the centroids of these clusters' runs instead of documents. Each id must be a vector cluster in this namespace with the same feature_uris as this one. Executing a composite cluster without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition (a partition is a run's filters). Vector clusters only.","minItems":1,"uniqueKey":"source_cluster_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Source Cluster Ids","description":"Makes this a composite cluster: it groups the centroids of these clusters' runs instead of documents. Each id must be a vector cluster in this namespace with the same feature_uris as this one. Executing a composite cluster without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition (a partition is a run's filters). Vector clusters only.","uniqueKey":"source_cluster_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_cluster_ids","typeLabel":"string[] | null"},"cluster_name":{"oneOf":[{"type":"string","title":"Cluster Name","description":"Optional human-friendly name for the clustering job","uniqueKey":"cluster_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Cluster Name","description":"Optional human-friendly name for the clustering job","uniqueKey":"cluster_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"cluster_name","typeLabel":"string | null"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Optional description of the cluster, stored with it","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Optional description of the cluster, stored with it","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"metadata":{"oneOf":[{"type":"object","title":"Metadata","description":"Optional caller metadata, stored with the cluster","additionalProperties":true,"uniqueKey":"metadata.oneOf.0","typeLabel":"Metadata · object"},{"type":"null","title":"Metadata","description":"Optional caller metadata, stored with the cluster","uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata","typeLabel":"Metadata · object | null"},"cluster_type":{"type":"string","enum":["vector","attribute"],"title":"ClusterType","description":"Vector or attribute clustering","default":"vector","uniqueKey":"cluster_type","typeLabel":"enum\u003cstring>"},"vector_config":{"oneOf":[{"type":"object","title":"VectorBasedConfig","description":"Required when cluster_type is 'vector'","required":["clustering_method"],"example":{"algorithm_params":{"min_cluster_size":10,"min_samples":5},"clustering_method":"hdbscan","feature_uri":"mixpeek://multimodal_extractor@v1/vertex_multimodal_embedding","sample_size":1000},"properties":{"clustering_method":{"type":"string","enum":["kmeans","dbscan","hdbscan","agglomerative","spectral","gaussian_mixture","mean_shift","optics","leiden","evoc","attribute_based","auto"],"title":"ClusteringAlgorithm","description":"Clustering algorithm to use","isRequired":true,"uniqueKey":"vector_config.oneOf.0.clustering_method","typeLabel":"enum\u003cstring>"},"feature_uri":{"oneOf":[{"type":"string","title":"Feature Uri","description":"DEPRECATED: Use feature_uris instead. Canonical feature URI for the vector embedding to cluster. Format: 'mixpeek://{extractor}@{version}/{output}'. For multi-feature clustering, use feature_uris (plural) instead.","example":"mixpeek://multimodal_extractor@v1/vertex_multimodal_embedding","uniqueKey":"vector_config.oneOf.0.feature_uri.oneOf.0","typeLabel":"string"},{"type":"null","title":"Feature Uri","description":"DEPRECATED: Use feature_uris instead. Canonical feature URI for the vector embedding to cluster. Format: 'mixpeek://{extractor}@{version}/{output}'. For multi-feature clustering, use feature_uris (plural) instead.","example":"mixpeek://multimodal_extractor@v1/vertex_multimodal_embedding","uniqueKey":"vector_config.oneOf.0.feature_uri.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.feature_uri","typeLabel":"string | null"},"feature_uris":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"vector_config.oneOf.0.feature_uris.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Feature Uris","description":"RECOMMENDED. List of feature URIs to cluster. Format: 'mixpeek://{extractor}@{version}/{output}'. For single-feature clustering, provide a list with one element. For multi-feature clustering, provide multiple feature URIs. Each feature must exist in all input collections.","minItems":1,"example":["mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1"],"uniqueKey":"vector_config.oneOf.0.feature_uris.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Feature Uris","description":"RECOMMENDED. List of feature URIs to cluster. Format: 'mixpeek://{extractor}@{version}/{output}'. For single-feature clustering, provide a list with one element. For multi-feature clustering, provide multiple feature URIs. Each feature must exist in all input collections.","example":["mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1"],"uniqueKey":"vector_config.oneOf.0.feature_uris.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.feature_uris","typeLabel":"string[] | null"},"feature_extractor_name":{"oneOf":[{"type":"string","title":"Feature Extractor Name","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.feature_extractor_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Feature Extractor Name","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.feature_extractor_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.feature_extractor_name","typeLabel":"string | null"},"version":{"oneOf":[{"type":"string","title":"Version","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.version.oneOf.0","typeLabel":"string"},{"type":"null","title":"Version","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.version.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.version","typeLabel":"string | null"},"output_name":{"oneOf":[{"type":"string","title":"Output Name","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.output_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Output Name","description":"Internal field populated from feature_uri. Do not set manually.","uniqueKey":"vector_config.oneOf.0.output_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.output_name","typeLabel":"string | null"},"sample_size":{"oneOf":[{"type":"integer","title":"Sample Size","description":"Number of samples to use for clustering. If not set, defaults are applied per algorithm to prevent out-of-memory: HDBSCAN/DBSCAN/OPTICS: 50,000 (O(N²) memory), Spectral/Agglomerative: 50,000, KMeans/GaussianMixture/MeanShift: 100,000. KMeans/GMM hard max: 1,000,000; O(N²) algorithms: 100,000.","maximum":1000000,"uniqueKey":"vector_config.oneOf.0.sample_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Sample Size","description":"Number of samples to use for clustering. If not set, defaults are applied per algorithm to prevent out-of-memory: HDBSCAN/DBSCAN/OPTICS: 50,000 (O(N²) memory), Spectral/Agglomerative: 50,000, KMeans/GaussianMixture/MeanShift: 100,000. KMeans/GMM hard max: 1,000,000; O(N²) algorithms: 100,000.","uniqueKey":"vector_config.oneOf.0.sample_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.sample_size","typeLabel":"integer | null"},"kmeans_parameters":{"oneOf":[{"type":"object","title":"KMeansParams","description":"Parameters for K-Means clustering algorithm.","properties":{"n_clusters":{"type":"integer","maximum":1000,"minimum":2,"title":"N Clusters","description":"Number of clusters to form","default":8,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.n_clusters","typeLabel":"integer"},"max_iter":{"type":"integer","maximum":10000,"minimum":1,"title":"Max Iter","description":"Maximum number of iterations","default":300,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.max_iter","typeLabel":"integer"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.random_state","typeLabel":"integer | null"},"n_init":{"type":"integer","minimum":1,"title":"N Init","description":"Number of times k-means will run with different centroid seeds","default":10,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.n_init","typeLabel":"integer"},"tol":{"type":"number","exclusiveMinimum":0,"title":"Tol","description":"Tolerance for convergence","default":0.0001,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.tol","typeLabel":"number"},"init":{"type":"string","title":"Init","description":"Method for initialization ('k-means++' or 'random')","default":"k-means++","uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.init","typeLabel":"string"},"verbose":{"type":"integer","minimum":0,"title":"Verbose","description":"Verbosity mode","default":0,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.verbose","typeLabel":"integer"},"copy_x":{"type":"boolean","title":"Copy X","description":"If True, the original data is not modified","default":true,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.copy_x","typeLabel":"boolean"},"algorithm":{"type":"string","title":"Algorithm","description":"K-means algorithm to use ('lloyd', 'elkan', or 'auto')","default":"lloyd","uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0.algorithm","typeLabel":"string"}},"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.0","typeLabel":"KMeansParams · object"},{"type":"object","title":"Kmeans Parameters","description":"Parameters for K-means clustering (deprecated, use algorithm_params)","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.1","typeLabel":"Kmeans Parameters · object"},{"type":"null","title":"Kmeans Parameters","description":"Parameters for K-means clustering (deprecated, use algorithm_params)","uniqueKey":"vector_config.oneOf.0.kmeans_parameters.oneOf.2","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.kmeans_parameters","typeLabel":"KMeansParams · object | Kmeans Parameters · object | null"},"dbscan_parameters":{"oneOf":[{"type":"object","title":"DBSCANParams","description":"Parameters for DBSCAN clustering algorithm.","properties":{"eps":{"type":"number","exclusiveMinimum":0,"title":"Eps","description":"Maximum distance between two samples for one to be considered in the neighborhood of the other","default":0.5,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.eps","typeLabel":"number"},"min_samples":{"type":"integer","minimum":1,"title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point","default":5,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.min_samples","typeLabel":"integer"},"metric":{"type":"string","title":"Metric","description":"Metric to use for distance computation","default":"euclidean","uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.metric","typeLabel":"string"},"metric_params":{"additionalProperties":true,"type":"object","title":"Metric Params","description":"Additional keyword arguments for the metric function","uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.metric_params","typeLabel":"Metric Params · object"},"algorithm":{"type":"string","title":"Algorithm","description":"Algorithm to compute pointwise distances and find nearest neighbors ('auto', 'ball_tree', 'kd_tree', 'brute')","default":"auto","uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.algorithm","typeLabel":"string"},"leaf_size":{"type":"integer","minimum":1,"title":"Leaf Size","description":"Leaf size passed to BallTree or KDTree","default":30,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.leaf_size","typeLabel":"integer"},"p":{"type":"number","exclusiveMinimum":0,"title":"P","description":"The power of the Minkowski metric to be used to calculate distance between points","default":2,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.p","typeLabel":"number"},"n_jobs":{"type":"integer","title":"N Jobs","description":"The number of parallel jobs to run (-1 means using all processors)","default":1,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0.n_jobs","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.0","typeLabel":"DBSCANParams · object"},{"type":"object","title":"Dbscan Parameters","description":"Parameters for DBSCAN clustering (deprecated, use algorithm_params)","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.1","typeLabel":"Dbscan Parameters · object"},{"type":"null","title":"Dbscan Parameters","description":"Parameters for DBSCAN clustering (deprecated, use algorithm_params)","uniqueKey":"vector_config.oneOf.0.dbscan_parameters.oneOf.2","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.dbscan_parameters","typeLabel":"DBSCANParams · object | Dbscan Parameters · object | null"},"hdbscan_parameters":{"oneOf":[{"type":"object","title":"HDBSCANParams","description":"Parameters for HDBSCAN clustering algorithm.","properties":{"min_cluster_size":{"type":"integer","minimum":2,"title":"Min Cluster Size","description":"Minimum number of samples in a cluster","default":5,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.min_cluster_size","typeLabel":"integer"},"min_samples":{"oneOf":[{"type":"integer","title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point. Defaults to min_cluster_size if None","minimum":1,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.min_samples.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point. Defaults to min_cluster_size if None","uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.min_samples.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.min_samples","typeLabel":"integer | null"},"cluster_selection_epsilon":{"type":"number","minimum":0,"title":"Cluster Selection Epsilon","description":"A distance threshold for cluster selection. Clusters below this value will be merged","default":0,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.cluster_selection_epsilon","typeLabel":"number"},"max_cluster_size":{"oneOf":[{"type":"integer","title":"Max Cluster Size","description":"Maximum number of samples in a cluster. Clusters above this size will be split","minimum":1,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.max_cluster_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Cluster Size","description":"Maximum number of samples in a cluster. Clusters above this size will be split","uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.max_cluster_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.max_cluster_size","typeLabel":"integer | null"},"metric":{"type":"string","title":"Metric","description":"Metric to use for distance computation","default":"euclidean","uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.metric","typeLabel":"string"},"alpha":{"type":"number","exclusiveMinimum":0,"title":"Alpha","description":"A distance scaling parameter","default":1,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.alpha","typeLabel":"number"},"cluster_selection_method":{"type":"string","title":"Cluster Selection Method","description":"Method to select clusters from the condensed tree ('eom' or 'leaf')","default":"eom","uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.cluster_selection_method","typeLabel":"string"},"allow_single_cluster":{"type":"boolean","title":"Allow Single Cluster","description":"Allow HDBSCAN to find only a single cluster","default":false,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.allow_single_cluster","typeLabel":"boolean"},"prediction_data":{"type":"boolean","title":"Prediction Data","description":"Whether to generate extra data for predicting cluster membership","default":false,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.prediction_data","typeLabel":"boolean"},"match_reference_implementation":{"type":"boolean","title":"Match Reference Implementation","description":"Whether to match the reference implementation exactly","default":false,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0.match_reference_implementation","typeLabel":"boolean"}},"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.0","typeLabel":"HDBSCANParams · object"},{"type":"object","title":"Hdbscan Parameters","description":"Parameters for HDBSCAN clustering (deprecated, use algorithm_params)","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.1","typeLabel":"Hdbscan Parameters · object"},{"type":"null","title":"Hdbscan Parameters","description":"Parameters for HDBSCAN clustering (deprecated, use algorithm_params)","uniqueKey":"vector_config.oneOf.0.hdbscan_parameters.oneOf.2","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.hdbscan_parameters","typeLabel":"HDBSCANParams · object | Hdbscan Parameters · object | null"},"algorithm_params":{"oneOf":[{"type":"object","title":"KMeansParams","description":"Parameters for K-Means clustering algorithm.","properties":{"n_clusters":{"type":"integer","maximum":1000,"minimum":2,"title":"N Clusters","description":"Number of clusters to form","default":8,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.n_clusters","typeLabel":"integer"},"max_iter":{"type":"integer","maximum":10000,"minimum":1,"title":"Max Iter","description":"Maximum number of iterations","default":300,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.max_iter","typeLabel":"integer"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.random_state","typeLabel":"integer | null"},"n_init":{"type":"integer","minimum":1,"title":"N Init","description":"Number of times k-means will run with different centroid seeds","default":10,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.n_init","typeLabel":"integer"},"tol":{"type":"number","exclusiveMinimum":0,"title":"Tol","description":"Tolerance for convergence","default":0.0001,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.tol","typeLabel":"number"},"init":{"type":"string","title":"Init","description":"Method for initialization ('k-means++' or 'random')","default":"k-means++","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.init","typeLabel":"string"},"verbose":{"type":"integer","minimum":0,"title":"Verbose","description":"Verbosity mode","default":0,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.verbose","typeLabel":"integer"},"copy_x":{"type":"boolean","title":"Copy X","description":"If True, the original data is not modified","default":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.copy_x","typeLabel":"boolean"},"algorithm":{"type":"string","title":"Algorithm","description":"K-means algorithm to use ('lloyd', 'elkan', or 'auto')","default":"lloyd","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0.algorithm","typeLabel":"string"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.0","typeLabel":"KMeansParams · object"},{"type":"object","title":"DBSCANParams","description":"Parameters for DBSCAN clustering algorithm.","properties":{"eps":{"type":"number","exclusiveMinimum":0,"title":"Eps","description":"Maximum distance between two samples for one to be considered in the neighborhood of the other","default":0.5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.eps","typeLabel":"number"},"min_samples":{"type":"integer","minimum":1,"title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point","default":5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.min_samples","typeLabel":"integer"},"metric":{"type":"string","title":"Metric","description":"Metric to use for distance computation","default":"euclidean","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.metric","typeLabel":"string"},"metric_params":{"additionalProperties":true,"type":"object","title":"Metric Params","description":"Additional keyword arguments for the metric function","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.metric_params","typeLabel":"Metric Params · object"},"algorithm":{"type":"string","title":"Algorithm","description":"Algorithm to compute pointwise distances and find nearest neighbors ('auto', 'ball_tree', 'kd_tree', 'brute')","default":"auto","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.algorithm","typeLabel":"string"},"leaf_size":{"type":"integer","minimum":1,"title":"Leaf Size","description":"Leaf size passed to BallTree or KDTree","default":30,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.leaf_size","typeLabel":"integer"},"p":{"type":"number","exclusiveMinimum":0,"title":"P","description":"The power of the Minkowski metric to be used to calculate distance between points","default":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.p","typeLabel":"number"},"n_jobs":{"type":"integer","title":"N Jobs","description":"The number of parallel jobs to run (-1 means using all processors)","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1.n_jobs","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.1","typeLabel":"DBSCANParams · object"},{"type":"object","title":"HDBSCANParams","description":"Parameters for HDBSCAN clustering algorithm.","properties":{"min_cluster_size":{"type":"integer","minimum":2,"title":"Min Cluster Size","description":"Minimum number of samples in a cluster","default":5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.min_cluster_size","typeLabel":"integer"},"min_samples":{"oneOf":[{"type":"integer","title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point. Defaults to min_cluster_size if None","minimum":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.min_samples.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point. Defaults to min_cluster_size if None","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.min_samples.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.min_samples","typeLabel":"integer | null"},"cluster_selection_epsilon":{"type":"number","minimum":0,"title":"Cluster Selection Epsilon","description":"A distance threshold for cluster selection. Clusters below this value will be merged","default":0,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.cluster_selection_epsilon","typeLabel":"number"},"max_cluster_size":{"oneOf":[{"type":"integer","title":"Max Cluster Size","description":"Maximum number of samples in a cluster. Clusters above this size will be split","minimum":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.max_cluster_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Cluster Size","description":"Maximum number of samples in a cluster. Clusters above this size will be split","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.max_cluster_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.max_cluster_size","typeLabel":"integer | null"},"metric":{"type":"string","title":"Metric","description":"Metric to use for distance computation","default":"euclidean","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.metric","typeLabel":"string"},"alpha":{"type":"number","exclusiveMinimum":0,"title":"Alpha","description":"A distance scaling parameter","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.alpha","typeLabel":"number"},"cluster_selection_method":{"type":"string","title":"Cluster Selection Method","description":"Method to select clusters from the condensed tree ('eom' or 'leaf')","default":"eom","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.cluster_selection_method","typeLabel":"string"},"allow_single_cluster":{"type":"boolean","title":"Allow Single Cluster","description":"Allow HDBSCAN to find only a single cluster","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.allow_single_cluster","typeLabel":"boolean"},"prediction_data":{"type":"boolean","title":"Prediction Data","description":"Whether to generate extra data for predicting cluster membership","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.prediction_data","typeLabel":"boolean"},"match_reference_implementation":{"type":"boolean","title":"Match Reference Implementation","description":"Whether to match the reference implementation exactly","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2.match_reference_implementation","typeLabel":"boolean"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.2","typeLabel":"HDBSCANParams · object"},{"type":"object","title":"AgglomerativeParams","description":"Parameters for Agglomerative clustering algorithm.","properties":{"n_clusters":{"oneOf":[{"type":"integer","title":"N Clusters","description":"Number of clusters to find. Can be None if distance_threshold is not None","default":2,"minimum":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.n_clusters.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Clusters","description":"Number of clusters to find. Can be None if distance_threshold is not None","default":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.n_clusters.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.n_clusters","typeLabel":"integer | null"},"affinity":{"type":"string","title":"Affinity","description":"Metric used to compute linkage. Can be 'euclidean', 'l1', 'l2', 'manhattan', 'cosine', or 'precomputed'","default":"euclidean","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.affinity","typeLabel":"string"},"memory":{"oneOf":[{"type":"string","title":"Memory","description":"Path to the caching directory","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.memory.oneOf.0","typeLabel":"string"},{"type":"null","title":"Memory","description":"Path to the caching directory","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.memory.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.memory","typeLabel":"string | null"},"connectivity":{"oneOf":[{"title":"Connectivity","description":"Connectivity matrix. Defines which samples are neighbors","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.connectivity.oneOf.0","typeLabel":"any"},{"type":"null","title":"Connectivity","description":"Connectivity matrix. Defines which samples are neighbors","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.connectivity.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.connectivity","typeLabel":"any | null"},"compute_full_tree":{"type":"string","title":"Compute Full Tree","description":"Whether to compute the full tree ('auto', True, or False)","default":"auto","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.compute_full_tree","typeLabel":"string"},"linkage":{"type":"string","title":"Linkage","description":"Linkage criterion ('ward', 'complete', 'average', 'single')","default":"ward","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.linkage","typeLabel":"string"},"distance_threshold":{"oneOf":[{"type":"number","title":"Distance Threshold","description":"The linkage distance threshold above which clusters will not be merged","minimum":0,"exclusiveMinimum":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.distance_threshold.oneOf.0","typeLabel":"number"},{"type":"null","title":"Distance Threshold","description":"The linkage distance threshold above which clusters will not be merged","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.distance_threshold.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.distance_threshold","typeLabel":"number | null"},"compute_distances":{"type":"boolean","title":"Compute Distances","description":"Whether to compute distances between clusters","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3.compute_distances","typeLabel":"boolean"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.3","typeLabel":"AgglomerativeParams · object"},{"type":"object","title":"SpectralParams","description":"Parameters for Spectral clustering algorithm.","properties":{"n_clusters":{"type":"integer","minimum":2,"title":"N Clusters","description":"Number of clusters to form","default":8,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_clusters","typeLabel":"integer"},"eigen_solver":{"oneOf":[{"type":"string","title":"Eigen Solver","description":"The eigenvalue decomposition strategy ('arpack', 'lobpcg', 'amg', or None)","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.eigen_solver.oneOf.0","typeLabel":"string"},{"type":"null","title":"Eigen Solver","description":"The eigenvalue decomposition strategy ('arpack', 'lobpcg', 'amg', or None)","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.eigen_solver.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.eigen_solver","typeLabel":"string | null"},"n_components":{"oneOf":[{"type":"integer","title":"N Components","description":"Number of eigenvectors to use for spectral embedding","minimum":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_components.oneOf.0","typeLabel":"integer"},{"type":"null","title":"N Components","description":"Number of eigenvectors to use for spectral embedding","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_components.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_components","typeLabel":"integer | null"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.random_state","typeLabel":"integer | null"},"n_init":{"type":"integer","minimum":1,"title":"N Init","description":"Number of times k-means will run with different centroid seeds","default":10,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_init","typeLabel":"integer"},"gamma":{"type":"number","exclusiveMinimum":0,"title":"Gamma","description":"Kernel coefficient for rbf, poly, sigmoid, laplacian and chi2 kernels","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.gamma","typeLabel":"number"},"affinity":{"type":"string","title":"Affinity","description":"How to construct the affinity matrix ('nearest_neighbors', 'rbf', 'precomputed', 'precomputed_nearest_neighbors')","default":"rbf","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.affinity","typeLabel":"string"},"n_neighbors":{"type":"integer","minimum":1,"title":"N Neighbors","description":"Number of neighbors to use when constructing the affinity matrix using nearest neighbors","default":10,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_neighbors","typeLabel":"integer"},"eigen_tol":{"type":"number","minimum":0,"title":"Eigen Tol","description":"Stopping criterion for eigendecomposition","default":0,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.eigen_tol","typeLabel":"number"},"assign_labels":{"type":"string","title":"Assign Labels","description":"Strategy to assign labels in the embedding space ('kmeans' or 'discretize')","default":"kmeans","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.assign_labels","typeLabel":"string"},"degree":{"type":"number","title":"Degree","description":"Degree of the polynomial kernel. Ignored by other kernels","default":3,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.degree","typeLabel":"number"},"coef0":{"type":"number","title":"Coef0","description":"Zero coefficient for polynomial and sigmoid kernels","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.coef0","typeLabel":"number"},"kernel_params":{"oneOf":[{"type":"object","title":"Kernel Params","description":"Parameters for the kernel function","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.kernel_params.oneOf.0","typeLabel":"Kernel Params · object"},{"type":"null","title":"Kernel Params","description":"Parameters for the kernel function","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.kernel_params.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.kernel_params","typeLabel":"Kernel Params · object | null"},"n_jobs":{"type":"integer","title":"N Jobs","description":"Number of parallel jobs to run (-1 means using all processors)","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.n_jobs","typeLabel":"integer"},"verbose":{"type":"boolean","title":"Verbose","description":"Verbosity mode","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4.verbose","typeLabel":"boolean"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.4","typeLabel":"SpectralParams · object"},{"type":"object","title":"GaussianMixtureParams","description":"Parameters for Gaussian Mixture Model clustering.","properties":{"n_components":{"type":"integer","minimum":1,"title":"N Components","description":"Number of mixture components","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.n_components","typeLabel":"integer"},"covariance_type":{"type":"string","title":"Covariance Type","description":"Type of covariance parameters ('full', 'tied', 'diag', 'spherical')","default":"full","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.covariance_type","typeLabel":"string"},"tol":{"type":"number","exclusiveMinimum":0,"title":"Tol","description":"Convergence threshold","default":0.001,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.tol","typeLabel":"number"},"reg_covar":{"type":"number","minimum":0,"title":"Reg Covar","description":"Regularization added to the diagonal of covariance","default":0.000001,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.reg_covar","typeLabel":"number"},"max_iter":{"type":"integer","minimum":1,"title":"Max Iter","description":"Maximum number of EM iterations","default":100,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.max_iter","typeLabel":"integer"},"n_init":{"type":"integer","minimum":1,"title":"N Init","description":"Number of initializations to perform","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.n_init","typeLabel":"integer"},"init_params":{"type":"string","title":"Init Params","description":"Method used to initialize weights, means and covariances ('kmeans' or 'random')","default":"kmeans","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.init_params","typeLabel":"string"},"weights_init":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.weights_init.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Weights Init","description":"Initial weights","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.weights_init.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Weights Init","description":"Initial weights","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.weights_init.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.weights_init","typeLabel":"any[] | null"},"means_init":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.means_init.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Means Init","description":"Initial means","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.means_init.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Means Init","description":"Initial means","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.means_init.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.means_init","typeLabel":"any[] | null"},"precisions_init":{"oneOf":[{"type":"array","items":{"oneOf":[{}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.precisions_init.oneOf.0.items.[INDEX]","typeLabel":"any"},"title":"Precisions Init","description":"Initial precisions","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.precisions_init.oneOf.0","typeLabel":"any[]"},{"type":"null","title":"Precisions Init","description":"Initial precisions","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.precisions_init.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.precisions_init","typeLabel":"any[] | null"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducibility","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.random_state","typeLabel":"integer | null"},"warm_start":{"type":"boolean","title":"Warm Start","description":"If True, use the solution of the last fit as initialization","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.warm_start","typeLabel":"boolean"},"verbose":{"type":"integer","minimum":0,"title":"Verbose","description":"Enable verbose output","default":0,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.verbose","typeLabel":"integer"},"verbose_interval":{"type":"integer","minimum":1,"title":"Verbose Interval","description":"Number of iterations between each verbose message","default":10,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5.verbose_interval","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.5","typeLabel":"GaussianMixtureParams · object"},{"type":"object","title":"MeanShiftParams","description":"Parameters for Mean Shift clustering algorithm.","properties":{"bandwidth":{"oneOf":[{"type":"number","title":"Bandwidth","description":"Bandwidth used in the RBF kernel. If None, estimated using sklearn.cluster.estimate_bandwidth","minimum":0,"exclusiveMinimum":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.bandwidth.oneOf.0","typeLabel":"number"},{"type":"null","title":"Bandwidth","description":"Bandwidth used in the RBF kernel. If None, estimated using sklearn.cluster.estimate_bandwidth","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.bandwidth.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.bandwidth","typeLabel":"number | null"},"bandwidth_quantile":{"type":"number","maximum":1,"exclusiveMinimum":0,"title":"Bandwidth Quantile","description":"Quantile of pairwise distances used to estimate bandwidth when bandwidth is None. sklearn's own default of 0.3 merges every cluster into one on embedding data: with k equally sized clusters only 1/k of pairs are within-cluster, so a quantile above 1/k measures the distance BETWEEN clusters. 0.1 suits up to roughly ten clusters; lower it if you expect more.","default":0.1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.bandwidth_quantile","typeLabel":"number"},"seeds":{"oneOf":[{"type":"array","items":{"items":{"type":"number","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.seeds.oneOf.0.items.[INDEX].items.[INDEX]","typeLabel":"number"},"type":"array","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.seeds.oneOf.0.items.[INDEX]","typeLabel":"number[]"},"title":"Seeds","description":"Seeds used to initialize kernels. If None, all points are used as seeds","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.seeds.oneOf.0","typeLabel":"number[][]"},{"type":"null","title":"Seeds","description":"Seeds used to initialize kernels. If None, all points are used as seeds","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.seeds.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.seeds","typeLabel":"number[][] | null"},"bin_seeding":{"type":"boolean","title":"Bin Seeding","description":"If true, initial kernel locations are discretized into a grid to speed up algorithm","default":false,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.bin_seeding","typeLabel":"boolean"},"min_bin_freq":{"type":"integer","minimum":1,"title":"Min Bin Freq","description":"Minimum number of seeds within a bin for the bin to be considered","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.min_bin_freq","typeLabel":"integer"},"cluster_all":{"type":"boolean","title":"Cluster All","description":"If true, all points are clustered, even orphans. If false, orphans are given label -1","default":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.cluster_all","typeLabel":"boolean"},"n_jobs":{"type":"integer","title":"N Jobs","description":"Number of parallel jobs to run (-1 means using all processors)","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.n_jobs","typeLabel":"integer"},"max_iter":{"type":"integer","minimum":1,"title":"Max Iter","description":"Maximum number of iterations per seed point before the algorithm stops","default":300,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6.max_iter","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.6","typeLabel":"MeanShiftParams · object"},{"type":"object","title":"OPTICSParams","description":"Parameters for OPTICS clustering algorithm.","properties":{"min_samples":{"type":"integer","minimum":2,"title":"Min Samples","description":"Number of samples in a neighborhood for a point to be considered a core point","default":5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.min_samples","typeLabel":"integer"},"max_eps":{"oneOf":[{"type":"number","title":"Max Eps","description":"Maximum distance between two samples. Default (None) means no maximum distance","minimum":0,"exclusiveMinimum":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.max_eps.oneOf.0","typeLabel":"number"},{"type":"null","title":"Max Eps","description":"Maximum distance between two samples. Default (None) means no maximum distance","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.max_eps.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.max_eps","typeLabel":"number | null"},"metric":{"type":"string","title":"Metric","description":"Metric to use for distance computation","default":"minkowski","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.metric","typeLabel":"string"},"p":{"type":"number","exclusiveMinimum":0,"title":"P","description":"Parameter for the Minkowski metric","default":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.p","typeLabel":"number"},"metric_params":{"oneOf":[{"type":"object","title":"Metric Params","description":"Additional keyword arguments for the metric function","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.metric_params.oneOf.0","typeLabel":"Metric Params · object"},{"type":"null","title":"Metric Params","description":"Additional keyword arguments for the metric function","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.metric_params.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.metric_params","typeLabel":"Metric Params · object | null"},"cluster_method":{"type":"string","title":"Cluster Method","description":"Method to extract clusters ('xi' or 'dbscan')","default":"xi","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.cluster_method","typeLabel":"string"},"eps":{"oneOf":[{"type":"number","title":"Eps","description":"Maximum distance for DBSCAN cluster extraction method","minimum":0,"exclusiveMinimum":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.eps.oneOf.0","typeLabel":"number"},{"type":"null","title":"Eps","description":"Maximum distance for DBSCAN cluster extraction method","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.eps.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.eps","typeLabel":"number | null"},"xi":{"type":"number","maximum":1,"minimum":0,"title":"Xi","description":"Minimum steepness on the reachability plot for cluster boundary (xi method)","default":0.05,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.xi","typeLabel":"number"},"predecessor_correction":{"type":"boolean","title":"Predecessor Correction","description":"Correct clusters based on predecessors (xi method)","default":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.predecessor_correction","typeLabel":"boolean"},"min_cluster_size":{"oneOf":[{"type":"number","title":"Min Cluster Size","description":"Minimum number of samples in a cluster. Can be a fraction if \u003c 1.0","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.min_cluster_size.oneOf.0","typeLabel":"number"},{"type":"null","title":"Min Cluster Size","description":"Minimum number of samples in a cluster. Can be a fraction if \u003c 1.0","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.min_cluster_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.min_cluster_size","typeLabel":"number | null"},"algorithm":{"type":"string","title":"Algorithm","description":"Algorithm to compute pointwise distances ('auto', 'ball_tree', 'kd_tree', 'brute')","default":"auto","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.algorithm","typeLabel":"string"},"leaf_size":{"type":"integer","minimum":1,"title":"Leaf Size","description":"Leaf size passed to BallTree or KDTree","default":30,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.leaf_size","typeLabel":"integer"},"n_jobs":{"type":"integer","title":"N Jobs","description":"Number of parallel jobs to run (-1 means using all processors)","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7.n_jobs","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.7","typeLabel":"OPTICSParams · object"},{"type":"object","title":"LeidenParams","description":"Parameters for Leiden graph community-detection clustering.","properties":{"resolution":{"type":"number","maximum":100,"exclusiveMinimum":0,"title":"Resolution","description":"Resolution for the Leiden objective. Higher values yield more, smaller communities; lower values yield fewer, larger ones. Leiden discovers the cluster count from the graph — there is no fixed n_clusters.","default":1,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.resolution","typeLabel":"number"},"n_neighbors":{"type":"integer","maximum":200,"minimum":2,"title":"N Neighbors","description":"Number of nearest neighbours per node when building the kNN graph. Larger values give a denser graph (smoother communities) at higher build cost.","default":30,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.n_neighbors","typeLabel":"integer"},"metric":{"type":"string","title":"Metric","description":"Distance metric for kNN graph construction (cosine or euclidean).","default":"cosine","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.metric","typeLabel":"string"},"min_cluster_size":{"type":"integer","minimum":0,"title":"Min Cluster Size","description":"Communities smaller than this are relabelled as noise (cluster_id -1). 0 keeps every community.","default":0,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.min_cluster_size","typeLabel":"integer"},"objective_function":{"type":"string","enum":["RBConfiguration","modularity","CPM"],"title":"Objective Function","description":"Leiden quality function. RBConfiguration and CPM honour the resolution parameter; modularity ignores it.","default":"RBConfiguration","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.objective_function","typeLabel":"enum\u003cstring>"},"n_iterations":{"type":"integer","title":"N Iterations","description":"Leiden optimisation passes. -1 runs until no further improvement; a small positive value (e.g. 2) is faster and usually sufficient.","default":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.n_iterations","typeLabel":"integer"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducible partitions.","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducible partitions.","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8.random_state","typeLabel":"integer | null"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.8","typeLabel":"LeidenParams · object"},{"type":"object","title":"EVoCParams","description":"Parameters for EVoC (Embedding Vector Oriented Clustering).","properties":{"noise_level":{"type":"number","maximum":1,"minimum":0,"title":"Noise Level","description":"How aggressively points are set aside as noise (cluster_id -1). Lower values keep more points in clusters; higher values demand denser, more confident clusters. 0.5 is a balanced default.","default":0.5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.noise_level","typeLabel":"number"},"base_min_cluster_size":{"type":"integer","minimum":2,"title":"Base Min Cluster Size","description":"Minimum number of points for a cluster at the base layer of the cluster hierarchy. Larger values create fewer, bigger clusters.","default":5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.base_min_cluster_size","typeLabel":"integer"},"approx_n_clusters":{"oneOf":[{"type":"integer","title":"Approx N Clusters","description":"Optional hint for roughly how many clusters to aim for. EVoC picks the hierarchy layer closest to this count. Leave unset to let EVoC choose the granularity from the data.","minimum":2,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.approx_n_clusters.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Approx N Clusters","description":"Optional hint for roughly how many clusters to aim for. EVoC picks the hierarchy layer closest to this count. Leave unset to let EVoC choose the granularity from the data.","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.approx_n_clusters.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.approx_n_clusters","typeLabel":"integer | null"},"n_neighbors":{"type":"integer","maximum":200,"minimum":2,"title":"N Neighbors","description":"Number of nearest neighbours per point when building the kNN graph. Larger values give a denser graph at higher build cost.","default":15,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.n_neighbors","typeLabel":"integer"},"min_samples":{"type":"integer","minimum":1,"title":"Min Samples","description":"Number of neighbouring samples for a point to be considered a core point (density estimation, as in HDBSCAN).","default":5,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.min_samples","typeLabel":"integer"},"random_state":{"oneOf":[{"type":"integer","title":"Random State","description":"Random seed for reproducible clusterings.","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.random_state.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Random State","description":"Random seed for reproducible clusterings.","default":42,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.random_state.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9.random_state","typeLabel":"integer | null"}},"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.9","typeLabel":"EVoCParams · object"},{"type":"object","title":"Algorithm Params","description":"Algorithm-specific parameters","additionalProperties":true,"uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.10","typeLabel":"Algorithm Params · object"},{"type":"null","title":"Algorithm Params","description":"Algorithm-specific parameters","uniqueKey":"vector_config.oneOf.0.algorithm_params.oneOf.11","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.algorithm_params","typeLabel":"KMeansParams · object | DBSCANParams · object | HDBSCANParams · object | AgglomerativeParams · object | SpectralParams · object | GaussianMixtureParams · object | MeanShiftParams · object | OPTICSParams · object | LeidenParams · object | EVoCParams · object | Algorithm Params · object | null"},"multi_feature_strategy":{"type":"string","enum":["concatenate","independent","weighted"],"title":"Multi Feature Strategy","description":"Strategy for handling multiple feature vectors:\n- concatenate: Combine embeddings into one vector, single clustering\n- independent: Run separate clustering per feature\n- weighted: Learn optimal feature weights","default":"concatenate","uniqueKey":"vector_config.oneOf.0.multi_feature_strategy","typeLabel":"enum\u003cstring>"},"normalize_features":{"type":"boolean","title":"Normalize Features","description":"Apply L2 normalization to each feature block before concatenation. Prevents feature dominance when combining different modalities. Only applies when multi_feature_strategy='concatenate'.","default":true,"uniqueKey":"vector_config.oneOf.0.normalize_features","typeLabel":"boolean"},"feature_weights":{"oneOf":[{"type":"object","title":"Feature Weights","description":"Optional per-feature weights (0.0-1.0) for concatenation strategy. Keys are feature URIs, values are weights. Example: {'mixpeek://text@v1/emb': 0.7, 'mixpeek://image@v1/emb': 0.3}. Defaults to equal weights (1.0) if not specified. Only applies when multi_feature_strategy='concatenate'. If multi_feature_strategy='weighted' and this is None, weights are learned automatically using weight_learning_config.","example":{"mixpeek://image_extractor@v1/embedding":0.3,"mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1":0.7},"additionalProperties":{"type":"number","uniqueKey":"vector_config.oneOf.0.feature_weights.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"vector_config.oneOf.0.feature_weights.oneOf.0","typeLabel":"Feature Weights · object"},{"type":"null","title":"Feature Weights","description":"Optional per-feature weights (0.0-1.0) for concatenation strategy. Keys are feature URIs, values are weights. Example: {'mixpeek://text@v1/emb': 0.7, 'mixpeek://image@v1/emb': 0.3}. Defaults to equal weights (1.0) if not specified. Only applies when multi_feature_strategy='concatenate'. If multi_feature_strategy='weighted' and this is None, weights are learned automatically using weight_learning_config.","example":{"mixpeek://image_extractor@v1/embedding":0.3,"mixpeek://text_extractor@v1/multilingual_e5_large_instruct_v1":0.7},"uniqueKey":"vector_config.oneOf.0.feature_weights.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.feature_weights","typeLabel":"Feature Weights · object | null"},"weight_learning_config":{"oneOf":[{"type":"object","title":"WeightLearningConfig","description":"Configuration for automatic feature weight learning. Only used when multi_feature_strategy='weighted' and feature_weights is None. If feature_weights is provided, manual weights are used instead of learning. If this is None when learning is needed, default WeightLearningConfig is used.","example":{"max_iterations":20,"method":"bayesian","metric":"silhouette","random_state":42,"sample_size":5000},"properties":{"method":{"type":"string","enum":["grid_search","bayesian"],"title":"Method","description":"Weight learning method:\n- bayesian: Gaussian process optimization (recommended, scales to 5+ features)\n- grid_search: Exhaustive search (limited to 2-3 features, simpler but slower)","default":"bayesian","examples":["bayesian","grid_search"],"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.method","typeLabel":"enum\u003cstring>"},"max_iterations":{"type":"integer","maximum":100,"minimum":5,"title":"Max Iterations","description":"Maximum optimization iterations:\n- grid_search: Number of values to try per feature (total: max_iterations^n_features)\n- bayesian: Number of weight combinations to evaluate\nRecommended: 20 for bayesian, 5 for grid_search","default":20,"examples":[20,50],"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.max_iterations","typeLabel":"integer"},"metric":{"type":"string","enum":["silhouette","davies_bouldin","calinski_harabasz"],"title":"Metric","description":"Clustering quality metric to optimize:\n- silhouette: Measures how similar points are to their cluster vs other clusters (range: [-1, 1], higher is better)\n- davies_bouldin: Ratio of within-cluster to between-cluster distances (range: [0, ∞], lower is better)\n- calinski_harabasz: Ratio of between-cluster to within-cluster variance (range: [0, ∞], higher is better)\nRecommended: silhouette (most general-purpose)","default":"silhouette","examples":["silhouette","davies_bouldin","calinski_harabasz"],"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.metric","typeLabel":"enum\u003cstring>"},"sample_size":{"oneOf":[{"type":"integer","title":"Sample Size","description":"Optional: Learn weights on a random sample (speeds up large datasets).\nIf provided and dataset has more documents, weights are learned on sample_size random documents, then applied to full dataset.\nRecommended: 5000 for datasets >10k documents","minimum":100,"example":5000,"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.sample_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Sample Size","description":"Optional: Learn weights on a random sample (speeds up large datasets).\nIf provided and dataset has more documents, weights are learned on sample_size random documents, then applied to full dataset.\nRecommended: 5000 for datasets >10k documents","example":5000,"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.sample_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.sample_size","typeLabel":"integer | null"},"random_state":{"type":"integer","title":"Random State","description":"Random seed for reproducibility of weight learning","default":42,"examples":[42],"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0.random_state","typeLabel":"integer"}},"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.0","typeLabel":"WeightLearningConfig · object"},{"type":"null","description":"Configuration for automatic feature weight learning. Only used when multi_feature_strategy='weighted' and feature_weights is None. If feature_weights is provided, manual weights are used instead of learning. If this is None when learning is needed, default WeightLearningConfig is used.","example":{"max_iterations":20,"method":"bayesian","metric":"silhouette","sample_size":5000},"uniqueKey":"vector_config.oneOf.0.weight_learning_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.weight_learning_config","typeLabel":"WeightLearningConfig · object | null"},"output_strategy":{"type":"string","enum":["single","per_feature"],"title":"Output Strategy","description":"Output collection creation strategy:\n- single: Create one collection with all feature vectors\n- per_feature: Create separate collections for each feature (for hierarchical taxonomies)","default":"single","uniqueKey":"vector_config.oneOf.0.output_strategy","typeLabel":"enum\u003cstring>"},"effective_feature_method":{"type":"string","enum":["mean","median","medoid"],"title":"Effective Feature Method","description":"Method for calculating cluster centroids:\n- mean: Average of all vectors in cluster\n- median: Median vector (robust to outliers)\n- medoid: Actual cluster member closest to centroid","default":"mean","uniqueKey":"vector_config.oneOf.0.effective_feature_method","typeLabel":"enum\u003cstring>"},"enrich_source":{"type":"boolean","title":"Enrich Source","description":"Whether to enrich source documents with cluster_id","default":false,"uniqueKey":"vector_config.oneOf.0.enrich_source","typeLabel":"boolean"},"face_cluster_merge":{"oneOf":[{"type":"object","title":"FaceClusterMergeConfig","description":"Optional post-HDBSCAN agglomerative merge pass for face identity clusters. HDBSCAN over ArcFace 512d face embeddings tends to over-split the same person across pose/lighting variants. When provided with enabled=true, two clusters merge if their centroid cosine meets the threshold AND one of the spatial signals (bbox IoU on overlapping frames, scene-id Jaccard) clears its threshold. Leave null (default) for non-face clusterings — existing behavior is preserved.","properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Run the merge pass. Set False to disable without removing the config.","default":true,"uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.enabled","typeLabel":"boolean"},"centroid_cosine_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Centroid Cosine Threshold","description":"Minimum centroid cosine similarity for a candidate merge.","default":0.55,"uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.centroid_cosine_threshold","typeLabel":"number"},"bbox_iou_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Bbox Iou Threshold","description":"Minimum bbox IoU on overlapping frames to satisfy the spatial half.","default":0.4,"uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.bbox_iou_threshold","typeLabel":"number"},"scene_jaccard_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Scene Jaccard Threshold","description":"Minimum Jaccard similarity of scene-id sets to satisfy the spatial half.","default":0.3,"uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.scene_jaccard_threshold","typeLabel":"number"},"bbox_field":{"type":"string","title":"Bbox Field","description":"Document-payload field holding the face bbox (list/tuple of 4 floats).","default":"bbox","uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.bbox_field","typeLabel":"string"},"frame_field":{"type":"string","title":"Frame Field","description":"Document-payload field holding the frame identifier used to pair bboxes.","default":"frame_number","uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.frame_field","typeLabel":"string"},"scene_field":{"type":"string","title":"Scene Field","description":"Document-payload field holding the scene identifier used for Jaccard.","default":"scene_id","uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0.scene_field","typeLabel":"string"}},"uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.0","typeLabel":"FaceClusterMergeConfig · object"},{"type":"null","description":"Optional post-HDBSCAN agglomerative merge pass for face identity clusters. HDBSCAN over ArcFace 512d face embeddings tends to over-split the same person across pose/lighting variants. When provided with enabled=true, two clusters merge if their centroid cosine meets the threshold AND one of the spatial signals (bbox IoU on overlapping frames, scene-id Jaccard) clears its threshold. Leave null (default) for non-face clusterings — existing behavior is preserved.","uniqueKey":"vector_config.oneOf.0.face_cluster_merge.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.face_cluster_merge","typeLabel":"FaceClusterMergeConfig · object | null"},"preprocessing_steps":{"oneOf":[{"type":"array","items":{"oneOf":[{"type":"object","title":"TSNEParams","properties":{"method":{"type":"string","const":"tsne","title":"Method","default":"tsne","uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0.method","typeLabel":"string"},"n_components":{"type":"integer","maximum":256,"minimum":2,"title":"N Components","default":2,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0.n_components","typeLabel":"integer"},"random_state":{"type":"integer","title":"Random State","default":42,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0.random_state","typeLabel":"integer"},"perplexity":{"type":"number","exclusiveMinimum":0,"title":"Perplexity","default":30,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0.perplexity","typeLabel":"number"},"learning_rate":{"type":"number","exclusiveMinimum":0,"title":"Learning Rate","default":200,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0.learning_rate","typeLabel":"number"}},"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.0","typeLabel":"TSNEParams · object"},{"type":"object","title":"UMAPParams","properties":{"method":{"type":"string","const":"umap","title":"Method","default":"umap","uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.method","typeLabel":"string"},"n_components":{"type":"integer","maximum":256,"minimum":2,"title":"N Components","default":50,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.n_components","typeLabel":"integer"},"random_state":{"type":"integer","title":"Random State","default":42,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.random_state","typeLabel":"integer"},"n_neighbors":{"type":"integer","minimum":2,"title":"N Neighbors","default":30,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.n_neighbors","typeLabel":"integer"},"min_dist":{"type":"number","maximum":1,"minimum":0,"title":"Min Dist","default":0,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.min_dist","typeLabel":"number"},"metric":{"type":"string","title":"Metric","description":"Distance metric for UMAP. 'cosine' is best for normalized embeddings.","default":"cosine","uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1.metric","typeLabel":"string"}},"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"UMAPParams · object"},{"type":"object","title":"WhiteningParams","properties":{"method":{"type":"string","const":"whitening","title":"Method","default":"whitening","uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.2.method","typeLabel":"string"},"regularization":{"type":"number","minimum":0,"title":"Regularization","description":"Eigenvalue floor to prevent division by near-zero values.","default":0.00001,"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.2.regularization","typeLabel":"number"}},"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.2","typeLabel":"WhiteningParams · object"},{"type":"object","title":"NoReduction","properties":{"method":{"type":"string","const":"none","title":"Method","default":"none","uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.3.method","typeLabel":"string"}},"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX].oneOf.3","typeLabel":"NoReduction · object"}],"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0.items.[INDEX]","typeLabel":"TSNEParams · object | UMAPParams · object | WhiteningParams · object | NoReduction · object"},"title":"Preprocessing Steps","description":"Ordered list of preprocessing steps applied before clustering. Steps execute in order. Common patterns:\n- [whitening, umap]: Decorrelate then reduce — best for high-dimensional embeddings\n- [umap]: UMAP pre-reduction only (defaults: 50D, cosine, n_neighbors=30)\n- [whitening]: Whitening only — improves density-based clustering without dimension reduction\n\nIf set, overrides any default dimensionality reduction.","example":[{"method":"whitening","regularization":0.00001},{"method":"umap","min_dist":0,"n_components":50,"n_neighbors":30}],"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.0","typeLabel":"(TSNEParams · object | UMAPParams · object | WhiteningParams · object | NoReduction · object)[]"},{"type":"null","title":"Preprocessing Steps","description":"Ordered list of preprocessing steps applied before clustering. Steps execute in order. Common patterns:\n- [whitening, umap]: Decorrelate then reduce — best for high-dimensional embeddings\n- [umap]: UMAP pre-reduction only (defaults: 50D, cosine, n_neighbors=30)\n- [whitening]: Whitening only — improves density-based clustering without dimension reduction\n\nIf set, overrides any default dimensionality reduction.","example":[{"method":"whitening","regularization":0.00001},{"method":"umap","min_dist":0,"n_components":50,"n_neighbors":30}],"uniqueKey":"vector_config.oneOf.0.preprocessing_steps.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.preprocessing_steps","typeLabel":"(TSNEParams · object | UMAPParams · object | WhiteningParams · object | NoReduction · object)[] | null"},"hierarchical":{"type":"boolean","title":"Hierarchical","description":"Enable recursive sub-clustering. After initial clustering, each cluster with enough members is sub-divided using UMAP+HDBSCAN recursively. Produces hierarchical cluster IDs (e.g., cl_0_sub_1_sub_0).","default":false,"uniqueKey":"vector_config.oneOf.0.hierarchical","typeLabel":"boolean"},"max_hierarchy_depth":{"type":"integer","maximum":5,"minimum":1,"title":"Max Hierarchy Depth","description":"Maximum recursion depth for hierarchical sub-clustering.","default":3,"uniqueKey":"vector_config.oneOf.0.max_hierarchy_depth","typeLabel":"integer"},"vis_n_components":{"type":"integer","enum":[2,3],"title":"Vis N Components","description":"Number of dimensions for visualization coordinates (2 or 3). When 3, the z coordinate is populated for depth/size-based rendering. Stored on the cluster and used as the default for all executions.","default":2,"uniqueKey":"vector_config.oneOf.0.vis_n_components","typeLabel":"enum\u003cinteger>"},"layout_stability":{"oneOf":[{"type":"string","title":"Layout Stability","description":"How the visualization layout behaves across re-executions. 'align' (the default when unset): re-fit the projection as usual, then register the new layout onto the previous run's coordinates with a least-squares similarity transform computed over shared documents — the map keeps its shape and orientation, so users don't lose their bearings. 'transform': additionally reuse the previous run's saved projection reducer when compatible (same features/dimensionality), so existing documents stay pixel-stable and new documents land in the established frame; falls back to 'align', then to a raw layout. 'none': independent re-layout every run (pre- behavior). Pure post-processing of coordinates — cluster assignments are never affected. The execution record reports what was actually applied in layout_stability_applied.","enum":["none","transform","align"],"uniqueKey":"vector_config.oneOf.0.layout_stability.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Layout Stability","description":"How the visualization layout behaves across re-executions. 'align' (the default when unset): re-fit the projection as usual, then register the new layout onto the previous run's coordinates with a least-squares similarity transform computed over shared documents — the map keeps its shape and orientation, so users don't lose their bearings. 'transform': additionally reuse the previous run's saved projection reducer when compatible (same features/dimensionality), so existing documents stay pixel-stable and new documents land in the established frame; falls back to 'align', then to a raw layout. 'none': independent re-layout every run (pre- behavior). Pure post-processing of coordinates — cluster assignments are never affected. The execution record reports what was actually applied in layout_stability_applied.","uniqueKey":"vector_config.oneOf.0.layout_stability.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config.oneOf.0.layout_stability","typeLabel":"enum\u003cstring> | null"}},"uniqueKey":"vector_config.oneOf.0","typeLabel":"VectorBasedConfig · object"},{"type":"null","description":"Required when cluster_type is 'vector'","uniqueKey":"vector_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"vector_config","typeLabel":"VectorBasedConfig · object | null"},"attribute_config":{"oneOf":[{"type":"object","title":"AttributeBasedConfig","description":"Required when cluster_type is 'attribute'","required":["attributes"],"example":{"attributes":["category"],"hierarchical_grouping":false},"properties":{"attributes":{"items":{"type":"string","uniqueKey":"attribute_config.oneOf.0.attributes.items.[INDEX]","typeLabel":"string"},"type":"array","minItems":1,"title":"Attributes","description":"List of attribute field names to use for clustering. Documents will be grouped by unique combinations of these attribute values. Supports dot-notation for nested fields (e.g., 'metadata.category'). Order matters for hierarchical grouping: first attribute is top-level, subsequent are nested.","examples":[["category"],["category","brand"],["status","priority"],["metadata.author","metadata.topic"]],"isRequired":true,"uniqueKey":"attribute_config.oneOf.0.attributes","typeLabel":"string[]"},"hierarchical_grouping":{"type":"boolean","title":"Hierarchical Grouping","description":"Whether to create hierarchical clusters based on attribute order. When True: Creates parent clusters for each unique value of the first attribute, then child clusters for subsequent attributes within each parent. When False: Creates flat clusters for each unique combination of all attributes. Example with ['category', 'brand']: hierarchical=True → 'Electronics' (parent) → 'Apple', 'Samsung' (children). hierarchical=False → 'Electronics_Apple', 'Electronics_Samsung' (flat).","default":false,"uniqueKey":"attribute_config.oneOf.0.hierarchical_grouping","typeLabel":"boolean"},"aggregation_method":{"oneOf":[{"type":"string","title":"Aggregation Method","description":"Method for aggregating attribute values when creating cluster centroids. Options: 'most_frequent' (default), 'first', 'last'. Most use cases should use the default.","example":"most_frequent","uniqueKey":"attribute_config.oneOf.0.aggregation_method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aggregation Method","description":"Method for aggregating attribute values when creating cluster centroids. Options: 'most_frequent' (default), 'first', 'last'. Most use cases should use the default.","example":"most_frequent","uniqueKey":"attribute_config.oneOf.0.aggregation_method.oneOf.1","typeLabel":"null"}],"uniqueKey":"attribute_config.oneOf.0.aggregation_method","typeLabel":"string | null"}},"uniqueKey":"attribute_config.oneOf.0","typeLabel":"AttributeBasedConfig · object"},{"type":"null","description":"Required when cluster_type is 'attribute'","uniqueKey":"attribute_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"attribute_config","typeLabel":"AttributeBasedConfig · object | null"},"filters":{"oneOf":[{"type":"object","title":"LogicalOperator","description":"Optional filters to pre-filter documents before clustering (same format as list documents). Applied during the vector store scroll before parquet export. Useful for clustering subsets like: status='active', category='electronics', etc.","properties":{"AND":{"oneOf":[{"type":"array","items":{"oneOf":[{},{"type":"object","title":"FilterCondition","description":"Represents a single filter condition.\n\nAttributes:\n field: The field to filter on\n operator: The comparison operator\n value: The value to compare against","required":["field","value"],"properties":{"field":{"type":"string","title":"Field","description":"Field name to filter on","isRequired":true,"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.field","typeLabel":"string"},"value":{"oneOf":[{"type":"object","title":"DynamicValue","description":"A value that should be dynamically resolved from the query request.","required":["field"],"properties":{"field":{"type":"string","title":"Field","description":"The dot-notation path to the value in the runtime query request, e.g., 'inputs.user_id'","examples":["inputs.query_text","filters.AND[0].value"],"isRequired":true,"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.field","typeLabel":"string"},"type":{"type":"string","const":"dynamic","title":"Type","default":"dynamic","uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0","typeLabel":"DynamicValue · object"},{"title":"Value","description":"Value to compare against","isRequired":true,"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.value","typeLabel":"DynamicValue · object | any"},"operator":{"description":"Comparison operator","enum":["eq","ne","gt","lt","gte","lte","in","nin","contains","starts_with","ends_with","regex","exists","is_null","text","phrase","words","geo_radius","geo_bounding_box","geo_polygon"],"title":"FilterOperator","type":"string","default":"eq","uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"FilterCondition · object"}],"uniqueKey":"filters.oneOf.0.AND.oneOf.0.items.[INDEX]","typeLabel":"FilterCondition · object"},"title":"And","description":"Logical AND operation - all conditions must be true","example":[{"field":"name","operator":"eq","value":"John"},{"field":"age","operator":"gte","value":30}],"uniqueKey":"filters.oneOf.0.AND.oneOf.0","typeLabel":"FilterCondition · object[]"},{"type":"null","title":"And","description":"Logical AND operation - all conditions must be true","example":[{"field":"name","operator":"eq","value":"John"},{"field":"age","operator":"gte","value":30}],"uniqueKey":"filters.oneOf.0.AND.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.AND","typeLabel":"FilterCondition · object[] | null"},"OR":{"oneOf":[{"type":"array","items":{"oneOf":[{},{"type":"object","title":"FilterCondition","description":"Represents a single filter condition.\n\nAttributes:\n field: The field to filter on\n operator: The comparison operator\n value: The value to compare against","required":["field","value"],"properties":{"field":{"type":"string","title":"Field","description":"Field name to filter on","isRequired":true,"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.field","typeLabel":"string"},"value":{"oneOf":[{"type":"object","title":"DynamicValue","description":"A value that should be dynamically resolved from the query request.","required":["field"],"properties":{"field":{"type":"string","title":"Field","description":"The dot-notation path to the value in the runtime query request, e.g., 'inputs.user_id'","examples":["inputs.query_text","filters.AND[0].value"],"isRequired":true,"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.field","typeLabel":"string"},"type":{"type":"string","const":"dynamic","title":"Type","default":"dynamic","uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0","typeLabel":"DynamicValue · object"},{"title":"Value","description":"Value to compare against","isRequired":true,"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.value","typeLabel":"DynamicValue · object | any"},"operator":{"description":"Comparison operator","enum":["eq","ne","gt","lt","gte","lte","in","nin","contains","starts_with","ends_with","regex","exists","is_null","text","phrase","words","geo_radius","geo_bounding_box","geo_polygon"],"title":"FilterOperator","type":"string","default":"eq","uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"FilterCondition · object"}],"uniqueKey":"filters.oneOf.0.OR.oneOf.0.items.[INDEX]","typeLabel":"FilterCondition · object"},"title":"Or","description":"Logical OR operation - at least one condition must be true","example":[{"field":"status","operator":"eq","value":"active"},{"field":"role","operator":"eq","value":"admin"}],"uniqueKey":"filters.oneOf.0.OR.oneOf.0","typeLabel":"FilterCondition · object[]"},{"type":"null","title":"Or","description":"Logical OR operation - at least one condition must be true","example":[{"field":"status","operator":"eq","value":"active"},{"field":"role","operator":"eq","value":"admin"}],"uniqueKey":"filters.oneOf.0.OR.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.OR","typeLabel":"FilterCondition · object[] | null"},"NOT":{"oneOf":[{"type":"array","items":{"oneOf":[{},{"type":"object","title":"FilterCondition","description":"Represents a single filter condition.\n\nAttributes:\n field: The field to filter on\n operator: The comparison operator\n value: The value to compare against","required":["field","value"],"properties":{"field":{"type":"string","title":"Field","description":"Field name to filter on","isRequired":true,"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.field","typeLabel":"string"},"value":{"oneOf":[{"type":"object","title":"DynamicValue","description":"A value that should be dynamically resolved from the query request.","required":["field"],"properties":{"field":{"type":"string","title":"Field","description":"The dot-notation path to the value in the runtime query request, e.g., 'inputs.user_id'","examples":["inputs.query_text","filters.AND[0].value"],"isRequired":true,"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.field","typeLabel":"string"},"type":{"type":"string","const":"dynamic","title":"Type","default":"dynamic","uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0.type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.0","typeLabel":"DynamicValue · object"},{"title":"Value","description":"Value to compare against","isRequired":true,"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.value.oneOf.1","typeLabel":"any"}],"isRequired":true,"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.value","typeLabel":"DynamicValue · object | any"},"operator":{"description":"Comparison operator","enum":["eq","ne","gt","lt","gte","lte","in","nin","contains","starts_with","ends_with","regex","exists","is_null","text","phrase","words","geo_radius","geo_bounding_box","geo_polygon"],"title":"FilterOperator","type":"string","default":"eq","uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1.operator","typeLabel":"enum\u003cstring>"}},"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX].oneOf.1","typeLabel":"FilterCondition · object"}],"uniqueKey":"filters.oneOf.0.NOT.oneOf.0.items.[INDEX]","typeLabel":"FilterCondition · object"},"title":"Not","description":"Logical NOT operation - all conditions must be false","example":[{"field":"department","operator":"eq","value":"HR"},{"field":"location","operator":"eq","value":"remote"}],"uniqueKey":"filters.oneOf.0.NOT.oneOf.0","typeLabel":"FilterCondition · object[]"},{"type":"null","title":"Not","description":"Logical NOT operation - all conditions must be false","example":[{"field":"department","operator":"eq","value":"HR"},{"field":"location","operator":"eq","value":"remote"}],"uniqueKey":"filters.oneOf.0.NOT.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.NOT","typeLabel":"FilterCondition · object[] | null"},"case_sensitive":{"oneOf":[{"type":"boolean","title":"Case Sensitive","description":"Whether to perform case-sensitive matching","default":false,"example":true,"uniqueKey":"filters.oneOf.0.case_sensitive.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Case Sensitive","description":"Whether to perform case-sensitive matching","default":false,"example":true,"uniqueKey":"filters.oneOf.0.case_sensitive.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters.oneOf.0.case_sensitive","typeLabel":"boolean | null"}},"additionalProperties":true,"uniqueKey":"filters.oneOf.0","typeLabel":"LogicalOperator · object"},{"type":"null","description":"Optional filters to pre-filter documents before clustering (same format as list documents). Applied during the vector store scroll before parquet export. Useful for clustering subsets like: status='active', category='electronics', etc.","uniqueKey":"filters.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters","typeLabel":"LogicalOperator · object | null"},"llm_labeling":{"oneOf":[{"type":"object","title":"LLMLabeling","description":"Optional configuration for LLM-based cluster labeling. When provided with enabled=True, clusters will have semantic labels generated by LLM instead of generic labels like 'Cluster 0'. When not provided or enabled=False, uses fallback labels.","example":{"enabled":true,"include_keywords":true,"include_summary":true,"labeling_inputs":{"input_mappings":[{"input_key":"title","path":"title","source_type":"payload"},{"input_key":"description","path":"description","source_type":"payload"},{"input_key":"text","path":"text","source_type":"payload"}]},"model_name":"gpt-4o-mini-2024-07-18","provider":"openai"},"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether to generate labels for clusters using LLM. When enabled, clusters will have semantic labels like 'High-Performance Laptops' instead of generic labels like 'Cluster 0'.","default":false,"uniqueKey":"llm_labeling.oneOf.0.enabled","typeLabel":"boolean"},"labeling_inputs":{"oneOf":[{"type":"object","title":"LLMLabelingInput","description":"Input configuration for LLM labeling. Supports flexible input mappings for multimodal inputs (text, images, videos, audio). Use input_mappings for advanced multimodal labeling with providers like Gemini. If not provided (null/undefined), the full document payload is serialized as JSON and sent to the LLM — WARNING: in practice this produces schema-metadata labels (e.g. 'Mid-Timeline Video Events' with keywords like ['start_time', 'end_time']) because the LLM describes whatever field names it sees. For meaningful labels, set input_mappings that point at semantic fields (title, description, thumbnail_url, document_blobs[].url for image/video content) rather than relying on the default.","required":["input_mappings"],"properties":{"input_mappings":{"items":{"properties":{"input_key":{"type":"string","title":"Input Key","description":"Key used in the constructed inputs payload.","isRequired":true,"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].input_key","typeLabel":"string"},"source_type":{"oneOf":[{"type":"string","title":"InputSourceType","description":"Source of the value (payload, literal, vector).","enum":["payload","literal","vector","blob"],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Source of the value (payload, literal, vector).","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type","typeLabel":"enum\u003cstring> | null"},"path":{"oneOf":[{"type":"string","title":"Path","description":"Dot-notation path when source_type is PAYLOAD or VECTOR. PAYLOAD paths resolve from the document's ROOT fields — each document/source_document dict IS the payload (e.g. path 'text' reads {'text': ...}); a {'payload': {...}} envelope is also accepted as a fallback.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Path","description":"Dot-notation path when source_type is PAYLOAD or VECTOR. PAYLOAD paths resolve from the document's ROOT fields — each document/source_document dict IS the payload (e.g. path 'text' reads {'text': ...}); a {'payload': {...}} envelope is also accepted as a fallback.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path","typeLabel":"string | null"},"override":{"oneOf":[{"title":"Override","description":"Static value used when source_type is LITERAL. Overrides any path.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override.oneOf.0","typeLabel":"any"},{"type":"null","title":"Override","description":"Static value used when source_type is LITERAL. Overrides any path.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override","typeLabel":"any | null"}},"type":"object","required":["input_key"],"title":"InputMapping","description":"Declarative mapping for building inputs from various sources.\n\n- input_key: The key used in the constructed inputs payload\n- source_type: Where to fetch the value (payload, literal, vector)\n- path: Dot-notation path when source_type is PAYLOAD or VECTOR\n- override: Static value when source_type is LITERAL","examples":[{"input_key":"query_text","path":"content.title","source_type":"payload"},{"input_key":"lang","override":"en","source_type":"literal"},{"input_key":"image_vector","path":"features.clip_vit_l_14","source_type":"vector"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX]","typeLabel":"InputMapping · object"},"type":"array","minItems":1,"title":"Input Mappings","description":"Flexible input mappings for constructing LLM context. Supports multimodal inputs (text, image_url, video_url, audio_url). Each mapping specifies how to extract data from document payloads. At least one input mapping is required.","isRequired":true,"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings","typeLabel":"InputMapping · object[]"}},"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0","typeLabel":"LLMLabelingInput · object"},{"type":"null","description":"Input configuration for LLM labeling. Supports flexible input mappings for multimodal inputs (text, images, videos, audio). Use input_mappings for advanced multimodal labeling with providers like Gemini. If not provided (null/undefined), the full document payload is serialized as JSON and sent to the LLM — WARNING: in practice this produces schema-metadata labels (e.g. 'Mid-Timeline Video Events' with keywords like ['start_time', 'end_time']) because the LLM describes whatever field names it sees. For meaningful labels, set input_mappings that point at semantic fields (title, description, thumbnail_url, document_blobs[].url for image/video content) rather than relying on the default.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs","typeLabel":"LLMLabelingInput · object | null"},"provider":{"oneOf":[{"type":"string","title":"LLMProvider","description":"LLM provider to use for labeling. Supported providers:\n- openai: GPT models (GPT-4o, GPT-4o-mini, GPT-4.1, O3-mini)\n- google: Gemini models (Gemini 2.5 Flash, Gemini 1.5 Flash)\n- anthropic: Claude models (Claude 3.5 Sonnet, Claude 3.5 Haiku)\n- typesafe: Jev (jev-latest). Picks each cluster's label from candidate_labels with a calibrated probability instead of writing one. Text only: it reads the representative documents' text fields.\n\nIf not specified, automatically inferred from model_name.","enum":["openai","google","anthropic","typesafe"],"example":"openai","uniqueKey":"llm_labeling.oneOf.0.provider.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"LLM provider to use for labeling. Supported providers:\n- openai: GPT models (GPT-4o, GPT-4o-mini, GPT-4.1, O3-mini)\n- google: Gemini models (Gemini 2.5 Flash, Gemini 1.5 Flash)\n- anthropic: Claude models (Claude 3.5 Sonnet, Claude 3.5 Haiku)\n- typesafe: Jev (jev-latest). Picks each cluster's label from candidate_labels with a calibrated probability instead of writing one. Text only: it reads the representative documents' text fields.\n\nIf not specified, automatically inferred from model_name.","example":"openai","uniqueKey":"llm_labeling.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.provider","typeLabel":"enum\u003cstring> | null"},"model_name":{"oneOf":[{"type":"string","title":"OpenAIModel","description":"OpenAI model identifiers for LLM generation.\n\nModels listed in order of capability and cost (highest to lowest).\nAll models support vision (images) except O3-mini.\n\nValues:\n GPT_4O: Latest GPT-4 Omni model (2024-08-06)\n - Use for: Production, highest quality generation\n - Context: 128K tokens\n - Vision: Yes\n - Cost: $2.50/1M input, $10/1M output\n - Performance: 200-500ms per request\n - When to use: Need best quality, willing to pay premium\n\n GPT_41: GPT-4.1 (2025-04-14)\n - Use for: Future-proofed pipelines\n - Context: 128K tokens\n - Vision: Yes\n - Cost: TBD (expected similar to GPT-4o)\n - When to use: Want latest model features\n\n GPT_4O_MINI: Smaller, faster GPT-4 Omni (2024-07-18)\n - Use for: High-volume, cost-sensitive workloads\n - Context: 128K tokens\n - Vision: Yes\n - Cost: $0.15/1M input, $0.60/1M output\n - Performance: 100-200ms per request\n - When to use: Good balance of quality and cost\n\n GPT_41_MINI: Smaller GPT-4.1 (2025-04-14)\n - Use for: Future cost-optimized pipelines\n - Context: 128K tokens\n - Vision: Yes\n - Cost: TBD (expected similar to GPT-4o-mini)\n - When to use: Want latest features at lower cost\n\n O3_MINI: Reasoning-optimized model (2025-01-31)\n - Use for: Complex reasoning, math, code\n - Context: 200K tokens\n - Vision: No\n - Cost: TBD\n - When to use: Need advanced reasoning capabilities\n\nExamples:\n - Use GPT_4O for caption generation with images (best quality)\n - Use GPT_4O_MINI for high-volume video scene summarization (cost-effective)\n - Use O3_MINI for complex entity extraction requiring reasoning","enum":["gpt-4o-2024-08-06","gpt-4o-mini-2024-07-18","gpt-4.1-2025-04-14","gpt-4.1-mini-2025-04-14","o3-mini-2025-01-31"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","title":"GoogleModel","description":"Google Gemini model identifiers for LLM generation.\n\nGemini models excel at multimodal understanding with best-in-class video support.\nAll models support text, images, video, audio, and PDFs.\n\nValues:\n GEMINI_3_5_FLASH_LITE: Gemini 3.5 Flash Lite model (recommended, the default)\n - Use for: Fastest generation, cost-effective multimodal\n - Context: 1M tokens\n - Multimodal: Text, images, video, audio, PDFs\n - When to use: Default choice for all Gemini use cases\n\n GEMINI_2_5_FLASH_LITE: Gemini 2.5 Flash Lite model\n - Kept so stored configs that name it still validate. The Gemini\n developer API no longer serves it to new keys; Vertex does.\n\n GEMINI_2_5_PRO: Gemini 2.5 Pro model\n - Use for: Higher quality reasoning, complex tasks\n - Context: 1M tokens\n\n GEMINI_2_5_FLASH: Gemini 2.5 Flash model\n - Kept for backward compatibility.\n\n GEMINI_3_1_FLASH_LITE: Gemini 3.1 Flash-Lite model\n - Use for: Fast, low-cost generation on the 3.1 generation","enum":["gemini-2.5-flash-lite","gemini-2.5-flash","gemini-2.5-pro","gemini-3.1-flash-lite","gemini-3.5-flash-lite"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","title":"AnthropicModel","description":"Anthropic Claude model identifiers for LLM generation.\n\nClaude models excel at long context, complex reasoning, and safety.\nAll models support text and images.\n\nValues:\n CLAUDE_3_5_SONNET: Most capable Claude model\n - Use for: Complex reasoning, long documents, safety-critical\n - Context: 200K tokens\n - Vision: Yes\n - Cost: $3/1M input, $15/1M output\n - Performance: 300-800ms per request\n - When to use: Need best reasoning, safety, or long context\n\n CLAUDE_3_5_HAIKU: Fast, cost-effective Claude model\n - Use for: High-volume, quick summaries\n - Context: 200K tokens\n - Vision: Yes\n - Cost: $0.25/1M input, $1.25/1M output\n - Performance: 100-300ms per request\n - When to use: Good balance of quality and cost\n\nExamples:\n - Use CLAUDE_3_5_SONNET for complex entity extraction from contracts (best reasoning)\n - Use CLAUDE_3_5_HAIKU for high-volume content moderation (cost-effective)","enum":["claude-sonnet-4-5-20250929","claude-haiku-4-5-20251001","claude-3-5-sonnet-20241022","claude-3-5-haiku-20241022"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","title":"TypeSafeModel","description":"TypeSafe AI Jev model identifiers.\n\nJev answers typed questions (choice, score, yes/no) with calibrated\nprobabilities. It reads text only and does not generate text, so it fits\ndecision steps: classification, filtering, relevance scoring, and choosing\na label or cluster branch from a fixed set.\n\nValues:\n JEV_LATEST: Most recent stable Jev release (moves on new releases)\n JEV_PREVIEW: Most recent Jev release, stable or not\n JEV_1_13: Pinned Jev 1.13; use when you tuned thresholds on it","enum":["jev-latest","jev-preview","jev-1.13.0"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Model Name","description":"REQUIRED when enabled=True. Specific LLM model to use for cluster labeling. All models are defined as enums for type safety.\n\nOpenAI Models (provider='openai'):\n- gpt-4o-2024-08-06: Highest quality, best for production ($2.50/$10 per 1M tokens)\n- gpt-4o-mini-2024-07-18: Cost-effective, recommended for most use cases ($0.15/$0.60 per 1M tokens)\n- gpt-4.1-2025-04-14: Latest model, future-proofed\n- gpt-4.1-mini-2025-04-14: Latest cost-optimized model\n- o3-mini-2025-01-31: Advanced reasoning, best for complex clustering\n\nGoogle Models (provider='google'):\n- gemini-3.5-flash-lite: Fastest, latest multimodal model, recommended ($0.30/$2.50 per 1M tokens)\n\nAnthropic Models (provider='anthropic'):\n- claude-3-5-sonnet-20241022: Best reasoning, 200K context ($3/$15 per 1M tokens)\n- claude-3-5-haiku-20241022: Fast, cost-effective ($0.25/$1.25 per 1M tokens)\n\nRecommendation:\n- Use gemini-3.5-flash-lite (DEFAULT) - multimodal support\n- Use gpt-4o-mini-2024-07-18 for OpenAI compatibility\n- Use gpt-4o-2024-08-06 for highest quality when cost is not a concern","example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.4","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.model_name","typeLabel":"enum\u003cstring> · enum\u003cstring> · enum\u003cstring> · enum\u003cstring> · null"},"include_summary":{"type":"boolean","title":"Include Summary","description":"Whether to generate cluster summaries","default":true,"uniqueKey":"llm_labeling.oneOf.0.include_summary","typeLabel":"boolean"},"include_keywords":{"type":"boolean","title":"Include Keywords","description":"Whether to extract keywords for clusters","default":true,"uniqueKey":"llm_labeling.oneOf.0.include_keywords","typeLabel":"boolean"},"max_samples_per_cluster":{"oneOf":[{"type":"integer","title":"Max Samples Per Cluster","description":"Maximum representative documents to send to LLM per cluster for semantic analysis. When null (default), automatically scales based on cluster size and spread — smaller/tighter clusters get fewer samples, larger/sparser clusters get more (range 3-20). Set explicitly to override with a fixed value.","maximum":20,"minimum":1,"uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Samples Per Cluster","description":"Maximum representative documents to send to LLM per cluster for semantic analysis. When null (default), automatically scales based on cluster size and spread — smaller/tighter clusters get fewer samples, larger/sparser clusters get more (range 3-20). Set explicitly to override with a fixed value.","uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster","typeLabel":"integer | null"},"sample_text_max_length":{"type":"integer","maximum":500,"minimum":50,"title":"Sample Text Max Length","description":"Maximum characters per document sample text","default":200,"uniqueKey":"llm_labeling.oneOf.0.sample_text_max_length","typeLabel":"integer"},"sample_selection_strategy":{"type":"string","enum":["nearest","representative"],"title":"Sample Selection Strategy","description":"How representative documents are chosen for the labeling LLM. 'nearest' (default): the N members closest to the cluster centroid — maximally prototypical, but adjacent clusters can yield near-identical sample sets and therefore near-identical labels. 'representative': a mixed panel of ~40% nearest-to-centroid, ~40% diversity picks (farthest-point coverage of the cluster's extent), and ~20% high-density examples — differentiates similar clusters at the same sample count and LLM cost.","default":"nearest","uniqueKey":"llm_labeling.oneOf.0.sample_selection_strategy","typeLabel":"enum\u003cstring>"},"use_embedding_dedup":{"type":"boolean","title":"Use Embedding Dedup","description":"Enable embedding-based label deduplication to prevent near-duplicate labels (requires sentence-transformers)","default":true,"uniqueKey":"llm_labeling.oneOf.0.use_embedding_dedup","typeLabel":"boolean"},"embedding_similarity_threshold":{"type":"number","maximum":1,"minimum":0.5,"title":"Embedding Similarity Threshold","description":"Cosine similarity threshold for duplicate label detection (labels above this are considered duplicates)","default":0.8,"uniqueKey":"llm_labeling.oneOf.0.embedding_similarity_threshold","typeLabel":"number"},"cache_ttl_seconds":{"type":"integer","maximum":2592000,"minimum":0,"title":"Cache Ttl Seconds","description":"Time-to-live for cached labels in seconds. Labels for clusters with identical representative documents will be reused within this TTL window, reducing LLM API costs. Default: 604800 (7 days). Set to 0 to disable caching.","default":604800,"uniqueKey":"llm_labeling.oneOf.0.cache_ttl_seconds","typeLabel":"integer"},"labeling_context":{"oneOf":[{"type":"string","title":"Labeling Context","description":"OPTIONAL. Freeform domain context about the data being clustered, injected into the labeling prompt as a clearly-delimited 'Domain context provided by the user' block. Unlike custom_prompt, this does NOT replace the default prompt — it grounds the default labeler so labels use the right domain vocabulary. Example: 'These are scenes from pharmaceutical TV ads' turns generic labels like 'People Talking Outdoors' into 'Patient Testimonial Scenes'. Max 2000 characters.","maxLength":2000,"example":"These are scenes from pharmaceutical TV advertisements","uniqueKey":"llm_labeling.oneOf.0.labeling_context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Labeling Context","description":"OPTIONAL. Freeform domain context about the data being clustered, injected into the labeling prompt as a clearly-delimited 'Domain context provided by the user' block. Unlike custom_prompt, this does NOT replace the default prompt — it grounds the default labeler so labels use the right domain vocabulary. Example: 'These are scenes from pharmaceutical TV ads' turns generic labels like 'People Talking Outdoors' into 'Patient Testimonial Scenes'. Max 2000 characters.","example":"These are scenes from pharmaceutical TV advertisements","uniqueKey":"llm_labeling.oneOf.0.labeling_context.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_context","typeLabel":"string | null"},"custom_prompt":{"oneOf":[{"type":"string","title":"Custom Prompt","description":"OPTIONAL. Custom prompt template for LLM labeling. NOT REQUIRED - uses default discriminative prompt if not provided. When provided, completely replaces the default prompt. Your custom prompt receives cluster information but you must format it yourself. Use when: - Need domain-specific labeling (e.g., medical, legal, technical) - Want different label format (e.g., emoji labels, code names) - Require specific output structure - Have custom business logic for categorization Default prompt includes: cluster document samples, forbidden labels for uniqueness, and JSON response format. See engine/clusters/labeling/prompts.py for reference. Example: 'Analyze these product clusters and generate SHORT category names (2-3 words max) focusing on product type and price range. Return JSON: [{\"cluster_id\": \"cl_0\", \"label\": \"...\"}]'","example":"Analyze these document clusters and generate technical labels (2-3 words). Focus on programming languages and frameworks mentioned. Return JSON: [{'cluster_id': 'cl_0', 'label': '...', 'keywords': [...]}]","uniqueKey":"llm_labeling.oneOf.0.custom_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Custom Prompt","description":"OPTIONAL. Custom prompt template for LLM labeling. NOT REQUIRED - uses default discriminative prompt if not provided. When provided, completely replaces the default prompt. Your custom prompt receives cluster information but you must format it yourself. Use when: - Need domain-specific labeling (e.g., medical, legal, technical) - Want different label format (e.g., emoji labels, code names) - Require specific output structure - Have custom business logic for categorization Default prompt includes: cluster document samples, forbidden labels for uniqueness, and JSON response format. See engine/clusters/labeling/prompts.py for reference. Example: 'Analyze these product clusters and generate SHORT category names (2-3 words max) focusing on product type and price range. Return JSON: [{\"cluster_id\": \"cl_0\", \"label\": \"...\"}]'","example":"Analyze these document clusters and generate technical labels (2-3 words). Focus on programming languages and frameworks mentioned. Return JSON: [{'cluster_id': 'cl_0', 'label': '...', 'keywords': [...]}]","uniqueKey":"llm_labeling.oneOf.0.custom_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.custom_prompt","typeLabel":"string | null"},"response_shape":{"oneOf":[{"type":"string","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.0","typeLabel":"string"},{"type":"object","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","additionalProperties":true,"uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.1","typeLabel":"Response Shape · object"},{"type":"null","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.2","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.response_shape","typeLabel":"string | Response Shape · object | null"},"parameters":{"additionalProperties":true,"type":"object","title":"Parameters","description":"Provider-specific parameters forwarded to the LLM service. For OpenAI: temperature, max_tokens, top_p, json_output, etc. For Google: temperature, top_k, max_output_tokens, json_output, etc.","uniqueKey":"llm_labeling.oneOf.0.parameters","typeLabel":"Parameters · object"},"candidate_labels":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.0","typeLabel":"string[]"},{"type":"object","title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties","typeLabel":"string | null"},"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1","typeLabel":"Candidate Labels · object"},{"type":"null","title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.2","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels","typeLabel":"string[] | Candidate Labels · object | null"}},"uniqueKey":"llm_labeling.oneOf.0","typeLabel":"LLMLabeling · object"},{"type":"null","description":"Optional configuration for LLM-based cluster labeling. When provided with enabled=True, clusters will have semantic labels generated by LLM instead of generic labels like 'Cluster 0'. When not provided or enabled=False, uses fallback labels.","uniqueKey":"llm_labeling.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling","typeLabel":"LLMLabeling · object | null"},"enrich_source_collection":{"type":"boolean","title":"Enrich Source Collection","description":"If True, cluster results are written back to source collection(s) in-place instead of creating new output collections. Documents will be enriched with cluster_id, cluster_label, distance_to_centroid, and optionally other metadata. Similar to taxonomy enrichment pattern.","default":false,"uniqueKey":"enrich_source_collection","typeLabel":"boolean"},"source_enrichment_config":{"oneOf":[{"type":"object","title":"SourceEnrichmentConfig","description":"Configuration for source collection enrichment (only used if enrich_source_collection=True). Controls which fields are added to source documents and field naming conventions.","example":{"field_mappings":[{"source_field":"cluster_id","target_field":"category_id"},{"source_field":"cluster_label","target_field":"category_name"},{"source_field":"distance_to_centroid","target_field":"category_confidence"}]},"properties":{"field_mappings":{"items":{"properties":{"source_field":{"type":"string","title":"Source Field","description":"Field from cluster results to include. Available fields: cluster_id, cluster_label, distance_to_centroid, member_count, keywords, x, y, z (visualization coords), metadata.*. cluster_id is the run's cluster index (cl_0, cl_1, ...); an execution with a filters override writes it qualified by that partition (\u003cpartition>:cl_0), so partitions of one cluster never share a value.","isRequired":true,"uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX].source_field","typeLabel":"string"},"target_field":{"type":"string","title":"Target Field","description":"Target field name in enriched document. Example: 'category_id' for cluster_id, 'product_category' for cluster_label","isRequired":true,"uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX].target_field","typeLabel":"string"}},"type":"object","required":["source_field","target_field"],"title":"EnrichmentFieldMapping","description":"Maps a cluster result field to a document enrichment field.\n\nSimilar to InputMapping pattern used throughout Mixpeek.","uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX]","typeLabel":"EnrichmentFieldMapping · object"},"type":"array","title":"Field Mappings","description":"List of field mappings from cluster results to document fields. Default includes cluster_id and cluster_label. Can include: distance_to_centroid, member_count, keywords, visualization coords (x, y, z), etc.","uniqueKey":"source_enrichment_config.oneOf.0.field_mappings","typeLabel":"EnrichmentFieldMapping · object[]"}},"uniqueKey":"source_enrichment_config.oneOf.0","typeLabel":"SourceEnrichmentConfig · object"},{"type":"null","description":"Configuration for source collection enrichment (only used if enrich_source_collection=True). Controls which fields are added to source documents and field naming conventions.","uniqueKey":"source_enrichment_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_enrichment_config","typeLabel":"SourceEnrichmentConfig · object | null"},"auto_execute_on_batch":{"type":"boolean","title":"Auto Execute On Batch","description":"Automatically execute this cluster whenever a batch completes on any of its input collections. When True, a ClusterApplicationConfig entry is added to each input collection's cluster_applications field at creation time. The cluster will then auto-trigger after each batch completion (subject to cooldown and document threshold). When False (default), the cluster must be executed manually via the API.","default":false,"uniqueKey":"auto_execute_on_batch","typeLabel":"boolean"},"auto_execute_min_documents":{"oneOf":[{"type":"integer","title":"Auto Execute Min Documents","description":"Minimum number of documents required before auto-executing cluster. Only used when auto_execute_on_batch=True. If the collection has fewer documents than this threshold, clustering is skipped.","uniqueKey":"auto_execute_min_documents.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Auto Execute Min Documents","description":"Minimum number of documents required before auto-executing cluster. Only used when auto_execute_on_batch=True. If the collection has fewer documents than this threshold, clustering is skipped.","uniqueKey":"auto_execute_min_documents.oneOf.1","typeLabel":"null"}],"uniqueKey":"auto_execute_min_documents","typeLabel":"integer | null"},"auto_execute_cooldown_seconds":{"type":"integer","title":"Auto Execute Cooldown Seconds","description":"Minimum time (in seconds) between automatic cluster executions. Only used when auto_execute_on_batch=True. Default: 3600 (1 hour).","default":3600,"uniqueKey":"auto_execute_cooldown_seconds","typeLabel":"integer"}},"type":"object","title":"CreateClusterRequest","description":"Create a clustering job for one or more collections.","examples":[{"cluster_name":"products_clip_hdbscan","cluster_type":"vector","collection_ids":["col_products_v1","col_products_v2"],"llm_labeling":{"enabled":true,"labeling_inputs":{"input_mappings":[{"input_key":"text","path":"description","source_type":"payload"}]},"model_name":"gpt-4o-mini-2024-07-18","provider":"openai"},"vector_config":{"clustering_method":"hdbscan","feature_uri":"mixpeek://clip_vit_l_14@v1/embedding","hdbscan_parameters":{"min_cluster_size":10,"min_samples":5},"sample_size":5000}},{"cluster_name":"video_multimodal_clustering","cluster_type":"vector","collection_ids":["col_videos_v1"],"llm_labeling":{"enabled":true,"include_keywords":true,"include_summary":true,"labeling_inputs":{"input_mappings":[{"input_key":"text","path":"title","source_type":"payload"},{"input_key":"video_url","path":"video_url","source_type":"payload"}]},"model_name":"gemini-3.5-flash-lite","provider":"google"},"vector_config":{"clustering_method":"hdbscan","feature_uri":"mixpeek://clip_vit_l_14@v1/embedding","hdbscan_parameters":{"min_cluster_size":5,"min_samples":3},"sample_size":3000}},{"cluster_name":"image_multimodal_clustering","cluster_type":"vector","collection_ids":["col_images_v1"],"llm_labeling":{"enabled":true,"labeling_inputs":{"input_mappings":[{"input_key":"text","path":"caption","source_type":"payload"},{"input_key":"image_url","path":"image_url","source_type":"payload"}]},"model_name":"gemini-3.5-flash-lite","provider":"google"},"vector_config":{"clustering_method":"kmeans","feature_uri":"mixpeek://clip_vit_l_14@v1/embedding","kmeans_parameters":{"n_clusters":10},"sample_size":2000}},{"attribute_config":{"attributes":["status"],"hierarchical_grouping":true},"cluster_name":"orders_group_by_status","cluster_type":"attribute","collection_ids":["col_orders_v1","col_orders_v2","col_orders_v3"]}],"uniqueKey":"","typeLabel":"CreateClusterRequest · object"},"examples":{"Example":{"title":"Example","value":{"cluster_name":"products_clip_hdbscan","cluster_type":"vector","collection_ids":["col_products_v1","col_products_v2"],"llm_labeling":{"enabled":true,"labeling_inputs":{"input_mappings":[{"input_key":"text","path":"description","source_type":"payload"}]},"model_name":"gpt-4o-mini-2024-07-18","provider":"openai"},"vector_config":{"clustering_method":"hdbscan","feature_uri":"mixpeek://clip_vit_l_14@v1/embedding","hdbscan_parameters":{"min_cluster_size":10,"min_samples":5},"sample_size":5000}}}},"exampleType":"generated"}},"description":"Keys this body does not declare are refused with 422 extra_forbidden naming the accepted keys (since 2026-11-02).","x-unknown-keys":{"until":"2026-11-02","then":"422 extra_forbidden"},"exampleType":"generated"},"responses":{"4f7f8c0d-2f2e-401f-81b1-07a609d6f4a7":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"cluster_name":{"type":"string","title":"Cluster Name","description":"Human-readable cluster name","isRequired":true,"uniqueKey":"cluster_name","typeLabel":"string"},"namespace_id":{"type":"string","title":"Namespace Id","description":"Namespace this cluster belongs to","isRequired":true,"uniqueKey":"namespace_id","typeLabel":"string"},"input_collections":{"items":{"type":"string","uniqueKey":"input_collections.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Input Collections","description":"Source collection IDs that were clustered","isRequired":true,"uniqueKey":"input_collections","typeLabel":"string[]"},"cluster_type":{"type":"string","enum":["vector","attribute"],"title":"Cluster Type","description":"Type of clustering: vector (embedding-based) or attribute (metadata-based)","isRequired":true,"uniqueKey":"cluster_type","typeLabel":"enum\u003cstring>"},"cluster_id":{"type":"string","title":"Cluster Id","description":"Unique cluster job identifier","uniqueKey":"cluster_id","typeLabel":"string"},"description":{"oneOf":[{"type":"string","title":"Description","description":"Cluster description","uniqueKey":"description.oneOf.0","typeLabel":"string"},{"type":"null","title":"Description","description":"Cluster description","uniqueKey":"description.oneOf.1","typeLabel":"null"}],"uniqueKey":"description","typeLabel":"string | null"},"source_cluster_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"source_cluster_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Source Cluster Ids","description":"Set on a composite cluster: the clusters whose run centroids it groups. Executing it without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition.","uniqueKey":"source_cluster_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Source Cluster Ids","description":"Set on a composite cluster: the clusters whose run centroids it groups. Executing it without a mode runs mode 'composite' over the newest completed run of each source cluster, one per partition.","uniqueKey":"source_cluster_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_cluster_ids","typeLabel":"string[] | null"},"source_bucket_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"source_bucket_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Source Bucket Ids","description":"Source bucket IDs that the input collections originated from. Enables bucket lineage tracking.","uniqueKey":"source_bucket_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Source Bucket Ids","description":"Source bucket IDs that the input collections originated from. Enables bucket lineage tracking.","uniqueKey":"source_bucket_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_bucket_ids","typeLabel":"string[] | null"},"filters":{"oneOf":[{"type":"object","title":"Filters","description":"Optional filters that were applied to pre-filter documents before clustering","additionalProperties":true,"uniqueKey":"filters.oneOf.0","typeLabel":"Filters · object"},{"type":"null","title":"Filters","description":"Optional filters that were applied to pre-filter documents before clustering","uniqueKey":"filters.oneOf.1","typeLabel":"null"}],"uniqueKey":"filters","typeLabel":"Filters · object | null"},"feature_uris":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"feature_uris.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Feature Uris","description":"Feature URIs that were clustered (mixpeek://{extractor}@{version}/{output}). Only for vector clustering.","uniqueKey":"feature_uris.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Feature Uris","description":"Feature URIs that were clustered (mixpeek://{extractor}@{version}/{output}). Only for vector clustering.","uniqueKey":"feature_uris.oneOf.1","typeLabel":"null"}],"uniqueKey":"feature_uris","typeLabel":"string[] | null"},"multi_feature_strategy":{"oneOf":[{"type":"string","title":"Multi Feature Strategy","description":"Strategy used if multiple features (concatenate/independent/weighted). Only for vector clustering.","uniqueKey":"multi_feature_strategy.oneOf.0","typeLabel":"string"},{"type":"null","title":"Multi Feature Strategy","description":"Strategy used if multiple features (concatenate/independent/weighted). Only for vector clustering.","uniqueKey":"multi_feature_strategy.oneOf.1","typeLabel":"null"}],"uniqueKey":"multi_feature_strategy","typeLabel":"string | null"},"learned_weights":{"oneOf":[{"type":"object","title":"Learned Weights","description":"Automatically learned feature weights (when multi_feature_strategy='weighted'). Keys are feature URIs, values are learned weights. Only populated after clustering execution completes.","additionalProperties":{"type":"number","uniqueKey":"learned_weights.oneOf.0.additionalProperties","typeLabel":"number"},"uniqueKey":"learned_weights.oneOf.0","typeLabel":"Learned Weights · object"},{"type":"null","title":"Learned Weights","description":"Automatically learned feature weights (when multi_feature_strategy='weighted'). Keys are feature URIs, values are learned weights. Only populated after clustering execution completes.","uniqueKey":"learned_weights.oneOf.1","typeLabel":"null"}],"uniqueKey":"learned_weights","typeLabel":"Learned Weights · object | null"},"learning_quality_score":{"oneOf":[{"type":"number","title":"Learning Quality Score","description":"Clustering quality score from weight learning (e.g., silhouette score). Only populated when multi_feature_strategy='weighted' and weights were learned.","uniqueKey":"learning_quality_score.oneOf.0","typeLabel":"number"},{"type":"null","title":"Learning Quality Score","description":"Clustering quality score from weight learning (e.g., silhouette score). Only populated when multi_feature_strategy='weighted' and weights were learned.","uniqueKey":"learning_quality_score.oneOf.1","typeLabel":"null"}],"uniqueKey":"learning_quality_score","typeLabel":"number | null"},"effective_feature_method":{"oneOf":[{"type":"string","title":"Effective Feature Method","description":"Method for calculating cluster centroids (mean/median/medoid). Only for vector clustering.","uniqueKey":"effective_feature_method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Effective Feature Method","description":"Method for calculating cluster centroids (mean/median/medoid). Only for vector clustering.","uniqueKey":"effective_feature_method.oneOf.1","typeLabel":"null"}],"uniqueKey":"effective_feature_method","typeLabel":"string | null"},"face_cluster_merge":{"oneOf":[{"type":"object","title":"FaceClusterMergeConfig","description":"Stored post-HDBSCAN face-identity merge config. Populated from `vector_config.face_cluster_merge` at cluster creation and replayed into `ClusteringConfig` on every execute. Only applies to vector clustering.","properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Run the merge pass. Set False to disable without removing the config.","default":true,"uniqueKey":"face_cluster_merge.oneOf.0.enabled","typeLabel":"boolean"},"centroid_cosine_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Centroid Cosine Threshold","description":"Minimum centroid cosine similarity for a candidate merge.","default":0.55,"uniqueKey":"face_cluster_merge.oneOf.0.centroid_cosine_threshold","typeLabel":"number"},"bbox_iou_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Bbox Iou Threshold","description":"Minimum bbox IoU on overlapping frames to satisfy the spatial half.","default":0.4,"uniqueKey":"face_cluster_merge.oneOf.0.bbox_iou_threshold","typeLabel":"number"},"scene_jaccard_threshold":{"type":"number","maximum":1,"minimum":0,"title":"Scene Jaccard Threshold","description":"Minimum Jaccard similarity of scene-id sets to satisfy the spatial half.","default":0.3,"uniqueKey":"face_cluster_merge.oneOf.0.scene_jaccard_threshold","typeLabel":"number"},"bbox_field":{"type":"string","title":"Bbox Field","description":"Document-payload field holding the face bbox (list/tuple of 4 floats).","default":"bbox","uniqueKey":"face_cluster_merge.oneOf.0.bbox_field","typeLabel":"string"},"frame_field":{"type":"string","title":"Frame Field","description":"Document-payload field holding the frame identifier used to pair bboxes.","default":"frame_number","uniqueKey":"face_cluster_merge.oneOf.0.frame_field","typeLabel":"string"},"scene_field":{"type":"string","title":"Scene Field","description":"Document-payload field holding the scene identifier used for Jaccard.","default":"scene_id","uniqueKey":"face_cluster_merge.oneOf.0.scene_field","typeLabel":"string"}},"uniqueKey":"face_cluster_merge.oneOf.0","typeLabel":"FaceClusterMergeConfig · object"},{"type":"null","description":"Stored post-HDBSCAN face-identity merge config. Populated from `vector_config.face_cluster_merge` at cluster creation and replayed into `ClusteringConfig` on every execute. Only applies to vector clustering.","uniqueKey":"face_cluster_merge.oneOf.1","typeLabel":"null"}],"uniqueKey":"face_cluster_merge","typeLabel":"FaceClusterMergeConfig · object | null"},"sample_size":{"oneOf":[{"type":"integer","title":"Sample Size","description":"Stored per-execution document cap. Populated from `vector_config.sample_size` at cluster creation and replayed into `ClusteringConfig` on every `POST /v1/clusters/{id}/execute` so re-runs stay consistent with the original config. When None, the export is uncapped (bounded by the engine's 100,000 safety limit). Only applies to vector clustering.","uniqueKey":"sample_size.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Sample Size","description":"Stored per-execution document cap. Populated from `vector_config.sample_size` at cluster creation and replayed into `ClusteringConfig` on every `POST /v1/clusters/{id}/execute` so re-runs stay consistent with the original config. When None, the export is uncapped (bounded by the engine's 100,000 safety limit). Only applies to vector clustering.","uniqueKey":"sample_size.oneOf.1","typeLabel":"null"}],"uniqueKey":"sample_size","typeLabel":"integer | null"},"preprocessing_steps":{"oneOf":[{"type":"array","items":{"additionalProperties":true,"type":"object","uniqueKey":"preprocessing_steps.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Preprocessing Steps","description":"Stored preprocessing steps from vector_config. Replayed into ClusteringConfig on every execute.","uniqueKey":"preprocessing_steps.oneOf.0","typeLabel":"Preprocessing Steps · object[]"},{"type":"null","title":"Preprocessing Steps","description":"Stored preprocessing steps from vector_config. Replayed into ClusteringConfig on every execute.","uniqueKey":"preprocessing_steps.oneOf.1","typeLabel":"null"}],"uniqueKey":"preprocessing_steps","typeLabel":"Preprocessing Steps · object[] | null"},"hierarchical_vector":{"oneOf":[{"type":"boolean","title":"Hierarchical Vector","description":"Whether recursive sub-clustering is enabled for vector clustering.","uniqueKey":"hierarchical_vector.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Hierarchical Vector","description":"Whether recursive sub-clustering is enabled for vector clustering.","uniqueKey":"hierarchical_vector.oneOf.1","typeLabel":"null"}],"uniqueKey":"hierarchical_vector","typeLabel":"boolean | null"},"max_hierarchy_depth":{"oneOf":[{"type":"integer","title":"Max Hierarchy Depth","description":"Maximum recursion depth for hierarchical sub-clustering.","uniqueKey":"max_hierarchy_depth.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Hierarchy Depth","description":"Maximum recursion depth for hierarchical sub-clustering.","uniqueKey":"max_hierarchy_depth.oneOf.1","typeLabel":"null"}],"uniqueKey":"max_hierarchy_depth","typeLabel":"integer | null"},"vis_n_components":{"oneOf":[{"type":"integer","title":"Vis N Components","description":"Stored visualization dimensionality (2D or 3D). Replayed into ClusteringConfig on every execute as the default.","enum":[2,3],"uniqueKey":"vis_n_components.oneOf.0","typeLabel":"enum\u003cinteger>"},{"type":"null","title":"Vis N Components","description":"Stored visualization dimensionality (2D or 3D). Replayed into ClusteringConfig on every execute as the default.","uniqueKey":"vis_n_components.oneOf.1","typeLabel":"null"}],"uniqueKey":"vis_n_components","typeLabel":"enum\u003cinteger> | null"},"layout_stability":{"oneOf":[{"type":"string","title":"Layout Stability","description":"Stored layout-stability mode from vector_config.layout_stability. Replayed into ClusteringConfig on every execute. When unset, executions default to 'align' (keep the map stable across runs via post-hoc registration).","enum":["none","transform","align"],"uniqueKey":"layout_stability.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Layout Stability","description":"Stored layout-stability mode from vector_config.layout_stability. Replayed into ClusteringConfig on every execute. When unset, executions default to 'align' (keep the map stable across runs via post-hoc registration).","uniqueKey":"layout_stability.oneOf.1","typeLabel":"null"}],"uniqueKey":"layout_stability","typeLabel":"enum\u003cstring> | null"},"clustered_attributes":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"clustered_attributes.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Clustered Attributes","description":"Attribute field names that were clustered. Only for attribute clustering.","uniqueKey":"clustered_attributes.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Clustered Attributes","description":"Attribute field names that were clustered. Only for attribute clustering.","uniqueKey":"clustered_attributes.oneOf.1","typeLabel":"null"}],"uniqueKey":"clustered_attributes","typeLabel":"string[] | null"},"hierarchical_grouping":{"oneOf":[{"type":"boolean","title":"Hierarchical Grouping","description":"Whether hierarchical clustering was used. Only for attribute clustering.","uniqueKey":"hierarchical_grouping.oneOf.0","typeLabel":"boolean"},{"type":"null","title":"Hierarchical Grouping","description":"Whether hierarchical clustering was used. Only for attribute clustering.","uniqueKey":"hierarchical_grouping.oneOf.1","typeLabel":"null"}],"uniqueKey":"hierarchical_grouping","typeLabel":"boolean | null"},"aggregation_method":{"oneOf":[{"type":"string","title":"Aggregation Method","description":"Method for aggregating attributes (most_frequent/first/last). Only for attribute clustering.","uniqueKey":"aggregation_method.oneOf.0","typeLabel":"string"},{"type":"null","title":"Aggregation Method","description":"Method for aggregating attributes (most_frequent/first/last). Only for attribute clustering.","uniqueKey":"aggregation_method.oneOf.1","typeLabel":"null"}],"uniqueKey":"aggregation_method","typeLabel":"string | null"},"output_collection_ids":{"items":{"type":"string","uniqueKey":"output_collection_ids.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Output Collection Ids","description":"Collection IDs where cluster documents are stored. Each holds one centroid document (is_centroid=true) per cluster and one member document (is_centroid=false) per clustered source document. A member carries cluster_id, cluster_label and source_document_id, the ID of the document you clustered, so filter on source_document_id to find a source document's cluster. For single output: list with one collection ID. For per-feature output: list with one collection ID per feature. With enrich_source_collection=true no output collection is created: this lists the source collections, and each source document carries its assignment as fields.","uniqueKey":"output_collection_ids","typeLabel":"string[]"},"output_collection_names":{"items":{"type":"string","uniqueKey":"output_collection_names.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Output Collection Names","description":"Names of output collections. Corresponds to output_collection_ids.","uniqueKey":"output_collection_names","typeLabel":"string[]"},"algorithm":{"oneOf":[{"type":"string","title":"Algorithm","description":"Clustering algorithm used (hdbscan, kmeans, attribute_based, etc.)","uniqueKey":"algorithm.oneOf.0","typeLabel":"string"},{"type":"null","title":"Algorithm","description":"Clustering algorithm used (hdbscan, kmeans, attribute_based, etc.)","uniqueKey":"algorithm.oneOf.1","typeLabel":"null"}],"uniqueKey":"algorithm","typeLabel":"string | null"},"algorithm_params":{"oneOf":[{"type":"object","title":"Algorithm Params","description":"Algorithm-specific parameters (not used for attribute_based)","additionalProperties":true,"uniqueKey":"algorithm_params.oneOf.0","typeLabel":"Algorithm Params · object"},{"type":"null","title":"Algorithm Params","description":"Algorithm-specific parameters (not used for attribute_based)","uniqueKey":"algorithm_params.oneOf.1","typeLabel":"null"}],"uniqueKey":"algorithm_params","typeLabel":"Algorithm Params · object | null"},"enrich_source":{"type":"boolean","title":"Enrich Source","description":"Whether source documents were enriched with cluster_id","default":false,"uniqueKey":"enrich_source","typeLabel":"boolean"},"source_enrichment_config":{"oneOf":[{"type":"object","title":"SourceEnrichmentConfig","description":"Configuration for source enrichment (if enrich_source=True)","example":{"field_mappings":[{"source_field":"cluster_id","target_field":"category_id"},{"source_field":"cluster_label","target_field":"category_name"},{"source_field":"distance_to_centroid","target_field":"category_confidence"}]},"properties":{"field_mappings":{"items":{"properties":{"source_field":{"type":"string","title":"Source Field","description":"Field from cluster results to include. Available fields: cluster_id, cluster_label, distance_to_centroid, member_count, keywords, x, y, z (visualization coords), metadata.*. cluster_id is the run's cluster index (cl_0, cl_1, ...); an execution with a filters override writes it qualified by that partition (\u003cpartition>:cl_0), so partitions of one cluster never share a value.","isRequired":true,"uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX].source_field","typeLabel":"string"},"target_field":{"type":"string","title":"Target Field","description":"Target field name in enriched document. Example: 'category_id' for cluster_id, 'product_category' for cluster_label","isRequired":true,"uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX].target_field","typeLabel":"string"}},"type":"object","required":["source_field","target_field"],"title":"EnrichmentFieldMapping","description":"Maps a cluster result field to a document enrichment field.\n\nSimilar to InputMapping pattern used throughout Mixpeek.","uniqueKey":"source_enrichment_config.oneOf.0.field_mappings.items.[INDEX]","typeLabel":"EnrichmentFieldMapping · object"},"type":"array","title":"Field Mappings","description":"List of field mappings from cluster results to document fields. Default includes cluster_id and cluster_label. Can include: distance_to_centroid, member_count, keywords, visualization coords (x, y, z), etc.","uniqueKey":"source_enrichment_config.oneOf.0.field_mappings","typeLabel":"EnrichmentFieldMapping · object[]"}},"uniqueKey":"source_enrichment_config.oneOf.0","typeLabel":"SourceEnrichmentConfig · object"},{"type":"null","description":"Configuration for source enrichment (if enrich_source=True)","uniqueKey":"source_enrichment_config.oneOf.1","typeLabel":"null"}],"uniqueKey":"source_enrichment_config","typeLabel":"SourceEnrichmentConfig · object | null"},"llm_labeling":{"oneOf":[{"type":"object","title":"LLMLabeling","description":"Configuration for LLM-based cluster labeling (applies to all cluster types)","example":{"enabled":true,"include_keywords":true,"include_summary":true,"labeling_inputs":{"input_mappings":[{"input_key":"title","path":"title","source_type":"payload"},{"input_key":"description","path":"description","source_type":"payload"},{"input_key":"text","path":"text","source_type":"payload"}]},"model_name":"gpt-4o-mini-2024-07-18","provider":"openai"},"properties":{"enabled":{"type":"boolean","title":"Enabled","description":"Whether to generate labels for clusters using LLM. When enabled, clusters will have semantic labels like 'High-Performance Laptops' instead of generic labels like 'Cluster 0'.","default":false,"uniqueKey":"llm_labeling.oneOf.0.enabled","typeLabel":"boolean"},"labeling_inputs":{"oneOf":[{"type":"object","title":"LLMLabelingInput","description":"Input configuration for LLM labeling. Supports flexible input mappings for multimodal inputs (text, images, videos, audio). Use input_mappings for advanced multimodal labeling with providers like Gemini. If not provided (null/undefined), the full document payload is serialized as JSON and sent to the LLM — WARNING: in practice this produces schema-metadata labels (e.g. 'Mid-Timeline Video Events' with keywords like ['start_time', 'end_time']) because the LLM describes whatever field names it sees. For meaningful labels, set input_mappings that point at semantic fields (title, description, thumbnail_url, document_blobs[].url for image/video content) rather than relying on the default.","required":["input_mappings"],"properties":{"input_mappings":{"items":{"properties":{"input_key":{"type":"string","title":"Input Key","description":"Key used in the constructed inputs payload.","isRequired":true,"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].input_key","typeLabel":"string"},"source_type":{"oneOf":[{"type":"string","title":"InputSourceType","description":"Source of the value (payload, literal, vector).","enum":["payload","literal","vector","blob"],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Source of the value (payload, literal, vector).","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].source_type","typeLabel":"enum\u003cstring> | null"},"path":{"oneOf":[{"type":"string","title":"Path","description":"Dot-notation path when source_type is PAYLOAD or VECTOR. PAYLOAD paths resolve from the document's ROOT fields — each document/source_document dict IS the payload (e.g. path 'text' reads {'text': ...}); a {'payload': {...}} envelope is also accepted as a fallback.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"type":"null","title":"Path","description":"Dot-notation path when source_type is PAYLOAD or VECTOR. PAYLOAD paths resolve from the document's ROOT fields — each document/source_document dict IS the payload (e.g. path 'text' reads {'text': ...}); a {'payload': {...}} envelope is also accepted as a fallback.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].path","typeLabel":"string | null"},"override":{"oneOf":[{"title":"Override","description":"Static value used when source_type is LITERAL. Overrides any path.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override.oneOf.0","typeLabel":"any"},{"type":"null","title":"Override","description":"Static value used when source_type is LITERAL. Overrides any path.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX].override","typeLabel":"any | null"}},"type":"object","required":["input_key"],"title":"InputMapping","description":"Declarative mapping for building inputs from various sources.\n\n- input_key: The key used in the constructed inputs payload\n- source_type: Where to fetch the value (payload, literal, vector)\n- path: Dot-notation path when source_type is PAYLOAD or VECTOR\n- override: Static value when source_type is LITERAL","examples":[{"input_key":"query_text","path":"content.title","source_type":"payload"},{"input_key":"lang","override":"en","source_type":"literal"},{"input_key":"image_vector","path":"features.clip_vit_l_14","source_type":"vector"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings.items.[INDEX]","typeLabel":"InputMapping · object"},"type":"array","minItems":1,"title":"Input Mappings","description":"Flexible input mappings for constructing LLM context. Supports multimodal inputs (text, image_url, video_url, audio_url). Each mapping specifies how to extract data from document payloads. At least one input mapping is required.","isRequired":true,"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0.input_mappings","typeLabel":"InputMapping · object[]"}},"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.0","typeLabel":"LLMLabelingInput · object"},{"type":"null","description":"Input configuration for LLM labeling. Supports flexible input mappings for multimodal inputs (text, images, videos, audio). Use input_mappings for advanced multimodal labeling with providers like Gemini. If not provided (null/undefined), the full document payload is serialized as JSON and sent to the LLM — WARNING: in practice this produces schema-metadata labels (e.g. 'Mid-Timeline Video Events' with keywords like ['start_time', 'end_time']) because the LLM describes whatever field names it sees. For meaningful labels, set input_mappings that point at semantic fields (title, description, thumbnail_url, document_blobs[].url for image/video content) rather than relying on the default.","uniqueKey":"llm_labeling.oneOf.0.labeling_inputs.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_inputs","typeLabel":"LLMLabelingInput · object | null"},"provider":{"oneOf":[{"type":"string","title":"LLMProvider","description":"LLM provider to use for labeling. Supported providers:\n- openai: GPT models (GPT-4o, GPT-4o-mini, GPT-4.1, O3-mini)\n- google: Gemini models (Gemini 2.5 Flash, Gemini 1.5 Flash)\n- anthropic: Claude models (Claude 3.5 Sonnet, Claude 3.5 Haiku)\n- typesafe: Jev (jev-latest). Picks each cluster's label from candidate_labels with a calibrated probability instead of writing one. Text only: it reads the representative documents' text fields.\n\nIf not specified, automatically inferred from model_name.","enum":["openai","google","anthropic","typesafe"],"example":"openai","uniqueKey":"llm_labeling.oneOf.0.provider.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"LLM provider to use for labeling. Supported providers:\n- openai: GPT models (GPT-4o, GPT-4o-mini, GPT-4.1, O3-mini)\n- google: Gemini models (Gemini 2.5 Flash, Gemini 1.5 Flash)\n- anthropic: Claude models (Claude 3.5 Sonnet, Claude 3.5 Haiku)\n- typesafe: Jev (jev-latest). Picks each cluster's label from candidate_labels with a calibrated probability instead of writing one. Text only: it reads the representative documents' text fields.\n\nIf not specified, automatically inferred from model_name.","example":"openai","uniqueKey":"llm_labeling.oneOf.0.provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.provider","typeLabel":"enum\u003cstring> | null"},"model_name":{"oneOf":[{"type":"string","title":"OpenAIModel","description":"OpenAI model identifiers for LLM generation.\n\nModels listed in order of capability and cost (highest to lowest).\nAll models support vision (images) except O3-mini.\n\nValues:\n GPT_4O: Latest GPT-4 Omni model (2024-08-06)\n - Use for: Production, highest quality generation\n - Context: 128K tokens\n - Vision: Yes\n - Cost: $2.50/1M input, $10/1M output\n - Performance: 200-500ms per request\n - When to use: Need best quality, willing to pay premium\n\n GPT_41: GPT-4.1 (2025-04-14)\n - Use for: Future-proofed pipelines\n - Context: 128K tokens\n - Vision: Yes\n - Cost: TBD (expected similar to GPT-4o)\n - When to use: Want latest model features\n\n GPT_4O_MINI: Smaller, faster GPT-4 Omni (2024-07-18)\n - Use for: High-volume, cost-sensitive workloads\n - Context: 128K tokens\n - Vision: Yes\n - Cost: $0.15/1M input, $0.60/1M output\n - Performance: 100-200ms per request\n - When to use: Good balance of quality and cost\n\n GPT_41_MINI: Smaller GPT-4.1 (2025-04-14)\n - Use for: Future cost-optimized pipelines\n - Context: 128K tokens\n - Vision: Yes\n - Cost: TBD (expected similar to GPT-4o-mini)\n - When to use: Want latest features at lower cost\n\n O3_MINI: Reasoning-optimized model (2025-01-31)\n - Use for: Complex reasoning, math, code\n - Context: 200K tokens\n - Vision: No\n - Cost: TBD\n - When to use: Need advanced reasoning capabilities\n\nExamples:\n - Use GPT_4O for caption generation with images (best quality)\n - Use GPT_4O_MINI for high-volume video scene summarization (cost-effective)\n - Use O3_MINI for complex entity extraction requiring reasoning","enum":["gpt-4o-2024-08-06","gpt-4o-mini-2024-07-18","gpt-4.1-2025-04-14","gpt-4.1-mini-2025-04-14","o3-mini-2025-01-31"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"string","title":"GoogleModel","description":"Google Gemini model identifiers for LLM generation.\n\nGemini models excel at multimodal understanding with best-in-class video support.\nAll models support text, images, video, audio, and PDFs.\n\nValues:\n GEMINI_3_5_FLASH_LITE: Gemini 3.5 Flash Lite model (recommended, the default)\n - Use for: Fastest generation, cost-effective multimodal\n - Context: 1M tokens\n - Multimodal: Text, images, video, audio, PDFs\n - When to use: Default choice for all Gemini use cases\n\n GEMINI_2_5_FLASH_LITE: Gemini 2.5 Flash Lite model\n - Kept so stored configs that name it still validate. The Gemini\n developer API no longer serves it to new keys; Vertex does.\n\n GEMINI_2_5_PRO: Gemini 2.5 Pro model\n - Use for: Higher quality reasoning, complex tasks\n - Context: 1M tokens\n\n GEMINI_2_5_FLASH: Gemini 2.5 Flash model\n - Kept for backward compatibility.\n\n GEMINI_3_1_FLASH_LITE: Gemini 3.1 Flash-Lite model\n - Use for: Fast, low-cost generation on the 3.1 generation","enum":["gemini-2.5-flash-lite","gemini-2.5-flash","gemini-2.5-pro","gemini-3.1-flash-lite","gemini-3.5-flash-lite"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.1","typeLabel":"enum\u003cstring>"},{"type":"string","title":"AnthropicModel","description":"Anthropic Claude model identifiers for LLM generation.\n\nClaude models excel at long context, complex reasoning, and safety.\nAll models support text and images.\n\nValues:\n CLAUDE_3_5_SONNET: Most capable Claude model\n - Use for: Complex reasoning, long documents, safety-critical\n - Context: 200K tokens\n - Vision: Yes\n - Cost: $3/1M input, $15/1M output\n - Performance: 300-800ms per request\n - When to use: Need best reasoning, safety, or long context\n\n CLAUDE_3_5_HAIKU: Fast, cost-effective Claude model\n - Use for: High-volume, quick summaries\n - Context: 200K tokens\n - Vision: Yes\n - Cost: $0.25/1M input, $1.25/1M output\n - Performance: 100-300ms per request\n - When to use: Good balance of quality and cost\n\nExamples:\n - Use CLAUDE_3_5_SONNET for complex entity extraction from contracts (best reasoning)\n - Use CLAUDE_3_5_HAIKU for high-volume content moderation (cost-effective)","enum":["claude-sonnet-4-5-20250929","claude-haiku-4-5-20251001","claude-3-5-sonnet-20241022","claude-3-5-haiku-20241022"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.2","typeLabel":"enum\u003cstring>"},{"type":"string","title":"TypeSafeModel","description":"TypeSafe AI Jev model identifiers.\n\nJev answers typed questions (choice, score, yes/no) with calibrated\nprobabilities. It reads text only and does not generate text, so it fits\ndecision steps: classification, filtering, relevance scoring, and choosing\na label or cluster branch from a fixed set.\n\nValues:\n JEV_LATEST: Most recent stable Jev release (moves on new releases)\n JEV_PREVIEW: Most recent Jev release, stable or not\n JEV_1_13: Pinned Jev 1.13; use when you tuned thresholds on it","enum":["jev-latest","jev-preview","jev-1.13.0"],"example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.3","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Model Name","description":"REQUIRED when enabled=True. Specific LLM model to use for cluster labeling. All models are defined as enums for type safety.\n\nOpenAI Models (provider='openai'):\n- gpt-4o-2024-08-06: Highest quality, best for production ($2.50/$10 per 1M tokens)\n- gpt-4o-mini-2024-07-18: Cost-effective, recommended for most use cases ($0.15/$0.60 per 1M tokens)\n- gpt-4.1-2025-04-14: Latest model, future-proofed\n- gpt-4.1-mini-2025-04-14: Latest cost-optimized model\n- o3-mini-2025-01-31: Advanced reasoning, best for complex clustering\n\nGoogle Models (provider='google'):\n- gemini-3.5-flash-lite: Fastest, latest multimodal model, recommended ($0.30/$2.50 per 1M tokens)\n\nAnthropic Models (provider='anthropic'):\n- claude-3-5-sonnet-20241022: Best reasoning, 200K context ($3/$15 per 1M tokens)\n- claude-3-5-haiku-20241022: Fast, cost-effective ($0.25/$1.25 per 1M tokens)\n\nRecommendation:\n- Use gemini-3.5-flash-lite (DEFAULT) - multimodal support\n- Use gpt-4o-mini-2024-07-18 for OpenAI compatibility\n- Use gpt-4o-2024-08-06 for highest quality when cost is not a concern","example":"gemini-3.5-flash-lite","uniqueKey":"llm_labeling.oneOf.0.model_name.oneOf.4","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.model_name","typeLabel":"enum\u003cstring> · enum\u003cstring> · enum\u003cstring> · enum\u003cstring> · null"},"include_summary":{"type":"boolean","title":"Include Summary","description":"Whether to generate cluster summaries","default":true,"uniqueKey":"llm_labeling.oneOf.0.include_summary","typeLabel":"boolean"},"include_keywords":{"type":"boolean","title":"Include Keywords","description":"Whether to extract keywords for clusters","default":true,"uniqueKey":"llm_labeling.oneOf.0.include_keywords","typeLabel":"boolean"},"max_samples_per_cluster":{"oneOf":[{"type":"integer","title":"Max Samples Per Cluster","description":"Maximum representative documents to send to LLM per cluster for semantic analysis. When null (default), automatically scales based on cluster size and spread — smaller/tighter clusters get fewer samples, larger/sparser clusters get more (range 3-20). Set explicitly to override with a fixed value.","maximum":20,"minimum":1,"uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Max Samples Per Cluster","description":"Maximum representative documents to send to LLM per cluster for semantic analysis. When null (default), automatically scales based on cluster size and spread — smaller/tighter clusters get fewer samples, larger/sparser clusters get more (range 3-20). Set explicitly to override with a fixed value.","uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.max_samples_per_cluster","typeLabel":"integer | null"},"sample_text_max_length":{"type":"integer","maximum":500,"minimum":50,"title":"Sample Text Max Length","description":"Maximum characters per document sample text","default":200,"uniqueKey":"llm_labeling.oneOf.0.sample_text_max_length","typeLabel":"integer"},"sample_selection_strategy":{"type":"string","enum":["nearest","representative"],"title":"Sample Selection Strategy","description":"How representative documents are chosen for the labeling LLM. 'nearest' (default): the N members closest to the cluster centroid — maximally prototypical, but adjacent clusters can yield near-identical sample sets and therefore near-identical labels. 'representative': a mixed panel of ~40% nearest-to-centroid, ~40% diversity picks (farthest-point coverage of the cluster's extent), and ~20% high-density examples — differentiates similar clusters at the same sample count and LLM cost.","default":"nearest","uniqueKey":"llm_labeling.oneOf.0.sample_selection_strategy","typeLabel":"enum\u003cstring>"},"use_embedding_dedup":{"type":"boolean","title":"Use Embedding Dedup","description":"Enable embedding-based label deduplication to prevent near-duplicate labels (requires sentence-transformers)","default":true,"uniqueKey":"llm_labeling.oneOf.0.use_embedding_dedup","typeLabel":"boolean"},"embedding_similarity_threshold":{"type":"number","maximum":1,"minimum":0.5,"title":"Embedding Similarity Threshold","description":"Cosine similarity threshold for duplicate label detection (labels above this are considered duplicates)","default":0.8,"uniqueKey":"llm_labeling.oneOf.0.embedding_similarity_threshold","typeLabel":"number"},"cache_ttl_seconds":{"type":"integer","maximum":2592000,"minimum":0,"title":"Cache Ttl Seconds","description":"Time-to-live for cached labels in seconds. Labels for clusters with identical representative documents will be reused within this TTL window, reducing LLM API costs. Default: 604800 (7 days). Set to 0 to disable caching.","default":604800,"uniqueKey":"llm_labeling.oneOf.0.cache_ttl_seconds","typeLabel":"integer"},"labeling_context":{"oneOf":[{"type":"string","title":"Labeling Context","description":"OPTIONAL. Freeform domain context about the data being clustered, injected into the labeling prompt as a clearly-delimited 'Domain context provided by the user' block. Unlike custom_prompt, this does NOT replace the default prompt — it grounds the default labeler so labels use the right domain vocabulary. Example: 'These are scenes from pharmaceutical TV ads' turns generic labels like 'People Talking Outdoors' into 'Patient Testimonial Scenes'. Max 2000 characters.","maxLength":2000,"example":"These are scenes from pharmaceutical TV advertisements","uniqueKey":"llm_labeling.oneOf.0.labeling_context.oneOf.0","typeLabel":"string"},{"type":"null","title":"Labeling Context","description":"OPTIONAL. Freeform domain context about the data being clustered, injected into the labeling prompt as a clearly-delimited 'Domain context provided by the user' block. Unlike custom_prompt, this does NOT replace the default prompt — it grounds the default labeler so labels use the right domain vocabulary. Example: 'These are scenes from pharmaceutical TV ads' turns generic labels like 'People Talking Outdoors' into 'Patient Testimonial Scenes'. Max 2000 characters.","example":"These are scenes from pharmaceutical TV advertisements","uniqueKey":"llm_labeling.oneOf.0.labeling_context.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.labeling_context","typeLabel":"string | null"},"custom_prompt":{"oneOf":[{"type":"string","title":"Custom Prompt","description":"OPTIONAL. Custom prompt template for LLM labeling. NOT REQUIRED - uses default discriminative prompt if not provided. When provided, completely replaces the default prompt. Your custom prompt receives cluster information but you must format it yourself. Use when: - Need domain-specific labeling (e.g., medical, legal, technical) - Want different label format (e.g., emoji labels, code names) - Require specific output structure - Have custom business logic for categorization Default prompt includes: cluster document samples, forbidden labels for uniqueness, and JSON response format. See engine/clusters/labeling/prompts.py for reference. Example: 'Analyze these product clusters and generate SHORT category names (2-3 words max) focusing on product type and price range. Return JSON: [{\"cluster_id\": \"cl_0\", \"label\": \"...\"}]'","example":"Analyze these document clusters and generate technical labels (2-3 words). Focus on programming languages and frameworks mentioned. Return JSON: [{'cluster_id': 'cl_0', 'label': '...', 'keywords': [...]}]","uniqueKey":"llm_labeling.oneOf.0.custom_prompt.oneOf.0","typeLabel":"string"},{"type":"null","title":"Custom Prompt","description":"OPTIONAL. Custom prompt template for LLM labeling. NOT REQUIRED - uses default discriminative prompt if not provided. When provided, completely replaces the default prompt. Your custom prompt receives cluster information but you must format it yourself. Use when: - Need domain-specific labeling (e.g., medical, legal, technical) - Want different label format (e.g., emoji labels, code names) - Require specific output structure - Have custom business logic for categorization Default prompt includes: cluster document samples, forbidden labels for uniqueness, and JSON response format. See engine/clusters/labeling/prompts.py for reference. Example: 'Analyze these product clusters and generate SHORT category names (2-3 words max) focusing on product type and price range. Return JSON: [{\"cluster_id\": \"cl_0\", \"label\": \"...\"}]'","example":"Analyze these document clusters and generate technical labels (2-3 words). Focus on programming languages and frameworks mentioned. Return JSON: [{'cluster_id': 'cl_0', 'label': '...', 'keywords': [...]}]","uniqueKey":"llm_labeling.oneOf.0.custom_prompt.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.custom_prompt","typeLabel":"string | null"},"response_shape":{"oneOf":[{"type":"string","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.0","typeLabel":"string"},{"type":"object","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","additionalProperties":true,"uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.1","typeLabel":"Response Shape · object"},{"type":"null","title":"Response Shape","description":"OPTIONAL. Define custom structured output for LLM labeling. NOT REQUIRED - uses default structure (label, summary, keywords) if not provided. When provided, LLM output will match this structure and be stored in cluster documents. \n\nTwo modes supported:\n1. Natural language prompt (string): Describe desired output in plain English\n - Service automatically infers JSON schema from your description\n - Example: 'Extract cluster category, confidence score (0-1), and top 3 representative terms'\n - Auto-generates schema with appropriate types (string, number, array, etc.)\n\n2. Explicit JSON schema (dict): Provide complete JSON schema for output structure\n - Full control over output structure, types, and constraints\n - Example: {'type': 'object', 'properties': {'category': {'type': 'string'}, ...}}\n\n\nUse when:\n - Need custom metadata fields (confidence scores, sentiment, complexity)\n - Want domain-specific structure (taxonomy hierarchies, entity extractions)\n - Require specific data types (arrays, nested objects, enums)\n - Have downstream schema requirements\n\n\nOutput fields are automatically added to cluster collection schema and stored in metadata.\nDefault behavior (if not provided): label (string), summary (string), keywords (array of strings)\n","example":"Extract cluster category, confidence score between 0 and 1, and top 3 representative keywords","uniqueKey":"llm_labeling.oneOf.0.response_shape.oneOf.2","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.response_shape","typeLabel":"string | Response Shape · object | null"},"parameters":{"additionalProperties":true,"type":"object","title":"Parameters","description":"Provider-specific parameters forwarded to the LLM service. For OpenAI: temperature, max_tokens, top_p, json_output, etc. For Google: temperature, top_k, max_output_tokens, json_output, etc.","uniqueKey":"llm_labeling.oneOf.0.parameters","typeLabel":"Parameters · object"},"candidate_labels":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.0","typeLabel":"string[]"},{"type":"object","title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1.additionalProperties","typeLabel":"string | null"},"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.1","typeLabel":"Candidate Labels · object"},{"type":"null","title":"Candidate Labels","description":"OPTIONAL. A fixed vocabulary to label clusters from. Each cluster gets the candidate that best fits its representative documents, instead of a freshly written name. Pass a list of labels, or a map of label to a one-line description of what belongs under it. Up to 255 labels. REQUIRED when provider is 'typesafe' (Jev) unless response_shape is an explicit schema of closed-set fields, because Jev picks from options and does not write text. The picked label's probability is stored as label_confidence. Useful for mapping clusters onto an existing taxonomy level, and for labeling every level of a hierarchical run with a consistent vocabulary.","example":["Skateboarding","Surfing","Snowboarding","Cooking"],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels.oneOf.2","typeLabel":"null"}],"uniqueKey":"llm_labeling.oneOf.0.candidate_labels","typeLabel":"string[] | Candidate Labels · object | null"}},"uniqueKey":"llm_labeling.oneOf.0","typeLabel":"LLMLabeling · object"},{"type":"null","description":"Configuration for LLM-based cluster labeling (applies to all cluster types)","uniqueKey":"llm_labeling.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling","typeLabel":"LLMLabeling · object | null"},"num_clusters":{"oneOf":[{"type":"integer","title":"Num Clusters","description":"Number of clusters found (excludes noise/outliers, populated after execution)","uniqueKey":"num_clusters.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Num Clusters","description":"Number of clusters found (excludes noise/outliers, populated after execution)","uniqueKey":"num_clusters.oneOf.1","typeLabel":"null"}],"uniqueKey":"num_clusters","typeLabel":"integer | null"},"num_documents_clustered":{"oneOf":[{"type":"integer","title":"Num Documents Clustered","description":"Total documents processed","uniqueKey":"num_documents_clustered.oneOf.0","typeLabel":"integer"},{"type":"null","title":"Num Documents Clustered","description":"Total documents processed","uniqueKey":"num_documents_clustered.oneOf.1","typeLabel":"null"}],"uniqueKey":"num_documents_clustered","typeLabel":"integer | null"},"execution_time_seconds":{"oneOf":[{"type":"number","title":"Execution Time Seconds","description":"Time taken to complete clustering","uniqueKey":"execution_time_seconds.oneOf.0","typeLabel":"number"},{"type":"null","title":"Execution Time Seconds","description":"Time taken to complete clustering","uniqueKey":"execution_time_seconds.oneOf.1","typeLabel":"null"}],"uniqueKey":"execution_time_seconds","typeLabel":"number | null"},"quality_metrics":{"oneOf":[{"type":"object","title":"Quality Metrics","description":"Clustering quality metrics (silhouette_score, davies_bouldin_score, calinski_harabasz_score, etc.). Open diagnostic bag like ClusteringResult.metrics: mostly numeric, but the three-state degenerate flag (False | reason string) and its prose degenerate_detail are non-numeric, so the value type is Any. A float-only type 400'd every GET on a cluster whose run flagged a degenerate result ('s read-path sibling: the write side persisted the string, this read side then rejected it).","additionalProperties":true,"uniqueKey":"quality_metrics.oneOf.0","typeLabel":"Quality Metrics · object"},{"type":"null","title":"Quality Metrics","description":"Clustering quality metrics (silhouette_score, davies_bouldin_score, calinski_harabasz_score, etc.). Open diagnostic bag like ClusteringResult.metrics: mostly numeric, but the three-state degenerate flag (False | reason string) and its prose degenerate_detail are non-numeric, so the value type is Any. A float-only type 400'd every GET on a cluster whose run flagged a degenerate result ('s read-path sibling: the write side persisted the string, this read side then rejected it).","uniqueKey":"quality_metrics.oneOf.1","typeLabel":"null"}],"uniqueKey":"quality_metrics","typeLabel":"Quality Metrics · object | null"},"hierarchy_detected":{"type":"boolean","title":"Hierarchy Detected","description":"Whether implicit hierarchy was detected (multi-feature independent) or created (hierarchical attributes)","default":false,"uniqueKey":"hierarchy_detected","typeLabel":"boolean"},"parent_cluster_id":{"oneOf":[{"type":"string","title":"Parent Cluster Id","description":"For child clusters in hierarchy","uniqueKey":"parent_cluster_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Parent Cluster Id","description":"For child clusters in hierarchy","uniqueKey":"parent_cluster_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"parent_cluster_id","typeLabel":"string | null"},"child_cluster_ids":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"child_cluster_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Child Cluster Ids","description":"For parent clusters","uniqueKey":"child_cluster_ids.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Child Cluster Ids","description":"For parent clusters","uniqueKey":"child_cluster_ids.oneOf.1","typeLabel":"null"}],"uniqueKey":"child_cluster_ids","typeLabel":"string[] | null"},"hierarchy_relationships":{"oneOf":[{"type":"array","items":{"additionalProperties":true,"type":"object","uniqueKey":"hierarchy_relationships.oneOf.0.items.[INDEX]","typeLabel":"object"},"title":"Hierarchy Relationships","description":"Parent-child relationships detected from cluster membership overlap","uniqueKey":"hierarchy_relationships.oneOf.0","typeLabel":"Hierarchy Relationships · object[]"},{"type":"null","title":"Hierarchy Relationships","description":"Parent-child relationships detected from cluster membership overlap","uniqueKey":"hierarchy_relationships.oneOf.1","typeLabel":"null"}],"uniqueKey":"hierarchy_relationships","typeLabel":"Hierarchy Relationships · object[] | null"},"status":{"type":"string","enum":["PENDING","QUEUED","IN_PROGRESS","PROCESSING","COMPLETED","COMPLETED_WITH_ERRORS","FAILED","CANCELED","INTERRUPTED","UNKNOWN","SKIPPED","DRAFT","ACTIVE","ARCHIVED","SUSPENDED","DEACTIVATED"],"title":"TaskStatusEnum","description":"Cluster job status (propagated from TaskService)","default":"PENDING","uniqueKey":"status","typeLabel":"enum\u003cstring>"},"error":{"oneOf":[{"type":"string","title":"Error","description":"Error message if cluster execution failed. Propagated from TaskService.","uniqueKey":"error.oneOf.0","typeLabel":"string"},{"type":"null","title":"Error","description":"Error message if cluster execution failed. Propagated from TaskService.","uniqueKey":"error.oneOf.1","typeLabel":"null"}],"uniqueKey":"error","typeLabel":"string | null"},"failure_category":{"oneOf":[{"type":"string","title":"FailureCategory","description":"Machine-readable failure classification. Same enum as batch failure_category.","enum":["timeout","infrastructure","orphaned","pipeline","mvs_durability","validation","unknown"],"uniqueKey":"failure_category.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","description":"Machine-readable failure classification. Same enum as batch failure_category.","uniqueKey":"failure_category.oneOf.1","typeLabel":"null"}],"uniqueKey":"failure_category","typeLabel":"enum\u003cstring> | null"},"last_execution_task_id":{"oneOf":[{"type":"string","title":"Last Execution Task Id","description":"Most recent task ID for this cluster","uniqueKey":"last_execution_task_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Last Execution Task Id","description":"Most recent task ID for this cluster","uniqueKey":"last_execution_task_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_execution_task_id","typeLabel":"string | null"},"last_run_id":{"oneOf":[{"type":"string","title":"Last Run Id","description":"Most recent execution run ID","uniqueKey":"last_run_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Last Run Id","description":"Most recent execution run ID","uniqueKey":"last_run_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_run_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","title":"Created At","description":"When cluster was created","uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","title":"Updated At","description":"When cluster was last updated","uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"},"last_executed_at":{"oneOf":[{"type":"string","title":"Last Executed At","description":"Last execution timestamp","format":"date-time","uniqueKey":"last_executed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Last Executed At","description":"Last execution timestamp","uniqueKey":"last_executed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"last_executed_at","typeLabel":"string\u003cdate-time> | null"},"completed_at":{"oneOf":[{"type":"string","title":"Completed At","description":"When clustering completed successfully","format":"date-time","uniqueKey":"completed_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Completed At","description":"When clustering completed successfully","uniqueKey":"completed_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"completed_at","typeLabel":"string\u003cdate-time> | null"},"llm_labeling_errors":{"oneOf":[{"type":"array","items":{"type":"string","uniqueKey":"llm_labeling_errors.oneOf.0.items.[INDEX]","typeLabel":"string"},"title":"Llm Labeling Errors","description":"List of errors encountered during LLM labeling (if any). Stored in MongoDB cluster metadata only, NOT in vector store cluster documents. Used to track LLM failures while allowing fallback labels to work.","uniqueKey":"llm_labeling_errors.oneOf.0","typeLabel":"string[]"},{"type":"null","title":"Llm Labeling Errors","description":"List of errors encountered during LLM labeling (if any). Stored in MongoDB cluster metadata only, NOT in vector store cluster documents. Used to track LLM failures while allowing fallback labels to work.","uniqueKey":"llm_labeling_errors.oneOf.1","typeLabel":"null"}],"uniqueKey":"llm_labeling_errors","typeLabel":"string[] | null"},"metadata":{"additionalProperties":true,"type":"object","title":"Metadata","description":"Additional user-defined metadata","uniqueKey":"metadata","typeLabel":"Metadata · object"}},"type":"object","required":["cluster_name","namespace_id","input_collections","cluster_type"],"title":"ClusterMetadata","description":"Cluster job metadata stored in MongoDB clusters collection.\n\nThis is separate from cluster documents themselves. Tracks job-level\nconfiguration, status, and summary statistics.\n\nSupports both vector and attribute clustering with appropriate metadata.","uniqueKey":"","typeLabel":"ClusterMetadata · object"},"examples":{"Example":{"title":"Example","value":{"cluster_name":"\u003cstring>","namespace_id":"\u003cstring>","input_collections":["\u003cstring>"],"cluster_type":"vector","cluster_id":"\u003cstring>","description":"\u003cstring>","source_cluster_ids":["\u003cstring>"],"source_bucket_ids":["\u003cstring>"],"filters":{},"feature_uris":["\u003cstring>"],"multi_feature_strategy":"\u003cstring>","learned_weights":{},"learning_quality_score":123,"effective_feature_method":"\u003cstring>","face_cluster_merge":{"enabled":true,"centroid_cosine_threshold":0.55,"bbox_iou_threshold":0.4,"scene_jaccard_threshold":0.3,"bbox_field":"bbox","frame_field":"frame_number","scene_field":"scene_id"},"sample_size":123,"preprocessing_steps":[{}],"hierarchical_vector":true,"max_hierarchy_depth":123,"vis_n_components":2,"layout_stability":"none","clustered_attributes":["\u003cstring>"],"hierarchical_grouping":true,"aggregation_method":"\u003cstring>","output_collection_ids":["\u003cstring>"],"output_collection_names":["\u003cstring>"],"algorithm":"\u003cstring>","algorithm_params":{},"enrich_source":false,"source_enrichment_config":{"field_mappings":[{"source_field":"cluster_id","target_field":"category_id"},{"source_field":"cluster_label","target_field":"category_name"},{"source_field":"distance_to_centroid","target_field":"category_confidence"}]},"llm_labeling":{"enabled":true,"include_keywords":true,"include_summary":true,"labeling_inputs":{"input_mappings":[{"input_key":"title","path":"title","source_type":"payload"},{"input_key":"description","path":"description","source_type":"payload"},{"input_key":"text","path":"text","source_type":"payload"}]},"model_name":"gpt-4o-mini-2024-07-18","provider":"openai"},"num_clusters":123,"num_documents_clustered":123,"execution_time_seconds":123,"quality_metrics":{},"hierarchy_detected":false,"parent_cluster_id":"\u003cstring>","child_cluster_ids":["\u003cstring>"],"hierarchy_relationships":[{}],"status":"PENDING","error":"\u003cstring>","failure_category":"timeout","last_execution_task_id":"\u003cstring>","last_run_id":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z","last_executed_at":"2023-11-07T05:31:56Z","completed_at":"2023-11-07T05:31:56Z","llm_labeling_errors":["\u003cstring>"],"metadata":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"318633cc-6c64-4f46-996f-d2f02b936c72":{"description":"Bad Request","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"b4d766ea-8f63-4c22-adeb-59e7a32fb038":{"description":"Unauthorized","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"b2967cb6-5c1a-4fb4-a42b-315a6719d8d8":{"description":"Forbidden","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"68b63ffe-12eb-47c8-9dff-8b93591f9c26":{"description":"Not Found","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"351e1848-d945-47ed-87cc-336d4d79c1c4":{"description":"Unprocessable Entity","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"1a986b32-d11a-48a5-a8a6-bd4d31681e8b":{"description":"Too Many Requests","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"b63721e2-f694-494a-bfd5-6d4b4d56107a":{"description":"Internal Server Error","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"},"d502c597-1dd2-43e8-a351-dd4843be9903":{"description":"Service Unavailable","content":{"application/json":{"schema":{"properties":{"status":{"type":"integer","title":"Status","description":"HTTP status code for this error","isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"error":{"properties":{"message":{"type":"string","title":"Message","description":"Human-readable error message","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"type":{"type":"string","title":"Type","description":"Stable error type identifier (machine-readable)","isRequired":true,"uniqueKey":"error.type","typeLabel":"string"},"code":{"oneOf":[{"type":"string","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.0","typeLabel":"string"},{"type":"null","title":"Code","description":"Fine-grained error code for programmatic handling (e.g., namespace_name_taken, feature_extractor_not_found). Present only when consumers may need to branch on a specific error condition.","uniqueKey":"error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.code","typeLabel":"string | null"},"details":{"oneOf":[{"type":"object","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","additionalProperties":true,"uniqueKey":"error.details.oneOf.0","typeLabel":"Details · object"},{"type":"null","title":"Details","description":"Optional structured details to help debugging (validation errors, IDs, etc.)","uniqueKey":"error.details.oneOf.1","typeLabel":"null"}],"uniqueKey":"error.details","typeLabel":"Details · object | null"}},"type":"object","required":["message","type"],"title":"ErrorDetail","description":"Error details payload","isRequired":true,"uniqueKey":"error","typeLabel":"ErrorDetail · object"},"success":{"type":"boolean","title":"Success","description":"Always false for error responses","default":false,"uniqueKey":"success","typeLabel":"boolean"}},"type":"object","required":["status","error"],"title":"ErrorResponse","description":"Error response model.","examples":[{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}],"uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"error":{"details":{"id":"ns_123","resource":"namespace"},"message":"Namespace not found","type":"NotFoundError"},"status":404,"success":false}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c57999ef-31ba-48bb-be9a-40d2b509f2cc":{"BearerAuth":{"type":"http","scheme":"bearer","description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","scopes":[],"schemeName":"BearerAuth"},"NamespaceHeader":{"type":"apiKey","in":"header","name":"X-Namespace","description":"Namespace id (`ns_...`), not the namespace name. This scopes the request rather than authenticating it, and it is required on every operation marked `x-mixpeek-namespace-scoped`.","scopes":[],"schemeName":"NamespaceHeader"}}},"servers":{"a3ca4d02-9041-4306-8eae-afdf7d554be4":{"url":"https://api.mixpeek.com","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Mixpeek API key, sent as `Authorization: Bearer mxp_sk_...`. Create one in Studio under Settings → API Keys, or with an admin key via `POST /v1/organizations/users/{user_email}/api-keys`. A missing, malformed, unknown, revoked, inactive or expired key returns 401; a key without the permission, scope or plan an operation needs returns 403.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"},{"scheme":{"type":"apiKey","in":"header","name":"X-Namespace","description":"Namespace id (`ns_...`), not the namespace name. This scopes the request rather than authenticating it, and it is required on every operation marked `x-mixpeek-namespace-scoped`.","scopes":[],"schemeName":"NamespaceHeader"},"schema":{"title":"X-Namespace","type":"string","description":"Namespace id (`ns_...`), not the namespace name. This scopes the request rather than authenticating it, and it is required on every operation marked `x-mixpeek-namespace-scoped`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"NamespaceHeader","name":"X-Namespace"}],"title":"BearerAuth \u0026 NamespaceHeader"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"mixpeek","siteName":"Mixpeek","title":"Create Cluster - Mixpeek","navMaps":{"firstHrefInVersion":{"v1":{"href":"/api-reference/clusters/create-cluster","matchLevel":0}},"firstHrefInLanguage":{}},"lastModified":"2026-01-23T23:19:11.196Z","originalFileLocation":"api-reference/clusters/create-cluster.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=\"Create a new cluster configuration and output collection. This endpoint: 1. Creates cluster metadata 2. Creates output collection for cluster documents 3. Returns cluster metadata with output_collection_id The cluster can then be executed via POST /v1/clusters/{id}/execute\">\u003cmeta data-mint-head name=\"application-name\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create Cluster - Mixpeek\">\u003cmeta data-mint-head property=\"og:description\" content=\"Create a new cluster configuration and output collection. This endpoint: 1. Creates cluster metadata 2. Creates output collection for cluster documents 3. Returns cluster metadata with output_collection_id The cluster can then be executed via POST /v1/clusters/{id}/execute\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Mixpeek\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Clusters\u0026amp;title=Create+Cluster\u0026amp;description=Create+a+new+cluster+configuration+and+output+collection.%0A%0A++++This+endpoint%3A%0A++++1.+Creates+cluster+metadata%0A++++2.+Creates+output+collection+for+cluster+docum\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=55f6d58f4e9c1aa2f8dd29c7097f675ff8d85ec773faf7d27e35c86a57bbb405\">\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=\"Create Cluster - Mixpeek\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Create a new cluster configuration and output collection. This endpoint: 1. Creates cluster metadata 2. Creates output collection for cluster documents 3. Returns cluster metadata with output_collection_id The cluster can then be executed via POST /v1/clusters/{id}/execute\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mixpeek.mintlify.site/docs/_mintlify/api/og/v2?division=Clusters\u0026amp;title=Create+Cluster\u0026amp;description=Create+a+new+cluster+configuration+and+output+collection.%0A%0A++++This+endpoint%3A%0A++++1.+Creates+cluster+metadata%0A++++2.+Creates+output+collection+for+cluster+docum\u0026amp;theme=c63607064cbc270563da1421\u0026amp;signature=55f6d58f4e9c1aa2f8dd29c7097f675ff8d85ec773faf7d27e35c86a57bbb405\">\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=\"/docs/mintlify-assets/_mintlify/favicons/mixpeek/FL3jtq6uKM5AAW-Z/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Mixpeek\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#FC5185\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/clusters/create-cluster.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mixpeek.com/#organization\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mixpeek/QQyAGObvvz8PjpE0/logo/light.png?fit=max\u0026auto=format\u0026n=QQyAGObvvz8PjpE0\u0026q=85\u0026s=ac5ab550180057404fe833886513775f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mixpeek.com/docs#website\",\"name\":\"Mixpeek\",\"url\":\"https://docs.mixpeek.com/docs\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster#webpage\",\"url\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster\",\"name\":\"Create Cluster\",\"description\":\"Create a new cluster configuration and output collection. This endpoint: 1. Creates cluster metadata 2. Creates output collection for cluster documents 3. Returns cluster metadata with output_collection_id The cluster can then be executed via POST /v1/clusters/{id}/execute\",\"dateModified\":\"2026-01-23T23:19:11.196Z\",\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Enrich \u0026 Improve\",\"item\":\"https://docs.mixpeek.com/docs/api-reference/taxonomies/create-taxonomy\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create Cluster\",\"item\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster#apireference\",\"headline\":\"Create Cluster\",\"name\":\"Create Cluster\",\"description\":\"Create a new cluster configuration and output collection. This endpoint: 1. Creates cluster metadata 2. Creates output collection for cluster documents 3. Returns cluster metadata with output_collection_id The cluster can then be executed via POST /v1/clusters/{id}/execute\",\"url\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mixpeek.com/docs/api-reference/clusters/create-cluster#webpage\"},\"dateModified\":\"2026-01-23T23:19:11.196Z\",\"publisher\":{\"@id\":\"https://docs.mixpeek.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mixpeek.com/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Mixpeek\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Mixpeek","nav":{"global":{"anchors":[{"anchor":"Homepage","icon":"house","href":"https://mixpeek.com"},{"anchor":"Engineering Blog","icon":"newspaper","href":"https://mixpeek.com/blog"},{"anchor":"API Swagger","icon":"file-code","href":"https://api.mixpeek.com/docs"}]},"versions":[{"version":"v1","default":true,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/overview/introduction"}]},{"tab":"Vector Store","pages":[{"title":"Vector Store","href":"/vector-store/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/tutorials/semantic-search"}]},{"tab":"API Reference","groups":[{"group":"Namespaces","pages":[{"openapi":"post /v1/namespaces","title":"Create Namespace","href":"/api-reference/namespaces/create-namespace"},{"openapi":"get /v1/namespaces/{namespace_identifier}","title":"Get Namespace","href":"/api-reference/namespaces/get-namespace"},{"openapi":"put /v1/namespaces/{namespace_identifier}","title":"Update Namespace","href":"/api-reference/namespaces/update-namespace"},{"openapi":"patch /v1/namespaces/{namespace_identifier}","title":"Partially Update Namespace","href":"/api-reference/namespaces/partially-update-namespace"},{"openapi":"post /v1/namespaces/list","title":"List Namespaces","href":"/api-reference/namespaces/list-namespaces"},{"openapi":"get /v1/namespaces/{namespace_identifier}/stats","title":"Get Namespace Stats","href":"/api-reference/namespaces/get-namespace-stats"},{"openapi":"delete /v1/namespaces/{namespace_identifier}","title":"Delete Namespace","href":"/api-reference/namespaces/delete-namespace"},{"group":"Clone","pages":[{"openapi":"post /v1/namespaces/{namespace_identifier}/clone","title":"Clone Namespace","href":"/api-reference/namespace-clone/clone-namespace"}]},{"group":"Migrations","pages":[{"openapi":"post /v1/namespaces/migrations/","title":"Create Migration","href":"/api-reference/namespace-migrations/create-migration"},{"openapi":"get /v1/namespaces/migrations/{migration_id}","title":"Get Migration","href":"/api-reference/namespace-migrations/get-migration"},{"openapi":"post /v1/namespaces/migrations/list","title":"List Migrations","href":"/api-reference/namespace-migrations/list-migrations"},{"openapi":"post /v1/namespaces/migrations/{migration_id}/start","title":"Start Migration","href":"/api-reference/namespace-migrations/start-migration"},{"openapi":"post /v1/namespaces/migrations/validate","title":"Validate Migration","href":"/api-reference/namespace-migrations/validate-migration"},{"openapi":"post /v1/namespaces/migrations/{migration_id}/cancel","title":"Cancel Migration","href":"/api-reference/namespace-migrations/cancel-migration"},{"openapi":"delete /v1/namespaces/migrations/{migration_id}","title":"Delete Migration","href":"/api-reference/namespace-migrations/delete-migration"}]},{"group":"Extractors","pages":[{"openapi":"get /v1/namespaces/{namespace_id}/extractors","title":"List all extractors available to namespace","href":"/api-reference/namespace-extractors/list-all-extractors-available-to-namespace"},{"openapi":"get /v1/namespaces/{namespace_id}/extractors/{extractor_id}","title":"Get extractor details","href":"/api-reference/namespace-extractors/get-extractor-details"}]},{"group":"Models","pages":[{"openapi":"get /v1/namespaces/{namespace_id}/models","title":"List models in namespace","href":"/api-reference/custom-models/list-models-in-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/models","title":"Upload a custom model","href":"/api-reference/custom-models/upload-a-custom-model"},{"openapi":"get /v1/namespaces/{namespace_id}/models/{model_id}","title":"Get model details","href":"/api-reference/custom-models/get-model-details"},{"openapi":"post /v1/namespaces/{namespace_id}/models/{model_id}/deploy","title":"Deploy model to Ray object store","href":"/api-reference/custom-models/deploy-model-to-ray-object-store"},{"openapi":"post /v1/namespaces/{namespace_id}/models/org/{model_id}/enable","title":"Enable org model for namespace","href":"/api-reference/custom-models/enable-org-model-for-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/models/org/{model_id}/disable","title":"Disable org model for namespace","href":"/api-reference/custom-models/disable-org-model-for-namespace"},{"openapi":"get /v1/namespaces/{namespace_id}/models/available","title":"List available org models","href":"/api-reference/custom-models/list-available-org-models"},{"openapi":"delete /v1/namespaces/{namespace_id}/models/{model_id}","title":"Delete a model","href":"/api-reference/custom-models/delete-a-model"}]},{"group":"Snapshots","pages":[{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots","title":"Create Namespace Snapshot","href":"/api-reference/namespace-snapshots/create-namespace-snapshot"},{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots/list","title":"List Namespace Snapshots","href":"/api-reference/namespace-snapshots/list-namespace-snapshots"},{"openapi":"get /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}","title":"Get Snapshot","href":"/api-reference/namespace-snapshots/get-snapshot"},{"openapi":"delete /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}","title":"Delete Snapshot","href":"/api-reference/namespace-snapshots/delete-snapshot"},{"openapi":"get /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}/verify","title":"Verify Snapshot Restore-Readiness","href":"/api-reference/namespace-snapshots/verify-snapshot-restore-readiness"},{"openapi":"post /v1/namespaces/{namespace_identifier}/snapshots/{snapshot_id}/restore","title":"Restore From Snapshot","href":"/api-reference/namespace-snapshots/restore-from-snapshot"}]},{"openapi":"get /v1/namespaces","title":"List Namespaces","href":"/api-reference/namespaces/list-namespaces-get"},{"openapi":"post /v1/namespaces/stats/batch","title":"Get Namespace Stats (Batch)","href":"/api-reference/namespaces/get-namespace-stats-batch"},{"openapi":"post /v1/namespaces/{namespace_identifier}/ensure-indexes","title":"Ensure Namespace Payload Indexes","href":"/api-reference/namespaces/ensure-namespace-payload-indexes"},{"group":"BYO vectors","pages":[{"openapi":"post /v1/namespaces/{namespace_id}/documents/upsert","title":"Upsert documents with BYO vectors","href":"/api-reference/byo-documents/upsert-documents-byo-vectors"},{"openapi":"get /v1/namespaces/{namespace_id}/documents/{document_id}","title":"Get a document by ID (path-scoped namespace)","href":"/api-reference/byo-documents/get-document-id"},{"openapi":"post /v1/namespaces/standalone","title":"Create standalone namespace (BYO vectors)","href":"/api-reference/byo-documents/create-standalone-namespace"},{"openapi":"post /v1/namespaces/{namespace_id}/promote","title":"Promote standalone namespace to managed mode","href":"/api-reference/byo-documents/promote-standalone-namespace-managed-mode"},{"openapi":"post /v1/namespaces/{namespace_id}/promote/validate","title":"Dry-run validate a standalone → managed promotion","href":"/api-reference/byo-documents/dry-run-validate-standalone-managed-promotion"}]}]},{"group":"Buckets","pages":[{"openapi":"post /v1/buckets","title":"Create Bucket","href":"/api-reference/buckets/create-bucket"},{"openapi":"get /v1/buckets/{bucket_identifier}","title":"Get Bucket","href":"/api-reference/buckets/get-bucket"},{"openapi":"put /v1/buckets/{bucket_identifier}","title":"Update Bucket","href":"/api-reference/buckets/update-bucket"},{"openapi":"patch /v1/buckets/{bucket_identifier}","title":"Partially Update Bucket","href":"/api-reference/buckets/partially-update-bucket"},{"openapi":"post /v1/buckets/list","title":"List Buckets","href":"/api-reference/buckets/list-buckets"},{"openapi":"delete /v1/buckets/{bucket_identifier}","title":"Delete Bucket","href":"/api-reference/buckets/delete-bucket"},{"group":"Syncs","pages":[{"openapi":"post /v1/buckets/{bucket_id}/syncs/list","title":"List Sync Configurations","href":"/api-reference/bucket-syncs/list-sync-configurations"},{"openapi":"post /v1/buckets/{bucket_id}/syncs","title":"Create Sync Configuration","href":"/api-reference/bucket-syncs/create-sync-configuration"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Get Sync Configuration","href":"/api-reference/bucket-syncs/get-sync-configuration"},{"openapi":"patch /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Update Sync Configuration","href":"/api-reference/bucket-syncs/update-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/pause","title":"Pause Sync Configuration","href":"/api-reference/bucket-syncs/pause-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/resume","title":"Resume Sync Configuration","href":"/api-reference/bucket-syncs/resume-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/trigger","title":"Trigger Sync Configuration","href":"/api-reference/bucket-syncs/trigger-sync-configuration"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/unlock","title":"Force Unlock Sync Configuration","href":"/api-reference/bucket-syncs/force-unlock-sync-configuration"},{"openapi":"delete /v1/buckets/{bucket_id}/syncs/{sync_config_id}","title":"Delete Sync Configuration","href":"/api-reference/bucket-syncs/delete-sync-configuration"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}/metrics","title":"Get Sync Metrics","href":"/api-reference/bucket-syncs/get-sync-metrics"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/jobs","title":"List Sync Jobs","href":"/api-reference/bucket-syncs/list-sync-jobs"},{"openapi":"get /v1/buckets/{bucket_id}/syncs/{sync_config_id}/jobs/{sync_job_id}","title":"Get Sync Job","href":"/api-reference/bucket-syncs/get-sync-job"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq","title":"List Dlq Entries","href":"/api-reference/bucket-syncs/list-dlq-entries"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq/requeue","title":"Requeue Dlq Entries","href":"/api-reference/bucket-syncs/requeue-dlq-entries"},{"openapi":"post /v1/buckets/{bucket_id}/syncs/{sync_config_id}/dlq/bulk-mark-failed","title":"Bulk Mark Dlq Permanently Failed","href":"/api-reference/bucket-syncs/bulk-mark-dlq-permanently-failed"}]},{"group":"Source adapter","pages":[{"openapi":"get /v1/buckets/{bucket_id}/source-adapter/status","title":"Get Adapter Status","href":"/api-reference/bucket-source-adapter/get-source-adapter-status"},{"openapi":"post /v1/buckets/{bucket_id}/source-adapter/refresh","title":"Refresh Source Adapter","href":"/api-reference/bucket-source-adapter/refresh-source-adapter"}]},{"group":"Objects","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/objects","title":"Create Object","href":"/api-reference/bucket-objects/create-object"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/batch","title":"Create Objects in Batch","href":"/api-reference/bucket-objects/create-objects-in-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Get Object","href":"/api-reference/bucket-objects/get-object"},{"openapi":"put /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Update Object","href":"/api-reference/bucket-objects/update-object"},{"openapi":"patch /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Partially Update Object","href":"/api-reference/bucket-objects/partially-update-object"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/list","title":"List Objects","href":"/api-reference/bucket-objects/list-objects"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/aggregate","title":"Aggregate Objects","href":"/api-reference/bucket-objects/aggregate-objects"},{"openapi":"delete /v1/buckets/{bucket_identifier}/objects/{object_identifier}","title":"Delete Object","href":"/api-reference/bucket-objects/delete-object"},{"openapi":"get /v1/buckets/{bucket_identifier}/objects","title":"List Objects (GET)","href":"/api-reference/bucket-objects/list-objects-get"},{"openapi":"post /v1/buckets/{bucket_identifier}/objects/bulk-soft-delete","title":"Bulk Soft-Delete Objects","href":"/api-reference/bucket-objects/bulk-soft-delete-objects"}]},{"group":"Uploads","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/uploads","title":"Create Upload","href":"/api-reference/bucket-uploads/create-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/batch","title":"Batch Create Uploads","href":"/api-reference/bucket-uploads/batch-create-uploads"},{"openapi":"get /v1/buckets/{bucket_identifier}/uploads/{upload_id}","title":"Get Upload","href":"/api-reference/bucket-uploads/get-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/{upload_id}/confirm","title":"Confirm Upload","href":"/api-reference/bucket-uploads/confirm-upload"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/confirm/batch","title":"Batch Confirm Uploads","href":"/api-reference/bucket-uploads/batch-confirm-uploads"},{"openapi":"post /v1/buckets/{bucket_identifier}/uploads/list","title":"List Uploads","href":"/api-reference/bucket-uploads/list-uploads"},{"openapi":"delete /v1/buckets/{bucket_identifier}/uploads/{upload_id}","title":"Delete Upload","href":"/api-reference/bucket-uploads/delete-upload"}]},{"group":"Batches","pages":[{"openapi":"post /v1/buckets/{bucket_identifier}/batches","title":"Create Batch","href":"/api-reference/bucket-batches/create-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/objects","title":"Add Objects to Batch","href":"/api-reference/bucket-batches/add-objects-to-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Get Batch Configuration","href":"/api-reference/bucket-batches/get-batch-configuration"},{"openapi":"patch /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Partially Update Batch","href":"/api-reference/bucket-batches/partially-update-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/submit","title":"Submit Batch for Processing","href":"/api-reference/bucket-batches/submit-batch-for-processing"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/submit-all","title":"Submit All Draft Batches","href":"/api-reference/bucket-batches/submit-all-draft-batches"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/list","title":"List Batches","href":"/api-reference/bucket-batches/list-batches"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/logs","title":"Get Ray Job Logs for Batch","href":"/api-reference/bucket-batches/get-ray-job-logs-for-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/cancel","title":"Cancel Batch","href":"/api-reference/bucket-batches/cancel-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/cancel","title":"Cancel Tier","href":"/api-reference/bucket-batches/cancel-tier"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/jobs/{ray_job_id}/cancel","title":"Cancel Job","href":"/api-reference/bucket-batches/cancel-job"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/retry","title":"Retry Tier with Resource Overrides","href":"/api-reference/bucket-batches/retry-tier"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/retry","title":"Retry Failed Documents","href":"/api-reference/bucket-batches/retry-failed-documents"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/resubmit","title":"Resubmit Failed Batch","href":"/api-reference/bucket-batches/resubmit-failed-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/tiers/{tier_num}/heal","title":"Manual Self-Healing","href":"/api-reference/bucket-batches/heal-tier"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/diagnose","title":"Diagnose Batch","href":"/api-reference/bucket-batches/diagnose-batch"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/failed-documents","title":"Get Failed Documents for Batch","href":"/api-reference/bucket-batches/get-failed-documents-for-batch"},{"openapi":"delete /v1/buckets/{bucket_identifier}/batches/{batch_id}/documents","title":"Delete Documents Produced by Batch","href":"/api-reference/bucket-batches/delete-documents-produced-by-batch"},{"openapi":"delete /v1/buckets/{bucket_identifier}/batches/{batch_id}","title":"Delete Batch","href":"/api-reference/bucket-batches/delete-batch"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/{batch_id}/estimate-cost","title":"Estimate Batch Cost (pre-flight, dry-run)","href":"/api-reference/bucket-batches/estimate-batch-cost"},{"openapi":"post /v1/buckets/{bucket_identifier}/batches/bulk-submit","title":"Bulk-submit a whole bucket as N auto-chunked, auto-queued batches","href":"/api-reference/bucket-batches/bulk-submit-whole-bucket-n-auto"},{"openapi":"get /v1/buckets/{bucket_identifier}/batches/{batch_id}/audit","title":"Tier-completion invariant audit","href":"/api-reference/bucket-batches/tier-completion-invariant-audit"}]},{"openapi":"get /v1/buckets","title":"List Buckets","href":"/api-reference/buckets/list-buckets-get"}]},{"group":"Collections","pages":[{"openapi":"post /v1/collections","title":"Create Collection","href":"/api-reference/collections/create-collection"},{"openapi":"post /v1/collections/{collection_identifier}/clone","title":"Clone Collection","href":"/api-reference/collections/clone-collection"},{"openapi":"get /v1/collections/{collection_identifier}","title":"Get Collection","href":"/api-reference/collections/get-collection"},{"openapi":"patch /v1/collections/{collection_identifier}","title":"Update Collection","href":"/api-reference/collections/update-collection"},{"openapi":"get /v1/collections/{collection_identifier}/features","title":"Describe collection features","href":"/api-reference/collections/describe-collection-features"},{"openapi":"post /v1/collections/list","title":"List Collections","href":"/api-reference/collections/list-collections"},{"openapi":"post /v1/collections/{collection_identifier}/export","title":"Export Collection","href":"/api-reference/collections/export-collection"},{"openapi":"post /v1/collections/{collection_identifier}/trigger","title":"Trigger Collection Processing","href":"/api-reference/collections/trigger-collection-processing"},{"openapi":"delete /v1/collections/{collection_identifier}","title":"Delete Collection","href":"/api-reference/collections/delete-collection"},{"openapi":"get /v1/collections/{collection_identifier}/reconciliation","title":"Reconcile objects vs documents","href":"/api-reference/collections/reconcile-collection"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/diagnostics","title":"Per-document support diagnostics (visibility, failures, history).","href":"/api-reference/collections/document-diagnostics"},{"group":"Schema","pages":[{"openapi":"post /v1/collections/{collection_id}/sync-schema","title":"Sync Collection Schema","href":"/api-reference/collection-schema/sync-collection-schema"}]},{"group":"Documents","pages":[{"openapi":"post /v1/collections/{collection_identifier}/documents","title":"Create a document.","href":"/api-reference/collection-documents/create-a-document"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}","title":"Get a document by ID.","href":"/api-reference/collection-documents/get-a-document-by-id"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/download","title":"Download frame-accurate scene media for this document.","href":"/api-reference/collection-documents/download-document-media"},{"openapi":"put /v1/collections/{collection_identifier}/documents/{document_id}","title":"Update Document","href":"/api-reference/collection-documents/update-document"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/{document_id}","title":"Patch Document","href":"/api-reference/collection-documents/patch-document"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/{document_id}/acl","title":"Update a document's access control list (ACL).","href":"/api-reference/collection-documents/update-a-documents-access-control-list-acl"},{"openapi":"post /v1/collections/{collection_identifier}/documents/list","title":"List documents.","href":"/api-reference/collection-documents/list-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/aggregate","title":"Aggregate Documents","href":"/api-reference/collection-documents/aggregate-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/distinct","title":"Return distinct values for a single field.","href":"/api-reference/collection-documents/return-distinct-values-for-a-single-field"},{"openapi":"patch /v1/collections/{collection_identifier}/documents/bulk","title":"Bulk Update Documents","href":"/api-reference/collection-documents/bulk-update-documents"},{"openapi":"post /v1/collections/{collection_identifier}/documents/batch","title":"Batch Update Documents","href":"/api-reference/collection-documents/batch-update-documents"},{"openapi":"delete /v1/collections/{collection_identifier}/documents/batch","title":"Batch Delete Documents","href":"/api-reference/collection-documents/batch-delete-documents"},{"openapi":"delete /v1/collections/{collection_identifier}/documents/{document_id}","title":"Delete a document by ID.","href":"/api-reference/collection-documents/delete-a-document-by-id"},{"openapi":"post /v1/collections/{collection_identifier}/documents/schema/validate","title":"Validate document against collection schema","href":"/api-reference/collection-documents/validate-document-schema"},{"openapi":"get /v1/collections/{collection_identifier}/documents/count","title":"Count documents in a collection.","href":"/api-reference/collection-documents/count-documents-collection"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/ancestors","title":"Get document ancestors (lineage chain root → parent).","href":"/api-reference/collection-documents/get-document-ancestors"},{"openapi":"get /v1/collections/{collection_identifier}/documents/{document_id}/descendants","title":"Get direct downstream documents (depth=1 children).","href":"/api-reference/collection-documents/get-direct-downstream-documents"},{"openapi":"get /v1/collections/{collection_identifier}/documents","title":"List documents.","href":"/api-reference/collection-documents/list-documents-get"}]},{"group":"Lineage","pages":[{"openapi":"get /v1/collections/{collection_id}/documents/{document_id}/lineage","title":"Get document lineage","href":"/api-reference/document-lineage/get-document-lineage"},{"openapi":"get /v1/objects/{object_id}/documents","title":"Get all documents derived from an object","href":"/api-reference/document-lineage/get-all-documents-derived-from-an-object"},{"openapi":"get /v1/objects/{object_id}/decomposition-tree","title":"Get decomposition tree visualization","href":"/api-reference/document-lineage/get-decomposition-tree-visualization"}]},{"group":"Lifecycle","pages":[{"openapi":"get /v1/collections/{collection_identifier}/lifecycle","title":"Get Lifecycle Status","href":"/api-reference/collection-lifecycle/get-lifecycle-status"},{"openapi":"patch /v1/collections/{collection_identifier}/lifecycle","title":"Transition Lifecycle","href":"/api-reference/collection-lifecycle/transition-lifecycle"}]},{"group":"Taxonomies","pages":[{"openapi":"post /v1/collections/{collection_identifier}/apply-taxonomy","title":"Apply Taxonomy to Existing Documents","href":"/api-reference/collection-taxonomies/apply-taxonomy-to-existing-documents"}]},{"group":"Import","pages":[{"openapi":"post /v1/collections/import/infer","title":"Infer import schema","href":"/api-reference/collections/infer-import-schema"},{"openapi":"post /v1/collections/import/validate-mapping","title":"Validate an import mapping","href":"/api-reference/collections/validate-import-mapping"},{"openapi":"post /v1/collections/{collection_identifier}/import","title":"Import external documents into a collection","href":"/api-reference/collections/import-collection-documents"}]},{"openapi":"get /v1/collections/features","title":"Discover Features","href":"/api-reference/features/discover-features"}]},{"group":"Feature Extractors","pages":[{"openapi":"get /v1/collections/features/extractors","title":"List Feature Extractors","href":"/api-reference/feature-extractors/list-feature-extractors"},{"openapi":"get /v1/collections/features/extractors/{feature_extractor_id}","title":"Get Feature Extractor by Name","href":"/api-reference/feature-extractors/get-feature-extractor-by-name"},{"group":"Marketplace","pages":[{"openapi":"get /v1/public/extractors/","title":"List Public Extractors","href":"/api-reference/public-extractor-marketplace/list-public-extractors"},{"openapi":"get /v1/public/extractors/{public_name}","title":"Get Public Extractor","href":"/api-reference/public-extractor-marketplace/get-public-extractor"}]},{"group":"Publishing","pages":[{"openapi":"post /v1/extractors/{extractor_id}/publish","title":"Publish an extractor to the marketplace","href":"/api-reference/extractor-publishing/publish-extractor-marketplace"},{"openapi":"get /v1/extractors/{extractor_id}/publish","title":"Get published extractor status","href":"/api-reference/extractor-publishing/get-published-extractor-status"},{"openapi":"patch /v1/extractors/{extractor_id}/publish","title":"Update published extractor","href":"/api-reference/extractor-publishing/update-published-extractor"},{"openapi":"delete /v1/extractors/{extractor_id}/publish","title":"Unpublish an extractor","href":"/api-reference/extractor-publishing/unpublish-extractor"},{"openapi":"post /v1/extractors/install","title":"Install a public extractor","href":"/api-reference/extractor-publishing/install-public-extractor"}]},{"group":"Submissions","pages":[{"openapi":"get /v1/extractors","title":"List all extractors available to organization","href":"/api-reference/extractor-submissions/list-all-extractors-available-organization"},{"openapi":"post /v1/extractors/submissions/uploads","title":"Get presigned URL for extractor submission","href":"/api-reference/extractor-submissions/get-presigned-url-extractor-submission"},{"openapi":"post /v1/extractors/submissions/uploads/{submission_id}/confirm","title":"Confirm extractor submission upload","href":"/api-reference/extractor-submissions/confirm-extractor-submission-upload"},{"openapi":"get /v1/extractors/submissions","title":"List extractor submissions","href":"/api-reference/extractor-submissions/list-extractor-submissions"},{"openapi":"get /v1/extractors/submissions/{submission_id}","title":"Get submission details","href":"/api-reference/extractor-submissions/get-submission-details"}]}]},{"group":"Documents","pages":[{"openapi":"get /v1/documents/{document_id}","title":"Get a document by ID (namespace-scoped).","href":"/api-reference/documents/get-a-document-by-id-namespace-scoped"},{"openapi":"put /v1/documents/{document_id}","title":"Update a document by ID (namespace-scoped).","href":"/api-reference/documents/update-a-document-by-id-namespace-scoped"},{"openapi":"patch /v1/documents/{document_id}","title":"Partially update a document by ID (namespace-scoped).","href":"/api-reference/documents/partially-update-a-document-by-id-namespace-scoped"},{"openapi":"post /v1/documents/list","title":"List documents across all collections (namespace-scoped).","href":"/api-reference/documents/list-documents-across-all-collections-namespace-scoped"},{"openapi":"post /v1/documents/batch-get","title":"Batch get documents by IDs","href":"/api-reference/documents/batch-get-documents-by-ids"},{"openapi":"post /v1/documents/list/batch","title":"Run multiple list-documents queries concurrently.","href":"/api-reference/documents/run-multiple-list-documents-queries-concurrently"}]},{"group":"Retrievers","pages":[{"openapi":"post /v1/retrievers","title":"Create Retriever","href":"/api-reference/retrievers/create-retriever"},{"openapi":"post /v1/retrievers/list","title":"List Retrievers","href":"/api-reference/retrievers/list-retrievers"},{"openapi":"get /v1/retrievers/{retriever_id}","title":"Get Retriever","href":"/api-reference/retrievers/get-retriever"},{"openapi":"patch /v1/retrievers/{retriever_id}","title":"Patch Retriever","href":"/api-reference/retrievers/patch-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/clone","title":"Clone Retriever","href":"/api-reference/retrievers/clone-retriever"},{"openapi":"delete /v1/retrievers/{retriever_id}","title":"Delete Retriever","href":"/api-reference/retrievers/delete-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/execute","title":"Execute Retriever (Auto-Optimized)","href":"/api-reference/retrievers/execute-retriever-auto-optimized"},{"openapi":"post /v1/retrievers/{retriever_id}/execute/batch","title":"Batch Execute Retriever","href":"/api-reference/retrievers/batch-execute-retriever"},{"openapi":"post /v1/retrievers/{retriever_id}/executions/list","title":"List Executions","href":"/api-reference/retrievers/list-executions"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}","title":"Get Execution","href":"/api-reference/retrievers/get-execution"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}/status","title":"Get Live Execution Status","href":"/api-reference/retrievers/get-live-execution-status"},{"openapi":"post /v1/retrievers/{retriever_id}/execute/explain","title":"Explain Retriever Execution Plan","href":"/api-reference/retrievers/explain-retriever-execution-plan"},{"openapi":"get /v1/retrievers/{retriever_id}/executions/{execution_id}/profile","title":"Get Execution Query Profile (explain-on-execute read path)","href":"/api-reference/retrievers/get-execution-profile"},{"openapi":"get /v1/retrievers/typeahead","title":"Typeahead","href":"/api-reference/retrievers/typeahead"},{"group":"Stages","pages":[{"openapi":"get /v1/retrievers/stages","title":"List Available Retriever Stages","href":"/api-reference/retriever-stages/list-available-retriever-stages"}]},{"group":"Interactions","pages":[{"openapi":"post /v1/retrievers/interactions","title":"Create Interaction","href":"/api-reference/retriever-interactions/create-interaction"},{"openapi":"post /v1/retrievers/interactions/list","title":"List Interactions","href":"/api-reference/retriever-interactions/list-interactions"},{"openapi":"get /v1/retrievers/interactions/{interaction_id}","title":"Get Interaction","href":"/api-reference/retriever-interactions/get-interaction"},{"openapi":"delete /v1/retrievers/interactions/{interaction_id}","title":"Delete Interaction","href":"/api-reference/retriever-interactions/delete-interaction"},{"openapi":"post /v1/retrievers/interactions/batch","title":"Create Interactions Bulk","href":"/api-reference/retriever-interactions/create-interactions-bulk"}]},{"group":"Evaluations","pages":[{"openapi":"get /v1/retrievers/evaluations/datasets","title":"List evaluation datasets","href":"/api-reference/retriever-evaluations/list-evaluation-datasets"},{"openapi":"post /v1/retrievers/evaluations/datasets","title":"Create evaluation dataset","href":"/api-reference/retriever-evaluations/create-evaluation-dataset"},{"openapi":"get /v1/retrievers/evaluations/datasets/{dataset_identifier}","title":"Get evaluation dataset","href":"/api-reference/retriever-evaluations/get-evaluation-dataset"},{"openapi":"get /v1/retrievers/{retriever_id}/evaluations","title":"List evaluations","href":"/api-reference/retriever-evaluations/list-evaluations"},{"openapi":"post /v1/retrievers/{retriever_id}/evaluations","title":"Run evaluation","href":"/api-reference/retriever-evaluations/run-evaluation"},{"openapi":"get /v1/retrievers/{retriever_id}/evaluations/{evaluation_id}","title":"Get evaluation results","href":"/api-reference/retriever-evaluations/get-evaluation-results"},{"openapi":"post /v1/evaluations/score","title":"Score predictions vs ground truth (stateless)","href":"/api-reference/retriever-evaluations/score-predictions"},{"openapi":"get /v1/evaluations","title":"Discover evaluation endpoints","href":"/api-reference/retriever-evaluations/discover-evaluation-endpoints"},{"openapi":"post /v1/retrievers/{retriever_id}/evaluations/generate-from-interactions","title":"Generate evaluation dataset from interactions","href":"/api-reference/retriever-evaluations/generate-from-interactions"}]},{"group":"Benchmarks","pages":[{"openapi":"get /v1/retrievers/benchmarks","title":"List benchmarks","href":"/api-reference/retriever-benchmarks/list-benchmarks"},{"openapi":"post /v1/retrievers/benchmarks","title":"Create benchmark","href":"/api-reference/retriever-benchmarks/create-benchmark"},{"openapi":"get /v1/retrievers/benchmarks/{benchmark_id}","title":"Get benchmark","href":"/api-reference/retriever-benchmarks/get-benchmark"},{"openapi":"delete /v1/retrievers/benchmarks/{benchmark_id}","title":"Delete benchmark","href":"/api-reference/retriever-benchmarks/delete-benchmark"}]},{"group":"API Keys","pages":[{"openapi":"post /v1/retrievers/{retriever_id}/api-keys","title":"Create Retriever API Key","href":"/api-reference/retriever-api-keys/create-retriever-api-key"},{"openapi":"get /v1/retrievers/{retriever_id}/api-keys","title":"List Retriever API Keys","href":"/api-reference/retriever-api-keys/list-retriever-api-keys"},{"openapi":"delete /v1/retrievers/{retriever_id}/api-keys/{key_id}","title":"Revoke Retriever API Key","href":"/api-reference/retriever-api-keys/revoke-retriever-api-key"}]},{"group":"Adhoc","pages":[{"openapi":"post /v1/retrievers/execute","title":"Execute Adhoc Retriever","href":"/api-reference/adhoc-retrievers/execute-adhoc-retriever"},{"openapi":"post /v1/retrievers/executions/list","title":"List Adhoc Executions","href":"/api-reference/adhoc-retrievers/list-adhoc-executions"},{"openapi":"get /v1/retrievers/executions/{execution_id}","title":"Get Adhoc Execution","href":"/api-reference/adhoc-retrievers/get-adhoc-execution"}]},{"group":"Publishing","pages":[{"openapi":"post /v1/retrievers/{retriever_id}/publish","title":"Publish Retriever","href":"/api-reference/published-retrievers/publish-retriever"},{"openapi":"get /v1/retrievers/published","title":"List Published Retrievers","href":"/api-reference/published-retrievers/list-published-retrievers"},{"openapi":"get /v1/retrievers/{retriever_id}/publish","title":"Get Published Retriever","href":"/api-reference/published-retrievers/get-published-retriever"},{"openapi":"patch /v1/retrievers/{retriever_id}/publish","title":"Update Published Retriever","href":"/api-reference/published-retrievers/update-published-retriever"},{"openapi":"delete /v1/retrievers/{retriever_id}/publish","title":"Unpublish Retriever","href":"/api-reference/published-retrievers/unpublish-retriever"},{"openapi":"get /v1/retrievers/{retriever_id}/publish/availability","title":"Check Name Availability","href":"/api-reference/published-retrievers/check-name-availability"},{"openapi":"get /v1/retrievers/publish/stats","title":"Get Organization Publish Stats","href":"/api-reference/published-retrievers/get-organization-publish-stats"},{"openapi":"post /v1/retrievers/{retriever_id}/publish/reconcile","title":"Reconcile Publish State","href":"/api-reference/published-retrievers/reconcile-publish-state"}]},{"group":"Public Retriever API","pages":[{"openapi":"get /v1/public/retrievers/","title":"List Public Retrievers","href":"/api-reference/public-retriever-api/list-public-retrievers"},{"openapi":"get /v1/public/retrievers/{public_name}/config","title":"Get Public Retriever Config","href":"/api-reference/public-retriever-api/get-public-retriever-config"},{"openapi":"get /v1/public/retrievers/{public_name}/template","title":"Get Public Retriever Template","href":"/api-reference/public-retriever-api/get-public-retriever-template"},{"openapi":"post /v1/public/retrievers/{public_name}/execute","title":"Execute Public Retriever","href":"/api-reference/public-retriever-api/execute-public-retriever"},{"openapi":"post /v1/public/retrievers/{public_name}/verify","title":"Verify Password","href":"/api-reference/public-retriever-api/verify-password"},{"openapi":"post /v1/public/retrievers/{public_name}/interactions","title":"Track Interaction","href":"/api-reference/public-retriever-api/track-interaction"},{"openapi":"post /v1/public/retrievers/{public_name}/interactions/batch","title":"Track Interaction Batch","href":"/api-reference/public-retriever-api/track-interaction-batch"}]},{"group":"Feature search","pages":[{"openapi":"post /v1/features/search","title":"Feature Search","href":"/api-reference/feature-search/feature-search"}]}]},{"group":"Enrich \u0026 Improve","pages":[{"group":"Taxonomies","pages":[{"openapi":"post /v1/taxonomies","title":"Create Taxonomy","href":"/api-reference/taxonomies/create-taxonomy"},{"openapi":"get /v1/taxonomies/{taxonomy_identifier}","title":"Get Taxonomy","href":"/api-reference/taxonomies/get-taxonomy"},{"openapi":"patch /v1/taxonomies/{taxonomy_identifier}","title":"Partially Update Taxonomy","href":"/api-reference/taxonomies/partially-update-taxonomy"},{"openapi":"post /v1/taxonomies/list","title":"List Taxonomies","href":"/api-reference/taxonomies/list-taxonomies"},{"openapi":"post /v1/taxonomies/execute/{taxonomy_identifier}","title":"Test taxonomy configuration (validation only) — DEPRECATED path","href":"/api-reference/taxonomies/test-taxonomy-configuration-validation-only"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/versions","title":"List Taxonomy Versions","href":"/api-reference/taxonomies/list-taxonomy-versions"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/versions","title":"Create Taxonomy Version","href":"/api-reference/taxonomies/create-taxonomy-version"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/clone","title":"Clone Taxonomy","href":"/api-reference/taxonomies/clone-taxonomy"},{"openapi":"delete /v1/taxonomies/{taxonomy_identifier}","title":"Delete Taxonomy","href":"/api-reference/taxonomies/delete-taxonomy"},{"group":"Analytics","pages":[{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/available-steps","title":"Get Available Steps","href":"/api-reference/taxonomy-analytics/get-available-steps"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/transitions","title":"Compute step transition analytics","href":"/api-reference/taxonomy-analytics/compute-step-transition-analytics"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/paths","title":"Analyze multi-step transition paths","href":"/api-reference/taxonomy-analytics/analyze-multi-step-transition-paths"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/runs","title":"List taxonomy analytics run history","href":"/api-reference/taxonomy-analytics/list-taxonomy-analytics-run-history"},{"openapi":"get /v1/taxonomies/{taxonomy_id}/analytics/runs/{run_id}","title":"Get a taxonomy analytics run","href":"/api-reference/taxonomy-analytics/get-taxonomy-analytics-run"},{"openapi":"post /v1/taxonomies/{taxonomy_id}/analytics/runs/{run_id}/rerun","title":"Re-run a stored taxonomy analytics run","href":"/api-reference/taxonomy-analytics/re-run-stored-taxonomy-analytics-run"}]},{"openapi":"get /v1/taxonomies","title":"List taxonomies (GET alias for POST /list).","href":"/api-reference/taxonomies/list-taxonomies-get"},{"openapi":"post /v1/taxonomies/from-documents","title":"Create a taxonomy from a document selection or a cluster run (one gesture)","href":"/api-reference/taxonomies/create-taxonomy-from-document-selection"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/nodes/from-documents","title":"Add a taxonomy node derived from a document selection","href":"/api-reference/taxonomies/add-taxonomy-node-derived-from-document"},{"openapi":"post /v1/taxonomies/{taxonomy_identifier}/execute","title":"Test taxonomy configuration (validation only)","description":"⚠️ VALIDATION ENDPOINT ONLY - Not for production enrichment!","href":"/api-reference/taxonomies/test-taxonomy-configuration"}]},{"group":"Clusters","pages":[{"openapi":"post /v1/clusters","title":"Create Cluster","href":"/api-reference/clusters/create-cluster"},{"openapi":"get /v1/clusters/{cluster_identifier}","title":"Get Cluster","description":"Retrieve a cluster by ID or name.\n\n Returns cluster metadata including:\n - Configuration (cluster_type, algorithm, parameters)\n - Output collection information (output_collection_ids, output_collection_names)\n - Execution results (num_clusters, num_documents_clustered, status)\n - Timestamps and metadata\n\n Per-document cluster assignments are not on this object. They are documents in\n the output collections listed in output_collection_ids: a member document\n (is_centroid=false) carries cluster_id, cluster_label and source_document_id.\n With enrich_source_collection=true they are fields on your source documents.","href":"/api-reference/clusters/get-cluster"},{"openapi":"patch /v1/clusters/{cluster_identifier}","title":"Partially Update Cluster","href":"/api-reference/clusters/partially-update-cluster"},{"openapi":"post /v1/clusters/list","title":"List Clusters","href":"/api-reference/clusters/list-clusters"},{"openapi":"post /v1/clusters/{cluster_id}/execute","title":"Execute Clustering","href":"/api-reference/clusters/execute-clustering"},{"openapi":"get /v1/clusters/{cluster_id}/groups","title":"List Cluster Groups","href":"/api-reference/clusters/list-cluster-groups"},{"openapi":"delete /v1/clusters/{cluster_id}","title":"Delete Cluster","href":"/api-reference/clusters/delete-cluster"},{"group":"Triggers","pages":[{"openapi":"post /v1/clusters/triggers","title":"Create Cluster Trigger","href":"/api-reference/cluster-triggers/create-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/list","title":"List Cluster Triggers","href":"/api-reference/cluster-triggers/list-cluster-triggers"},{"openapi":"get /v1/clusters/triggers/{trigger_id}","title":"Get Cluster Trigger","href":"/api-reference/cluster-triggers/get-cluster-trigger"},{"openapi":"patch /v1/clusters/triggers/{trigger_id}","title":"Update Cluster Trigger","href":"/api-reference/cluster-triggers/update-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/pause","title":"Pause Cluster Trigger","href":"/api-reference/cluster-triggers/pause-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/resume","title":"Resume Cluster Trigger","href":"/api-reference/cluster-triggers/resume-cluster-trigger"},{"openapi":"post /v1/clusters/triggers/{trigger_id}/history","title":"Get Trigger Execution History","href":"/api-reference/cluster-triggers/get-trigger-execution-history"},{"openapi":"delete /v1/clusters/triggers/{trigger_id}","title":"Delete Cluster Trigger","href":"/api-reference/cluster-triggers/delete-cluster-trigger"}]},{"group":"Executions","pages":[{"openapi":"get /v1/clusters/{cluster_id}/executions","title":"Get Latest Cluster Execution","href":"/api-reference/cluster-executions/get-latest-cluster-execution"},{"openapi":"get /v1/clusters/{cluster_id}/executions/{run_id}","title":"Get Specific Cluster Execution","href":"/api-reference/cluster-executions/get-specific-cluster-execution"},{"openapi":"post /v1/clusters/{cluster_id}/executions/list","title":"List Cluster Execution History","href":"/api-reference/cluster-executions/list-cluster-execution-history"},{"openapi":"post /v1/clusters/{cluster_id}/executions/{run_id}/cancel","title":"Cancel Execution","href":"/api-reference/cluster-executions/cancel-execution"},{"openapi":"get /v1/clusters/{cluster_id}/executions/{run_id}/export","title":"Export Cluster Run Data (CSV / Parquet)","href":"/api-reference/cluster-executions/export-cluster-run-data"},{"openapi":"patch /v1/clusters/{cluster_id}/executions/{run_id}/labels","title":"Rename Cluster Labels (Per-Execution)","href":"/api-reference/cluster-executions/rename-cluster-labels"},{"openapi":"patch /v1/clusters/{cluster_id}/executions/{run_id}/name","title":"Name an Execution Run","href":"/api-reference/cluster-executions/name-execution-run"}]},{"openapi":"get /v1/clusters","title":"List Clusters (GET)","href":"/api-reference/clusters/list-clusters-get"},{"openapi":"get /v1/clusters/{cluster_id}/visualization","title":"Cluster Visualization Data","href":"/api-reference/clusters/cluster-visualization-data"}]},{"group":"Annotations","pages":[{"openapi":"post /v1/annotations","title":"Create Annotation","href":"/api-reference/annotations/create-annotation"},{"openapi":"get /v1/annotations/{annotation_id}","title":"Get Annotation","href":"/api-reference/annotations/get-annotation"},{"openapi":"get /v1/annotations/{annotation_id}/versions","title":"Get Annotation Versions","href":"/api-reference/annotations/get-annotation-versions"},{"openapi":"get /v1/annotations/{annotation_id}/versions/{version}","title":"Get Annotation At Version","href":"/api-reference/annotations/get-annotation-at-version"},{"openapi":"post /v1/annotations/list","title":"List Annotations","href":"/api-reference/annotations/list-annotations"},{"openapi":"get /v1/annotations/stats","title":"Annotation Stats","href":"/api-reference/annotations/annotation-stats"},{"openapi":"patch /v1/annotations/{annotation_id}","title":"Patch Annotation","href":"/api-reference/annotations/update-annotation"},{"openapi":"delete /v1/annotations/{annotation_id}","title":"Delete Annotation","href":"/api-reference/annotations/delete-annotation"},{"openapi":"post /v1/annotations/bulk","title":"Bulk Annotations","href":"/api-reference/annotations/bulk-annotations"}]}]},{"group":"Automate","pages":[{"group":"Triggers","pages":[{"openapi":"post /v1/triggers","title":"Create Trigger","href":"/api-reference/create-trigger"},{"openapi":"post /v1/triggers/list","title":"List Triggers","href":"/api-reference/list-triggers"},{"openapi":"get /v1/triggers/{trigger_id}","title":"Get Trigger","href":"/api-reference/get-trigger"},{"openapi":"patch /v1/triggers/{trigger_id}","title":"Update Trigger","href":"/api-reference/update-trigger"},{"openapi":"delete /v1/triggers/{trigger_id}","title":"Delete Trigger","href":"/api-reference/delete-trigger"},{"openapi":"post /v1/triggers/{trigger_id}/execute","title":"Execute Trigger Now","href":"/api-reference/execute-trigger-now"},{"openapi":"post /v1/triggers/{trigger_id}/pause","title":"Pause Trigger","href":"/api-reference/pause-trigger"},{"openapi":"post /v1/triggers/{trigger_id}/resume","title":"Resume Trigger","href":"/api-reference/resume-trigger"},{"openapi":"get /v1/triggers/{trigger_id}/history","title":"Get Trigger Execution History","href":"/api-reference/get-trigger-execution-history"},{"openapi":"get /v1/triggers","title":"List Triggers (GET alias for POST /list).","href":"/api-reference/triggers/list-triggers"}]},{"group":"Webhooks","pages":[{"openapi":"post /v1/organizations/webhooks","title":"Create Webhook","href":"/api-reference/webhooks/create-webhook"},{"openapi":"post /v1/organizations/webhooks/list","title":"List Webhooks","href":"/api-reference/webhooks/list-webhooks"},{"openapi":"get /v1/organizations/webhooks/{identifier}","title":"Get Webhook","href":"/api-reference/webhooks/get-webhook"},{"openapi":"put /v1/organizations/webhooks/{identifier}","title":"Update Webhook","href":"/api-reference/webhooks/update-webhook"},{"openapi":"delete /v1/organizations/webhooks/{identifier}","title":"Delete Webhook","href":"/api-reference/webhooks/delete-webhook"}]},{"group":"Alerts","pages":[{"openapi":"post /v1/alerts","title":"Create Alert","href":"/api-reference/alerts/create-alert"},{"openapi":"get /v1/alerts/{alert_identifier}","title":"Get Alert","href":"/api-reference/alerts/get-alert"},{"openapi":"patch /v1/alerts/{alert_identifier}","title":"Update Alert","href":"/api-reference/alerts/update-alert"},{"openapi":"post /v1/alerts/list","title":"List Alerts","href":"/api-reference/alerts/list-alerts"},{"openapi":"delete /v1/alerts/{alert_identifier}","title":"Delete Alert","href":"/api-reference/alerts/delete-alert"},{"openapi":"get /v1/alerts/{alert_identifier}/executions","title":"List Alert Executions","href":"/api-reference/alerts/list-alert-executions"},{"openapi":"get /v1/alerts/executions/{execution_id}","title":"Get Alert Execution","href":"/api-reference/alerts/get-alert-execution"},{"openapi":"get /v1/alerts/{alert_identifier}/results","title":"Get Latest Alert Result","href":"/api-reference/alerts/get-latest-alert-result"},{"openapi":"get /v1/alerts/executions","title":"List All Executions","href":"/api-reference/alerts/list-all-executions"},{"openapi":"get /v1/alerts","title":"List Alerts (GET alias for POST /list).","href":"/api-reference/alerts/list-alerts-get"},{"openapi":"post /v1/organizations/alerts","title":"Create Org-Scoped Alert","href":"/api-reference/alerts/create-org-scoped-alert"},{"openapi":"get /v1/organizations/alerts","title":"List Org-Scoped Alerts (GET alias for POST /list).","href":"/api-reference/alerts/list-org-scoped-alerts"},{"openapi":"post /v1/organizations/alerts/list","title":"List Org-Scoped Alerts","href":"/api-reference/alerts/list-org-scoped-alerts-list"},{"openapi":"get /v1/organizations/alerts/{alert_identifier}","title":"Get Org-Scoped Alert","href":"/api-reference/alerts/get-org-scoped-alert"},{"openapi":"patch /v1/organizations/alerts/{alert_identifier}","title":"Update Org-Scoped Alert","href":"/api-reference/alerts/update-org-scoped-alert"},{"openapi":"delete /v1/organizations/alerts/{alert_identifier}","title":"Delete Org-Scoped Alert","href":"/api-reference/alerts/delete-org-scoped-alert"}]},{"group":"Notifications","pages":[{"openapi":"post /v1/notifications/list","title":"List Notifications","href":"/api-reference/notifications/list-notifications"},{"openapi":"get /v1/notifications/{notification_id}","title":"Get Notification","href":"/api-reference/notifications/get-notification"},{"openapi":"post /v1/notifications/{notification_id}/read","title":"Mark As Read","href":"/api-reference/notifications/mark-as-read"},{"openapi":"post /v1/notifications/read/all","title":"Mark All As Read","href":"/api-reference/notifications/mark-all-as-read"},{"openapi":"get /v1/notifications/unread/count","title":"Get Unread Count","href":"/api-reference/notifications/get-unread-count"},{"openapi":"delete /v1/notifications/{notification_id}","title":"Delete Notification","href":"/api-reference/notifications/delete-notification"},{"openapi":"get /v1/notifications/preferences","title":"Get Preferences","href":"/api-reference/notifications/get-preferences"},{"openapi":"put /v1/notifications/preferences","title":"Update Preferences","href":"/api-reference/notifications/update-preferences"},{"openapi":"get /v1/notifications/preferences/reminders","title":"Get Reminder Preferences","href":"/api-reference/notifications/get-reminder-preferences"},{"openapi":"put /v1/notifications/preferences/reminders","title":"Update Reminder Preferences","href":"/api-reference/notifications/update-reminder-preferences"},{"openapi":"get /v1/notifications/funnel/state","title":"Get Funnel State","href":"/api-reference/notifications/get-funnel-state"},{"openapi":"post /v1/notifications/funnel/advance","title":"Advance Funnel Stage","href":"/api-reference/notifications/advance-funnel-stage"}]},{"group":"Tasks","pages":[{"openapi":"post /v1/tasks/list","title":"List Tasks","href":"/api-reference/tasks/list-tasks"},{"openapi":"get /v1/tasks/{task_id}","title":"Get Task Information","href":"/api-reference/tasks/get-task-information"},{"openapi":"delete /v1/tasks/{task_id}","title":"Kill Task","href":"/api-reference/tasks/kill-task"}]},{"group":"Batch Queue","pages":[{"openapi":"post /v1/batches/list","title":"List All Batches","href":"/api-reference/batches/list-all-batches"},{"openapi":"get /v1/batches/{batch_id}","title":"Get Batch by ID","href":"/api-reference/batches/get-batch-by-id"},{"openapi":"post /v1/batches/{batch_id}/cancel","title":"Cancel Batch","href":"/api-reference/batches/cancel-batch"},{"openapi":"get /v1/batches/queue","title":"Batch Queue Status","href":"/api-reference/batches/batch-queue-status"}]}]},{"group":"Administer","pages":[{"group":"Organization","pages":[{"openapi":"get /v1/me","title":"Whoami","href":"/api-reference/account/whoami"},{"openapi":"get /v1/organizations","title":"Get Organization","href":"/api-reference/organizations/get-organization"},{"openapi":"patch /v1/organizations","title":"Update Organization","href":"/api-reference/organizations/update-organization"},{"openapi":"get /v1/organizations/targets","title":"Get Organization Targets","href":"/api-reference/organizations/get-organization-targets"},{"group":"Users","pages":[{"openapi":"get /v1/organizations/users","title":"List Users","href":"/api-reference/organization-users/list-users"},{"openapi":"post /v1/organizations/users","title":"Create User","href":"/api-reference/organization-users/create-user"},{"openapi":"get /v1/organizations/users/{user_email}","title":"Get User","href":"/api-reference/organization-users/get-user"},{"openapi":"patch /v1/organizations/users/{user_email}","title":"Update User","href":"/api-reference/organization-users/update-user"},{"openapi":"delete /v1/organizations/users/{user_email}","title":"Delete User","href":"/api-reference/organization-users/delete-user"}]},{"group":"API Keys","pages":[{"openapi":"get /v1/organizations/users/{user_email}/api-keys","title":"List Api Keys","href":"/api-reference/organization-api-keys/list-api-keys"},{"openapi":"post /v1/organizations/users/{user_email}/api-keys","title":"Create Api Key","href":"/api-reference/organization-api-keys/create-api-key"},{"openapi":"patch /v1/organizations/users/{user_email}/api-keys/{key_name}","title":"Update Api Key","href":"/api-reference/organization-api-keys/update-api-key"},{"openapi":"post /v1/organizations/users/{user_email}/api-keys/{key_name}/rotate","title":"Rotate Api Key","href":"/api-reference/organization-api-keys/rotate-api-key"},{"openapi":"delete /v1/organizations/users/{user_email}/api-keys/{key_name}","title":"Delete Api Key","href":"/api-reference/organization-api-keys/delete-api-key"},{"openapi":"post /v1/auth/token-exchange","title":"Exchange a workload OIDC token for a short-lived API key","href":"/api-reference/organization-api-keys/exchange-oidc-token"}]},{"group":"Storage Connections","pages":[{"openapi":"post /v1/organizations/connections/list","title":"List Storage Connections","href":"/api-reference/organization-connections/list-storage-connections"},{"openapi":"post /v1/organizations/connections","title":"Create Storage Connection","href":"/api-reference/organization-connections/create-storage-connection"},{"openapi":"get /v1/organizations/connections/{connection_identifier}","title":"Get Storage Connection","href":"/api-reference/organization-connections/get-storage-connection"},{"openapi":"patch /v1/organizations/connections/{connection_identifier}","title":"Update Storage Connection","href":"/api-reference/organization-connections/update-storage-connection"},{"openapi":"post /v1/organizations/connections/{connection_identifier}/test","title":"Test Storage Connection","href":"/api-reference/organization-connections/test-storage-connection"},{"openapi":"delete /v1/organizations/connections/{connection_identifier}","title":"Delete Storage Connection","href":"/api-reference/organization-connections/delete-storage-connection"},{"openapi":"get /v1/organizations/connections/{connection_identifier}/files","title":"List Google Drive Files","href":"/api-reference/organization-connections/list-google-drive-files"},{"openapi":"get /v1/organizations/connections/{connection_identifier}/folders","title":"List Google Drive Folders","href":"/api-reference/organization-connections/list-google-drive-folders"}]},{"group":"Secrets","pages":[{"openapi":"get /v1/organizations/secrets","title":"List Secrets","href":"/api-reference/organization-secrets/list-secrets"},{"openapi":"post /v1/organizations/secrets","title":"Create Secret","href":"/api-reference/organization-secrets/create-secret"},{"openapi":"put /v1/organizations/secrets/{secret_name}","title":"Update Secret","href":"/api-reference/organization-secrets/update-secret"},{"openapi":"delete /v1/organizations/secrets/{secret_name}","title":"Delete Secret","href":"/api-reference/organization-secrets/delete-secret"}]},{"group":"Billing","pages":[{"openapi":"get /v1/organizations/billing/balance","title":"Get Credit Balance","href":"/api-reference/organization-billing/get-credit-balance"},{"openapi":"get /v1/organizations/billing/usage/current","title":"Get Current Usage","href":"/api-reference/organization-billing/get-current-usage"},{"openapi":"get /v1/organizations/billing/usage/vector-backend","title":"Get Vector Backend Usage","href":"/api-reference/organization-billing/get-vector-backend-usage"},{"openapi":"get /v1/organizations/billing/usage/breakdown","title":"Get Usage Breakdown","href":"/api-reference/organization-billing/get-usage-breakdown"},{"openapi":"get /v1/organizations/billing/spending-caps","title":"Get Spending Caps","href":"/api-reference/organization-billing/get-spending-caps"},{"openapi":"post /v1/organizations/billing/spending-caps","title":"Update Spending Caps","href":"/api-reference/organization-billing/update-spending-caps"},{"openapi":"post /v1/organizations/billing/setup-payment-method","title":"Setup Payment Method","href":"/api-reference/organization-billing/setup-payment-method"},{"openapi":"post /v1/organizations/billing/confirm-payment-method","title":"Confirm Payment Method","href":"/api-reference/organization-billing/confirm-payment-method"},{"openapi":"get /v1/organizations/billing/payment-method","title":"Get Payment Method","href":"/api-reference/organization-billing/get-payment-method"},{"openapi":"get /v1/organizations/billing/invoices","title":"List Invoices","href":"/api-reference/organization-billing/list-invoices"},{"openapi":"post /v1/organizations/billing/generate-invoice","title":"Generate Invoice Now","href":"/api-reference/organization-billing/generate-invoice-now"},{"openapi":"post /v1/organizations/billing/enable-auto-billing","title":"Enable Auto Billing","href":"/api-reference/organization-billing/enable-auto-billing"},{"openapi":"post /v1/organizations/billing/disable-auto-billing","title":"Disable Auto Billing","href":"/api-reference/organization-billing/disable-auto-billing"},{"openapi":"post /v1/organizations/billing/estimate","title":"Estimate Cost","href":"/api-reference/organization-billing/estimate-cost"},{"openapi":"get /v1/organizations/billing/transactions","title":"List Transactions","href":"/api-reference/organization-billing/list-transactions"},{"openapi":"post /v1/organizations/billing/checkout","title":"Create Checkout","href":"/api-reference/organization-billing/create-checkout"},{"openapi":"post /v1/organizations/billing/subscribe","title":"Subscribe To Plan","href":"/api-reference/organization-billing/subscribe-plan"},{"openapi":"post /v1/organizations/billing/portal","title":"Open Billing Portal","href":"/api-reference/organization-billing/open-billing-portal"},{"openapi":"get /v1/organizations/billing/subscription","title":"Get Subscription Status","href":"/api-reference/organization-billing/get-subscription-status"},{"openapi":"post /v1/organizations/billing/subscription/cancel","title":"Cancel Subscription","href":"/api-reference/organization-billing/cancel-subscription"},{"openapi":"post /v1/organizations/billing/apply-promo","title":"Apply Promo","href":"/api-reference/organization-billing/apply-promo"},{"openapi":"post /v1/organizations/billing/redeem-promo","title":"Redeem Promo","href":"/api-reference/organization-billing/redeem-promo"}]},{"group":"Usage","pages":[{"openapi":"get /v1/organizations/usage","title":"Get Org Usage","href":"/api-reference/organization-usage/get-org-usage"},{"openapi":"get /v1/organizations/api-keys/{key_id}/usage","title":"Get Api Key Usage","href":"/api-reference/organization-usage/get-api-key-usage"},{"openapi":"get /v1/organizations/api-keys/{key_id}/usage/endpoints","title":"Get Api Key Endpoint Breakdown","href":"/api-reference/organization-usage/get-api-key-endpoint-breakdown"}]},{"group":"Audit Logs","pages":[{"openapi":"get /v1/organizations/audit/logs","title":"List Audit Logs","href":"/api-reference/organization-audit/list-audit-logs"},{"openapi":"get /v1/organizations/audit/logs/export","title":"Export Audit Logs","href":"/api-reference/organization-audit/export-audit-logs"},{"openapi":"get /v1/organizations/audit/logs/{audit_id}","title":"Get Audit Log","href":"/api-reference/organization-audit/get-audit-log"},{"openapi":"get /v1/organizations/audit/settings","title":"Get Audit Settings","href":"/api-reference/organization-audit/get-audit-settings"},{"openapi":"patch /v1/organizations/audit/settings","title":"Update Audit Settings","href":"/api-reference/organization-audit/update-audit-settings"}]},{"group":"Privacy (DSAR)","pages":[{"openapi":"post /v1/organizations/dsar/export","title":"Request Data Export","href":"/api-reference/data-subject-access-requests/request-data-export"},{"openapi":"post /v1/organizations/dsar/delete","title":"Request Data Deletion","href":"/api-reference/data-subject-access-requests/request-data-deletion"},{"openapi":"get /v1/organizations/dsar/status","title":"List Dsar Requests","href":"/api-reference/data-subject-access-requests/list-dsar-requests"}]},{"openapi":"get /v1/organizations/credits","title":"Get Credits","href":"/api-reference/organizations/get-credits"},{"group":"Infrastructure","pages":[{"openapi":"get /v1/organizations/infrastructure/summary","title":"Get Infrastructure","href":"/api-reference/organization-infrastructure/get-infrastructure"}]}]},{"group":"Pricing","pages":[{"openapi":"get /v1/billing/pricing","title":"Get Pricing Configuration","href":"/api-reference/pricing/get-pricing-configuration"}]},{"group":"Support","pages":[{"openapi":"post /v1/support/tickets","title":"Create Support Ticket","href":"/api-reference/support/create-support-ticket"},{"openapi":"get /v1/support/tickets","title":"List Support Tickets","href":"/api-reference/support/list-support-tickets"},{"openapi":"post /v1/support/tickets/list","title":"List Support Tickets (org + global).","href":"/api-reference/support/list-support-tickets-list"},{"openapi":"get /v1/support/tickets/{ticket_identifier}","title":"Get Support Ticket (with message thread).","href":"/api-reference/support/get-support-ticket"},{"openapi":"patch /v1/support/tickets/{ticket_identifier}","title":"Update a support ticket (status/priority).","href":"/api-reference/support/update-support-ticket"},{"openapi":"post /v1/support/tickets/{ticket_identifier}/messages","title":"Reply to a support ticket.","href":"/api-reference/support/reply-support-ticket"},{"openapi":"post /v1/support/comms/list","title":"List correspondence (ticket messages + broadcasts, org + global).","href":"/api-reference/support/list-correspondence"},{"openapi":"get /v1/support/comms","title":"List Correspondence","href":"/api-reference/support/list-correspondence-get"},{"openapi":"post /v1/support/comms/broadcast","title":"Create a broadcast communication (Mixpeek admin only).","href":"/api-reference/support/create-broadcast-communication"},{"openapi":"post /v1/support/videos/upload-url","title":"Presigned PUT to upload a support video to cold storage (admin only).","href":"/api-reference/support/presigned-put-upload-support-video-cold"},{"openapi":"post /v1/support/videos","title":"Register a support video (admin only); triggers Gemini review for uploads.","href":"/api-reference/support/register-support-video-triggers-gemini-review"},{"openapi":"get /v1/support/videos","title":"List Support Videos","href":"/api-reference/support/list-support-videos"},{"openapi":"post /v1/support/videos/list","title":"List curated support videos (org + global).","href":"/api-reference/support/list-curated-support-videos"},{"openapi":"get /v1/support/videos/{video_identifier}","title":"Get a support video (with presigned playback URL + chapters).","href":"/api-reference/support/get-support-video"}]}]},{"group":"Advanced","pages":[{"group":"Apps","pages":[{"openapi":"post /v1/apps","title":"Create an App","href":"/api-reference/apps/create-app"},{"openapi":"get /v1/apps","title":"List Apps","href":"/api-reference/apps/list-apps"},{"openapi":"get /v1/apps/{app_id}","title":"Get an App","href":"/api-reference/apps/get-app"},{"openapi":"patch /v1/apps/{app_id}","title":"Update an App","href":"/api-reference/apps/update-app"},{"openapi":"delete /v1/apps/{app_id}","title":"Delete an App","href":"/api-reference/apps/delete-app"},{"openapi":"post /v1/apps/{app_id}/publish","title":"Publish an App","href":"/api-reference/apps/publish-app"},{"openapi":"post /v1/apps/{app_id}/rollback","title":"Rollback an App","href":"/api-reference/apps/rollback-app"},{"group":"Deploy","pages":[{"openapi":"post /v1/apps/{app_id}/deploy","title":"Deploy an App","href":"/api-reference/apps/deploy-app"},{"openapi":"post /v1/apps/{app_id}/deploy/upload-url","title":"Get presigned upload URL","href":"/api-reference/apps/get-deploy-upload-url"},{"title":"Get Deploy Status","openapi":"GET /v1/apps/{app_id}/deploys/{deploy_id}","href":"/api-reference/apps/get-deploy-status"},{"openapi":"get /v1/apps/{app_id}/deploys/{deploy_id}/logs/stream","title":"Stream deploy logs (SSE)","href":"/api-reference/apps/stream-deploy-logs-sse"},{"openapi":"post /v1/apps/{app_id}/deploy/verify-upload","title":"Verify a presigned-URL upload landed in S3","href":"/api-reference/apps/verify-a-presigned-url-upload-landed-in-s3"},{"openapi":"post /v1/apps/{app_id}/promote","title":"Promote staging to production","href":"/api-reference/apps/promote-staging-to-production"}]},{"group":"GitHub","pages":[{"openapi":"post /v1/apps/{app_id}/connect-repo","title":"Connect a GitHub repository","href":"/api-reference/apps/connect-a-github-repository"},{"openapi":"delete /v1/apps/{app_id}/connect-repo","title":"Disconnect GitHub repository","href":"/api-reference/apps/disconnect-github-repository"}]},{"group":"Users","pages":[{"openapi":"get /v1/apps/{app_id}/users","title":"List app users","href":"/api-reference/apps/list-app-users"},{"openapi":"post /v1/apps/{app_id}/users/invite","title":"Invite a user","href":"/api-reference/apps/invite-a-user"},{"openapi":"get /v1/apps/{app_id}/users/invitations","title":"List pending invitations","href":"/api-reference/apps/list-pending-invitations"},{"openapi":"patch /v1/apps/{app_id}/users/{user_id}/role","title":"Update user role","href":"/api-reference/apps/update-user-role"},{"openapi":"delete /v1/apps/{app_id}/users/{user_id}","title":"Remove a user","href":"/api-reference/apps/remove-a-user"},{"openapi":"delete /v1/apps/{app_id}/users/invitations/{invitation_id}","title":"Revoke an invitation","href":"/api-reference/apps/revoke-an-invitation"}]},{"group":"Versions","pages":[{"openapi":"get /v1/apps/{app_id}/versions","title":"List version history","href":"/api-reference/apps/list-versions"},{"title":"Get Version Details","openapi":"GET /v1/apps/{app_id}/versions/{version}","href":"/api-reference/apps/get-version"},{"title":"Diff Two Versions","openapi":"GET /v1/apps/{app_id}/versions/{from_version}/diff/{to_version}","href":"/api-reference/apps/diff-versions"},{"title":"Download Version Bundle","openapi":"GET /v1/apps/{app_id}/versions/{version}/download","href":"/api-reference/apps/download-version"},{"title":"Restore a Version","openapi":"POST /v1/apps/{app_id}/versions/{version}/restore","href":"/api-reference/apps/restore-version"}]},{"group":"Domains","pages":[{"openapi":"post /v1/apps/{app_id}/domains","title":"Add a custom domain","href":"/api-reference/apps/add-domain"},{"openapi":"get /v1/apps/{app_id}/domains","title":"List custom domains","href":"/api-reference/apps/list-domains"},{"openapi":"delete /v1/apps/{app_id}/domains/{domain}","title":"Remove a domain","href":"/api-reference/apps/delete-domain"},{"openapi":"post /v1/apps/{app_id}/domains/{domain}/verify","title":"Trigger DNS verification","href":"/api-reference/apps/verify-domain"}]},{"group":"Analytics","pages":[{"openapi":"get /v1/apps/{app_id}/analytics","title":"Get app analytics overview","href":"/api-reference/apps/get-app-analytics-overview"},{"openapi":"get /v1/apps/{app_id}/error-rate","title":"Get recent error rate","href":"/api-reference/apps/get-recent-error-rate"},{"openapi":"get /v1/apps/{app_id}/logs","title":"Get runtime or request logs","href":"/api-reference/apps/get-runtime-or-request-logs"}]},{"group":"Public","pages":[{"openapi":"get /v1/public/apps/{slug}/config","title":"Get public App config","href":"/api-reference/public-apps-api/get-app-config"},{"openapi":"post /v1/public/apps/{slug}/search","title":"Execute an App tab search","href":"/api-reference/public-apps-api/search-app"},{"openapi":"get /v1/public/apps/{slug}/gallery","title":"Get App featured gallery","href":"/api-reference/public-apps-api/get-app-gallery"},{"openapi":"get /v1/public/apps/{slug}/taxonomies/{taxonomy_id}/tree","title":"Get taxonomy node tree for an App","href":"/api-reference/public-apps-api/get-app-taxonomies"},{"openapi":"post /v1/public/apps/{slug}/interactions","title":"Track an App interaction event","href":"/api-reference/public-apps-api/track-app-interaction"}]},{"openapi":"get /v1/apps/{app_id}/github/install-url","title":"Get the GitHub App install URL for this app","href":"/api-reference/apps/get-github-app-install-url-app"}]},{"group":"Agent Sessions","pages":[{"openapi":"post /v1/agents/sessions","title":"Create Session","href":"/api-reference/agent-sessions/create-session"},{"openapi":"post /v1/agents/sessions/list","title":"List Sessions","href":"/api-reference/agent-sessions/list-sessions"},{"openapi":"get /v1/agents/sessions/{session_id}","title":"Get Session","href":"/api-reference/agent-sessions/get-session"},{"openapi":"patch /v1/agents/sessions/{session_id}","title":"Patch Session","href":"/api-reference/agent-sessions/patch-session"},{"openapi":"post /v1/agents/sessions/{session_id}/messages","title":"Send Message","href":"/api-reference/agent-sessions/send-message"},{"openapi":"get /v1/agents/sessions/{session_id}/history","title":"Get History","href":"/api-reference/agent-sessions/get-history"},{"openapi":"get /v1/agents/sessions/tools","title":"List Tools","href":"/api-reference/agent-sessions/list-tools"},{"openapi":"post /v1/agents/sessions/intent/detect","title":"Detect Intent","href":"/api-reference/agent-sessions/detect-intent"},{"openapi":"post /v1/agents/sessions/{session_id}/confirmations/{confirmation_id}","title":"Respond To Confirmation","href":"/api-reference/agent-sessions/respond-to-confirmation"},{"openapi":"post /v1/agents/sessions/{session_id}/feedback","title":"Submit Feedback","href":"/api-reference/agent-sessions/submit-feedback"},{"openapi":"delete /v1/agents/sessions/{session_id}","title":"Terminate Session","href":"/api-reference/agent-sessions/terminate-session"}]},{"group":"Templates","pages":[{"group":"Namespace","pages":[{"openapi":"get /v1/templates/namespaces","title":"List Namespace Templates","href":"/api-reference/templates/list-namespace-templates"},{"openapi":"get /v1/templates/namespaces/{template_id}","title":"Get Namespace Template","href":"/api-reference/templates/get-namespace-template"},{"openapi":"post /v1/templates/namespaces/from-namespace/{namespace_id}","title":"Create Namespace Template","href":"/api-reference/templates/create-namespace-template"}]},{"group":"Retriever","pages":[{"openapi":"post /v1/templates/retrievers","title":"List Retriever Templates","href":"/api-reference/templates/list-retriever-templates"},{"openapi":"get /v1/templates/retrievers/{template_id}","title":"Get Retriever Template","href":"/api-reference/templates/get-retriever-template"},{"openapi":"post /v1/templates/retrievers/from-retriever/{retriever_id}","title":"Create Retriever Template","href":"/api-reference/templates/create-retriever-template"},{"openapi":"post /v1/templates/retrievers/{template_id}/instantiate","title":"Instantiate Retriever Template","href":"/api-reference/templates/instantiate-retriever-template"}]},{"group":"Collection","pages":[{"openapi":"post /v1/templates/collections","title":"List Collection Templates","href":"/api-reference/templates/list-collection-templates"},{"openapi":"get /v1/templates/collections/{template_id}","title":"Get Collection Template","href":"/api-reference/templates/get-collection-template"},{"openapi":"post /v1/templates/collections/from-collection/{collection_id}","title":"Create Collection Template","href":"/api-reference/templates/create-collection-template"},{"openapi":"post /v1/templates/collections/{template_id}/instantiate","title":"Instantiate Collection Template","href":"/api-reference/templates/instantiate-collection-template"}]},{"group":"Bucket","pages":[{"openapi":"post /v1/templates/buckets","title":"List Bucket Templates","href":"/api-reference/templates/list-bucket-templates"},{"openapi":"get /v1/templates/buckets/{template_id}","title":"Get Bucket Template","href":"/api-reference/templates/get-bucket-template"},{"openapi":"post /v1/templates/buckets/from-bucket/{bucket_id}","title":"Create Bucket Template","href":"/api-reference/templates/create-bucket-template"},{"openapi":"post /v1/templates/buckets/{template_id}/instantiate","title":"Instantiate Bucket Template","href":"/api-reference/templates/instantiate-bucket-template"}]},{"group":"Cluster","pages":[{"openapi":"post /v1/templates/clusters","title":"List Cluster Templates","href":"/api-reference/templates/list-cluster-templates"},{"openapi":"get /v1/templates/clusters/{template_id}","title":"Get Cluster Template","href":"/api-reference/templates/get-cluster-template"},{"openapi":"post /v1/templates/clusters/from-cluster/{cluster_id}","title":"Create Cluster Template","href":"/api-reference/templates/create-cluster-template"},{"openapi":"post /v1/templates/clusters/{template_id}/instantiate","title":"Instantiate Cluster Template","href":"/api-reference/templates/instantiate-cluster-template"}]},{"group":"Taxonomy","pages":[{"openapi":"post /v1/templates/taxonomies","title":"List Taxonomy Templates","href":"/api-reference/templates/list-taxonomy-templates"},{"openapi":"get /v1/templates/taxonomies/{template_id}","title":"Get Taxonomy Template","href":"/api-reference/templates/get-taxonomy-template"},{"openapi":"post /v1/templates/taxonomies/from-taxonomy/{taxonomy_id}","title":"Create Taxonomy Template","href":"/api-reference/templates/create-taxonomy-template"},{"openapi":"post /v1/templates/taxonomies/{template_id}/instantiate","title":"Instantiate Taxonomy Template","href":"/api-reference/templates/instantiate-taxonomy-template"}]},{"group":"Public Templates","pages":[{"openapi":"get /v1/public/templates/namespaces","title":"List Public Namespace Templates","href":"/api-reference/public-templates-api/list-public-namespace-templates"},{"openapi":"get /v1/public/templates/namespaces/{template_id}","title":"Get Public Namespace Template","href":"/api-reference/public-templates-api/get-public-namespace-template"},{"openapi":"get /v1/public/templates/retrievers","title":"List Public Retriever Templates","href":"/api-reference/public-templates-api/list-public-retriever-templates"},{"openapi":"get /v1/public/templates/retrievers/{template_id}","title":"Get Public Retriever Template","href":"/api-reference/public-templates-api/get-public-retriever-template"},{"openapi":"get /v1/public/templates/scaffolds","title":"List Scaffolds","href":"/api-reference/public-templates-api/list-scaffolds"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}","title":"Get Scaffold","href":"/api-reference/public-templates-api/get-scaffold"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}/sample-data","title":"Get Scaffold Sample Data","href":"/api-reference/public-templates-api/get-scaffold-sample-data"},{"openapi":"get /v1/public/templates/scaffolds/{template_id}/manifest","title":"Get Scaffold Manifest","href":"/api-reference/public-templates-api/get-scaffold-manifest"}]},{"group":"Scaffold Templates","pages":[{"openapi":"post /v1/templates/scaffolds/default","title":"Get Or Create Default Namespace","href":"/api-reference/scaffold-templates/get-or-create-default-namespace"},{"openapi":"get /v1/templates/scaffolds/{template_id}/manifest","title":"Get Scaffold Template Manifest","href":"/api-reference/scaffold-templates/get-scaffold-template-manifest"}]}]},{"group":"Manifest","pages":[{"openapi":"post /v1/manifest/apply","title":"Apply Manifest","href":"/api-reference/manifest/apply-manifest"},{"openapi":"post /v1/manifest/validate","title":"Validate Manifest","href":"/api-reference/manifest/validate-manifest"},{"openapi":"get /v1/manifest/export","title":"Export Manifest Get","href":"/api-reference/manifest/export-manifest"},{"openapi":"post /v1/manifest/diff","title":"Diff Manifest","href":"/api-reference/manifest/diff-manifest"},{"openapi":"post /v1/manifest/generate","title":"Generate Manifest","href":"/api-reference/manifest/generate-manifest"},{"openapi":"post /v1/manifest/lint","title":"Lint Manifest","href":"/api-reference/manifest/lint-manifest"}]},{"group":"Analytics","pages":[{"group":"Namespace","pages":[{"openapi":"get /v1/analytics/namespaces/summary","title":"Get Namespace Summary","href":"/api-reference/analytics/get-namespace-summary"},{"openapi":"get /v1/analytics/indexes/usage","title":"Get Field Usage","href":"/api-reference/analytics/get-field-usage"},{"openapi":"get /v1/analytics/namespaces/fields/performance","title":"Get Field Performance","href":"/api-reference/analytics/get-field-performance"},{"openapi":"get /v1/analytics/namespaces/fields/most-queried","title":"Get Most Queried Fields","href":"/api-reference/analytics/get-most-queried-fields"},{"openapi":"get /v1/analytics/namespaces/indexes/compound-patterns","title":"Get Compound Index Patterns","href":"/api-reference/analytics/get-compound-index-patterns"},{"openapi":"get /v1/analytics/namespaces/indexes/recommendations","title":"Get Index Recommendations","href":"/api-reference/analytics/get-index-recommendations"},{"openapi":"get /v1/analytics/indexes/suggestions","title":"Get Index Suggestions","href":"/api-reference/analytics/get-index-suggestions"},{"openapi":"get /v1/analytics/namespaces/errors","title":"Get Namespace Errors","href":"/api-reference/analytics/get-namespace-errors"}]},{"group":"Buckets","pages":[{"openapi":"get /v1/analytics/buckets/{bucket_id}/health","title":"Get Bucket Health","href":"/api-reference/analytics/get-bucket-health"},{"openapi":"get /v1/analytics/buckets/health","title":"Get Namespace Buckets Health","href":"/api-reference/analytics/get-namespace-buckets-health"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/storage","title":"Get Bucket Storage","href":"/api-reference/analytics/get-bucket-storage"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/usage","title":"Get Bucket Usage","href":"/api-reference/analytics/get-bucket-usage"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/sync-performance","title":"Get Sync Performance","href":"/api-reference/analytics/get-sync-performance"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/sync-comparison","title":"Get Sync Comparison","href":"/api-reference/analytics/get-sync-comparison"},{"openapi":"get /v1/analytics/buckets/{bucket_id}/upload-performance","title":"Get Upload Performance","href":"/api-reference/analytics/get-upload-performance"}]},{"group":"Collections","pages":[{"openapi":"get /v1/analytics/collections/{collection_id}/overview","title":"Get Collection Overview","href":"/api-reference/analytics/get-collection-overview"},{"openapi":"get /v1/analytics/collections/{collection_id}/growth","title":"Get Document Growth","href":"/api-reference/analytics/get-document-growth"},{"openapi":"get /v1/analytics/collections/{collection_id}/latency","title":"Get Latency Metrics","href":"/api-reference/analytics/get-latency-metrics"},{"openapi":"get /v1/analytics/collections/{collection_id}/failures","title":"Get Failure Analysis","href":"/api-reference/analytics/get-failure-analysis"},{"openapi":"get /v1/analytics/extractors/performance","title":"Get Extractor Performance","href":"/api-reference/analytics/get-extractor-performance"}]},{"group":"Retrievers","pages":[{"openapi":"get /v1/analytics/retrievers/{retriever_id}/performance","title":"Get Retriever Performance","href":"/api-reference/analytics/get-retriever-performance"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/signals","title":"Get Retriever Signals","href":"/api-reference/analytics/get-retriever-signals"},{"openapi":"get /v1/analytics/namespaces/queries/slow","title":"Get Slow Queries","href":"/api-reference/analytics/get-slow-queries"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/stages","title":"Get Stage Breakdown","href":"/api-reference/analytics/get-stage-breakdown"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/cache-performance","title":"Get Cache Performance","href":"/api-reference/analytics/get-cache-performance"},{"openapi":"post /v1/analytics/retrievers/{retriever_id}/analyze-tuning","title":"Analyze For Tuning","href":"/api-reference/analytics/analyze-for-tuning"}]},{"group":"Engine","pages":[{"openapi":"get /v1/analytics/performance/engine","title":"Get Engine Performance","href":"/api-reference/analytics/get-engine-performance"},{"openapi":"get /v1/analytics/performance/engine/bottlenecks","title":"Analyze Bottlenecks","href":"/api-reference/analytics/analyze-bottlenecks"},{"openapi":"get /v1/analytics/performance/engine/extractors","title":"Get Extractor Breakdown","href":"/api-reference/analytics/get-extractor-breakdown"},{"openapi":"get /v1/analytics/performance/engine/stages","title":"Get Engine Stage Breakdown","href":"/api-reference/analytics/get-engine-stage-breakdown"},{"openapi":"get /v1/analytics/performance/engine/slow-operations","title":"Get Slowest Operations","href":"/api-reference/analytics/get-slowest-operations"}]},{"group":"Taxonomies","pages":[{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/assignments","title":"Get Assignment Metrics","href":"/api-reference/analytics/get-assignment-metrics"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/confidence","title":"Get Confidence Distribution","href":"/api-reference/analytics/get-confidence-distribution"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/labels","title":"Get Label Distribution","href":"/api-reference/analytics/get-label-distribution"},{"openapi":"get /v1/analytics/taxonomies/{taxonomy_id}/enrichments","title":"Get Enrichment History","href":"/api-reference/analytics/get-enrichment-history"}]},{"group":"Clusters","pages":[{"openapi":"get /v1/analytics/clusters/{cluster_id}/execution-history","title":"Get Execution History","href":"/api-reference/analytics/get-execution-history"},{"openapi":"get /v1/analytics/clusters/{cluster_id}/failures","title":"Get Failure Analysis","href":"/api-reference/analytics/get-failure-analysis-1"}]},{"group":"Inference \u0026 Extractors","pages":[{"openapi":"get /v1/analytics/collections/{collection_id}/extractors","title":"Get Extractor Performance","href":"/api-reference/analytics/get-extractor-performance-1"}]},{"group":"Diagnostics","pages":[{"openapi":"get /v1/analytics/performance/batches/{batch_id}/diagnostics","title":"Get Batch Diagnostics","href":"/api-reference/analytics/get-batch-diagnostics"},{"openapi":"get /v1/analytics/usage/summary","title":"Get Usage Summary","href":"/api-reference/analytics/get-usage-summary"},{"openapi":"get /v1/analytics/retrievers/{retriever_id}/slow-queries","title":"Get Slowest Queries","href":"/api-reference/analytics/get-slowest-queries"}]}]},{"group":"Discovery","pages":[{"openapi":"get /v1/discovery","title":"Get All Discovery Information","href":"/api-reference/discovery/get-all-discovery-information"},{"openapi":"get /v1/discovery/extractors","title":"List Available Feature Extractors","href":"/api-reference/discovery/list-available-feature-extractors"},{"openapi":"get /v1/discovery/stages","title":"List Available Retriever Stages with Examples","href":"/api-reference/discovery/list-available-retriever-stages-with-examples"},{"openapi":"get /v1/discovery/schema","title":"Get Manifest Schema for Agent Configuration","href":"/api-reference/discovery/get-manifest-schema-for-agent-configuration"}]},{"group":"Inference","pages":[{"openapi":"post /v1/inference","title":"Execute Raw Inference","href":"/api-reference/inference/execute-raw-inference"}]},{"group":"Events","pages":[{"openapi":"get /v1/events","title":"List change feed events","href":"/api-reference/events/list-events"}]},{"group":"Resource Search","pages":[{"openapi":"post /v1/resources/search","title":"Search Resources","href":"/api-reference/resource-search/search-resources"}]},{"group":"Onboarding","pages":[{"openapi":"post /v1/onboarding/infer-config","title":"Infer onboarding configuration","href":"/api-reference/onboarding/infer-onboarding-configuration"},{"openapi":"get /v1/onboarding/suggested-config","title":"Get the org's signup-time suggested namespace","href":"/api-reference/onboarding/get-suggested-config"},{"openapi":"post /v1/signup/agent","title":"Sign up as an agent","href":"/api-reference/onboarding/agent-signup"}]}]}]}]}]},"basePath":"","title":"Create Cluster - Mixpeek","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Do6EtGSl.js","utils-id4tQ6My.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Byrixac4.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-nakYa3Zl.js","snippetPresets-Bq-pUS7h.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-CujTC_9K.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-FneVUsVu.js","shallow-DY9WpUCz.js","getApiPlaygroundDisplay-Bz8WpPfA.js","CodeSnippet-DgCuJg4G.js","CodeSnippets-Dub9c4T0.js","Page-CePXnjd1.js","getPastedJson-xdI8y2XB.js","icon--yVw5vkr.js","MethodPill-C47t7MdS.js","DuplicateIcon-BzwJ2LeC.js","createIcon-BzggGy84.js","DynamicMarkdown-AlxJK8VR.js","SectionHeading-CMlwFxdK.js","axios-vUo_bRtp.js","Markdown-BNgNrPsi.js","clsx-apD-Q0Oo.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-qmLwQyWY.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Dc4qTkWx.js"]}