v5

OpenAPI 3.1.02026-08-025631,1012.8 MB
Retrievers

Execute Retriever (Auto-Optimized)

Execute a retriever and return matching documents. The pipeline is automatically optimized before execution for best performance.

Automatic Optimization: Your pipeline stages are automatically transformed for optimal performance:

  • Filters pushed down to reduce expensive operations
  • Redundant stages merged or eliminated
  • Grouping operations pushed to database layer (10-100x faster)
  • Operations reordered for efficiency

Streaming Support: Set stream=true in the request body to receive real-time stage updates via SSE:

  • Response uses text/event-stream content type
  • Each stage emits stage_start and stage_complete events
  • Final event contains complete results and pagination
  • Useful for progress tracking and debugging

Response Includes (when stream=false):

  • documents: Final matching documents
  • pagination: Pagination metadata
  • stage_statistics: Per-stage execution metrics
  • budget: Credit/time consumption
  • optimization_applied: Whether optimizations were applied
  • optimization_summary: Details about transformations (when applied)

Optimization Summary Example:

{
  "optimization_applied": true,
  "optimization_summary": {
    "original_stage_count": 5,
    "optimized_stage_count": 3,
    "optimization_time_ms": 8.2,
    "rules_applied": ["push_down_filters", "group_by_push_down"],
    "stage_reduction_pct": 40.0
  }
}

Use the /explain endpoint to see the optimized execution plan before running.

post/v1/retrievers/{retriever_id}/execute

Path parameters

retriever_idstring required

Retriever ID or name. Pipeline will be automatically optimized before execution.

Retriever ID or name. Pipeline will be automatically optimized before execution.

Query parameters

return_presigned_urlsboolean

Generate presigned URLs for S3-backed blobs and url-shaped fields. Also accepted as a body field — if either source is true, presigning is enabled.

Generate presigned URLs for S3-backed blobs and url-shaped fields. Also accepted as a body field — if either source is true, presigning is enabled.

return_vectorsboolean

Include vector embeddings in result documents. Also accepted as a body field — if either source is true, vectors are returned.

Include vector embeddings in result documents. Also accepted as a body field — if either source is true, vectors are returned.

explainboolean

Return the inline explain_plan (per-stage timings + optimization summary) in the response. Also accepted as a body field — if either source is true, the plan is included.

Return the inline explain_plan (per-stage timings + optimization summary) in the response. Also accepted as a body field — if either source is true, the plan is included.

include_legacy_resultsboolean

DEPRECATED. Restore the legacy results alias (a byte-for-byte copy of documents). Off by default — results previously duplicated the entire document array in every response (~half the payload). Prefer documents; use this only as a temporary migration shim.

DEPRECATED. Restore the legacy results alias (a byte-for-byte copy of documents). Off by default — results previously duplicated the entire document array in every response (~half the payload). Prefer documents; use this only as a temporary migration shim.

skip_cacheboolean

Bypass the execute/stage cache read for this request (a fresh execution; the result is still written to cache). Also accepted as a body field — if either source is true, the cache is skipped.

Bypass the execute/stage cache read for this request (a fresh execution; the result is still written to cache). Also accepted as a body field — if either source is true, the cache is skipped.

Request body

inputsobject

Runtime inputs for the retriever mapped to the input schema. Keys must match the retriever's input_schema field names. Values depend on field types (text, vector, filters, etc.). REQUIRED unless all retriever inputs have defaults.

Common input keys:

  • 'query': Text search query
  • 'embedding': Pre-computed vector for search
  • 'top_k': Number of results to return
  • 'min_score': Minimum relevance threshold
  • Any custom fields defined in input_schema

Template Syntax (Jinja2):

Namespaces (uppercase or lowercase):

  • INPUT / input: Query inputs (e.g., {{INPUT.query}})
  • DOC / doc: Document fields (e.g., {{DOC.payload.title}})
  • CONTEXT / context: Execution context
  • STAGE / stage: Stage configuration
  • SECRET / secret: Vault secrets (e.g., {{SECRET.api_key}})

Accessing Data:

  • Dot notation: {{DOC.payload.metadata.title}}
  • Bracket notation: {{DOC.payload['special-key']}}
  • Array index: {{DOC.items[0]}}, {{DOC.tags[2]}}
  • Array first/last: {{DOC.items | first}}, {{DOC.items | last}}

Array Operations:

  • Iterate: {% for item in DOC.tags %}{{item}}{% endfor %}
  • Extract key: {{DOC.items | map(attribute='name') | list}}
  • Join: {{DOC.tags | join(', ')}}
  • Length: {{DOC.items | length}}
  • Slice: {{DOC.items[:5]}}

Conditionals:

  • If: {% if DOC.status == 'active' %}...{% endif %}
  • If-else: {% if DOC.score > 0.8 %}high{% else %}low{% endif %}
  • Ternary: {{'yes' if DOC.enabled else 'no'}}

Built-in Functions: max, min, abs, round, ceil, floor Custom Filters: slugify (URL-safe), bool (truthy coercion), tojson (JSON encode)

S3 URLs: Internal S3 URLs (s3://bucket/key) are automatically presigned when accessed via DOC namespace.

filtersobject nullable

Optional ad-hoc filters applied at execution time. Merged (AND) with any filters already defined in the retriever's stages. Uses the standard LogicalOperator format: {"AND": [{"field": "brand", "operator": "eq", "value": "Acme"}]}. Supports operators: eq, ne, in, nin, gt, gte, lt, lte, contains, exists, is_null.

limitinteger nullable

DEPRECATED alias for the pagination page size — prefer 'pagination' (e.g. {"method": "cursor", "limit": 100}). Previously accepted-and-IGNORED: results silently capped at the default page size (10) regardless of the value, and out-of-range values didn't even 422 (FRUSTRATIONS 2026-07-23). Now: when 'pagination' is absent, 'limit' is honored as the default cursor pagination's page size; when both are provided and disagree, pagination wins and a top-level response warning names the conflict.

streamboolean

Enable streaming execution to receive real-time stage updates via Server-Sent Events (SSE). NOT REQUIRED - defaults to False for standard execution.

When stream=True:

  • Response uses text/event-stream content type
  • Each stage completion emits a StreamStageEvent
  • Events include: stage_start, stage_complete, stage_error, execution_complete
  • Clients receive intermediate results and statistics as stages execute
  • Useful for progress tracking, debugging, and partial result display

When stream=False (default):

  • Response returns after all stages complete
  • Returns a single RetrieverExecutionResponse with final results
  • Lower overhead for simple queries

Use streaming when:

  • You want to show real-time progress to users
  • You need to display intermediate results
  • Pipeline has many stages or long-running operations
  • Debugging or monitoring pipeline performance

Example streaming client (JavaScript):

const eventSource = new EventSource('/v1/retrievers/ret_123/execute?stream=true');
eventSource.onmessage = (event) => {
  const stageEvent = JSON.parse(event.data);
  if (stageEvent.event_type === 'stage_complete') {
    console.log(`Stage ${stageEvent.stage_name} completed`);
    console.log(`Documents: ${stageEvent.documents.length}`);
  }
};

Example streaming client (Python):

import requests
response = requests.post('/v1/retrievers/ret_123/execute',
                        json={'inputs': {...}, 'stream': True},
                        stream=True)
for line in response.iter_lines():
    if line.startswith(b'data: '):
        event = json.loads(line[6:])
        print(f"Stage {event['stage_name']}: {event['event_type']}")
expandstring[] nullable

OPTIONAL. List of fields containing document IDs to resolve inline. Referenced documents are fetched and attached under an '_expanded' key in each result document. Supports dot-notation for nested fields (e.g., 'items.product_id'). Max 50 unique references per request. Depth is limited to 1 (no recursive expansion).

skip_cacheboolean

OPTIONAL. Bypass stage result cache for this execution. When True, all stages execute fresh without cache lookup. Useful after corpus updates, retriever config changes, or engine deploys. Results are still written to cache for future requests.

return_presigned_urlsboolean

Generate presigned URLs for S3-backed blobs and url-shaped fields in result documents. Also accepted as a return_presigned_urls query parameter; if either source is true, presigning is enabled.

return_vectorsboolean

Include vector embeddings in result documents. Also accepted as a return_vectors query parameter; if either source is true, vectors are returned.

write_tokenstring nullable

OPTIONAL. Pass the write_token returned by a prior direct upsert (options.write_token=true) to get read-your-writes consistency: the read is routed to the primary shard, where your just-written document is immediately searchable, instead of an eventually-consistent replica that can lag several seconds behind. Omit for normal (eventual) reads.

explainboolean

OPTIONAL. When true, the response includes explain_plan — the query profile for THIS execution: per-stage timings + input/output counts, MVS execution stats, and the optimizer summary (and, once wired, the shard ExecutionTrace: chosen legs, fusion, push-downs, nprobe, served/shadow planner). Analogous to SQL EXPLAIN ANALYZE — the query still runs and returns documents; the plan is attached alongside. The same profile is auto-logged for every execution regardless of this flag (so Studio can read it); explain=true simply returns it inline in the response.

Example request

{
  "description": "Simple query",
  "inputs": {
    "query": "artificial intelligence trends",
    "top_k": 25
  }
}

Response

Execution results with documents, pagination, statistics, and optimization details. When stream=true, returns Server-Sent Events. When stream=false, returns JSON response.

{"stackTrail":"paths:/v1/retrievers/{retriever_id}/execute:post:responses:200:content:application/json:schema","oasType":"schema","type":"unknown"}