Skip to main content
POST
Create Retriever

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Payload for creating a new retriever.

retriever_name
string
required

Unique retriever name (REQUIRED).

Minimum string length: 1
stages
StageConfig · object[]
required

Ordered stage configurations (REQUIRED). Each stage is {"stage_name": , "config": {"stage_id": , "parameters": {...}}}. List available stage types + parameters via GET /v1/retrievers/stages, or POST /v1/templates/scaffolds/default for a ready-made retriever.

Minimum array length: 1
Example:
description
string | null

Human readable retriever description (OPTIONAL).

visibility
enum<string>
default:private

Visibility level: PRIVATE (owner only), PUBLIC (any valid API key), MARKETPLACE (requires subscription). Defaults to PRIVATE.

Available options:
private,
public,
marketplace
marketplace_listing_id
string | null

Associated marketplace listing ID when visibility is MARKETPLACE (OPTIONAL).

requires_subscription
boolean
default:false

Whether this retriever requires an active subscription to access (marketplace only).

collection_identifiers
string[]

Collection identifiers (names or IDs) queried by the retriever (OPTIONAL). Identifiers can be collection names (e.g., 'my_collection') or collection IDs (e.g., 'col_abc123'). The system will resolve names to IDs automatically. Can be empty for inference-only pipelines (e.g., LLM query analysis without document retrieval). Also accepts 'collection_ids' as an alias for backward compatibility.

Examples:
input_schema
Input Schema · object

Input schema properties keyed by field name (OPTIONAL). Can be empty for static retrievers with hardcoded stage parameters. Each field can include: type, description, required, default, and examples. The 'examples' field (list) provides sample values that will be shown to users when the retriever is published with include_metadata=true.

Example:
budget_limits
BudgetLimits · object

Budget limits for execution (OPTIONAL).

Examples:
tags
string[]

Optional retriever tags for search/filters.

metadata
Metadata · object

Custom key-value metadata stored on the retriever (OPTIONAL). Round-trips on create/get/list and is updatable via PATCH — useful for automation markers like seed/config versions. Previously this field was silently dropped on create (FRUSTRATIONS silent-drop class).

display_config
DisplayConfig · object | null

Display configuration for public retriever UI rendering (OPTIONAL). Defines how the search interface should appear when the retriever is published, including input fields, theme, layout, exposed result fields, and field formatting. This configuration is used as the default when publishing the retriever.

Example:

Response

Successful Response

Full retriever definition persisted in MongoDB.

retriever_name
string
required

Unique retriever name within namespace (REQUIRED).

Minimum string length: 1
stages
StageConfig · object[]
required

Ordered list of stage configurations (REQUIRED).

Minimum array length: 1
fusion
string | null
required

Fusion strategy used by this retriever's feature_search stage (e.g. 'learned', 'rrf', 'dbsf'). Null if no feature_search stage.

collection_identifiers
string[]
required
read-only

Mirror of collection_ids under the field name CREATE accepts (collection_identifiers), so a create → read round-trip reads back the field it wrote. Always equal to collection_ids (FRUSTRATIONS 2026-07-16: SDKs/agents re-reading their own write saw collection_identifiers null and concluded the retriever was unscoped).

retriever_id
string

Stable retriever identifier (REQUIRED).

description
string | null

Detailed description of retriever behaviour (OPTIONAL).

collection_ids
string[]

Collections queried by the retriever. Can be empty for query-only inference mode.

input_schema
Input Schema · object

JSON Schema describing expected user inputs (REQUIRED). Properties must use RetrieverInputSchemaField which supports all bucket types plus document_reference.

budget_limits
BudgetLimits · object

Execution budget limits for the retriever (OPTIONAL).

Examples:
feature_dependencies
FeatureAddress · object[] | null

Feature addresses required by stages (OPTIONAL, aids validation).

tags
string[]

Arbitrary tags to help organise retrievers (OPTIONAL).

metadata
Metadata · object

Custom key-value metadata (OPTIONAL). Round-trips on create/get/list and is updatable via PATCH — useful for automation markers like seed/config versions.

display_config
Display Config · object | null

Display configuration for public retriever UI rendering (OPTIONAL). Defines how the search interface should appear when the retriever is published, including input fields, theme, layout, exposed result fields, and field formatting. This configuration is used as the default when publishing the retriever.

version
integer
default:1

Version number that increments on each update (REQUIRED).

Required range: x >= 1
created_at
string<date-time>

Creation timestamp in UTC (REQUIRED).

updated_at
string<date-time>

Last update timestamp in UTC (REQUIRED).

created_by
string | null

Identifier of the user who created the retriever (OPTIONAL).

updated_by
string | null

Identifier of the user who last updated the retriever (OPTIONAL).