Document-Shaped Results
- Cap one document’s share of the page:
max_chunks_per_documenton the v3 Query request stops a single long file from occupying every result slot. Surplus chunks drop and the page backfills with the next best chunks from other documents; ranking is unchanged, only the page composition is. - Ask for the top documents:
top_documents: Nadds atop_documentsarray to the response, ranking documents by their best chunk across the whole ranked pool. Each group carries the stabledocument_id(usable with Get Document and stable across re-indexing),filename, bestscore, poolchunk_count, and chunk references that resolve intoresults. The flatresultslist is unaffected. See Return the Top Documents. - Jobs report a terminal stage: a finished job’s
progress.current_stagenow ends atcompleted,failed, orcancelledinstead of sitting onfinalizingforever, and per-filestagevalues end atcompleted(indexed or skipped; the file’sstatuscarries which) orfailed. A job whose files all failed now saysJob failedrather thanJob completed.
Azure Blob Storage Sync
- Azure Blob Storage joins the sync providers:
POST /v2/collections/{collection_name}/sync/azurekeeps an Azure container synced with a collection. Authenticate with the storage account’s name and access key (container+account_name+account_key; the key is stored securely, never returned, and rotates in place viaPATCH /v2/syncs/{sync_id}with anaccount_keyfield). Reconciliation defaults to a 60-minute cadence, and real-time events arrive through an Event Grid subscription: one click with the Deploy to Azure template, or oneaz eventgrid event-subscription create: the setup guide shows both. The template is self-verifying: the deployment only goes green when Event Grid proves delivery to Captain and Captain confirms the webhook enrollment.
Query History API
- Your query history, from the API:
GET /v2/querieslists the queries your keys and agents have run, newest first, scoped to the calling key’s environment, withcollection,status,from/toandsortfilters and cursor paging.GET /v2/queries/{query_id}returns one query with its request body, response body and the retrieved chunks in one normalised shape across v2 and v3. Addinclude=results,request,responseto the list to get feed and previews in one request; the body fields are always present and null unless requested. Bodies are archived 90 days after the query (body_status: archived); summaries are kept. - Query responses now carry
query_id: everyPOST .../queryresponse (v2 and v3) returns the id of its history row, so you can fetch it back withGET /v2/queries/{query_id}straight away. Therequest_ida query response returns is accepted on that endpoint too.
More Rerank Models
- Two new reranker options:
rerank.modelon v3 Query and v2 Query now acceptsvoyage-rerank-3(aliasrerank-3) andgemini-3.8-flashalongside the existingvoyage-rerank-2.5(default) andgemini-2.5-flash. Voyage models are fast cross-encoders; the Gemini models are LLM rerankers with a higher quality ceiling on complex queries at higher latency — pair them with small candidate pools. The family aliasesvoyageandgeminikeep resolving to each family’s default, so existing requests are unchanged, and the response’srerankenvelope keeps reporting the model that actually ran.
Collection Copies Keep the Graph
- Collection copies now include chunk relations and chunk metadata: fixed a bug where
POST /v2/collections/{name}/copycloned documents and vectors but left the graph behind. A copied collection had no relations, and its chunk metadata matched search filters but never appeared on the metadata read endpoint. Copies now carry both. Captain rewrites each relation’s document pointer to the new collection’s own document ids, so a copy keeps resolving after you delete the source. The response reportsrelations_copied,chunk_metadata_copied, andrelations_unresolved, andinclude_graph: falseskips the graph if you only want documents and vectors.
Keyword and Semantic Balance
- Tune the keyword/semantic balance:
semantic_ratioon v2 and v3 Query (0.0to1.0, default0.5) weights the fused result set:0.0is keyword only,1.0is semantic only. See Advanced Search & Relations.
Same day: MCP Guide, Metadata Boosts, Mint Asset URLs, Supported File Types Guide, YouTube Audio & Video Modes
MCP Guide
- MCP has its own guide: the hosted server, all 48 tools, and client configs for Claude Code, Cursor, VS Code, and Windsurf now live at MCP Server. OpenClaw and Hermes keep their page under Integrations.
Metadata Boosts
- Rank by your own metadata, not just filter by it: v3 Query accepts an optional
boostarray. Each clause retrieves chunks matching one of yourcustom_metadatakeys and multiplies their retrieval score by aweightbetween0.2and5.0. Use it when a chunk is the right answer but does not share wording with the query: a reviewer marked it, a curated tag applies, or your application already cited it. Send noboostand retrieval is unchanged. - Soft by default, guaranteed when you ask: with reranking on, boosts decide which chunks the reranker considers and the reranker still decides the final order. Set
reserveon a clause to guarantee its best matches a place on the page. - Every boost explains itself: each clause is echoed with
matched,in_pool, andon_pagecounts; boosted results carry aboostrecord with the multiplier and the rank they held beforehand, and reportmetadatainmatch_sources. See Advanced Search & Relations.
Mint Asset URLs
- Fetch figure crops on demand: Mint Asset URLs takes the
figure_ids from a document’s regions and returns short-lived signed image URLs. Batch up to 100, setttl_seconds(default 900), and each id degrades on its own.
Supported File Types Guide
- Supported file types guide: documents, text, images, video, and audio formats with their extensions, at Supported File Types. File Size Limits keeps the size ceilings.
YouTube Audio & Video Modes
- Index the video, not just the captions: Index YouTube now takes a
modeparameter.transcript(the default, unchanged and staying that way) indexes the caption track as text.audiopulls the audio track through the multimodal audio pipeline, billed at 5 credits per minute.videopulls the video itself for frame descriptions plus transcription, billed at 20 credits per minute. - Captionless videos can fall back instead of failing: set
on_missing_transcripttoaudioorvideoand a video with no captions is indexed through that media pipeline instead of failing the file. Because the fallback changes what you are billed, it is never silent: Get Job Status returns a per-videoyoutubearray withmode_used,fell_back_from,transcript_available, andlanguages. youtube.com/live/URLs are now accepted alongside the existingwatch,youtu.be,shorts,embed, and/v/shapes. Duplicate videos in one request are deduplicated, live streams are refused, and media over 4 hours is rejected before any processing starts.
Reliable Figure Extraction
- Unreliable chart extractions no longer reach your results: when the parser cannot verify that it read a figure accurately (dense multi-panel charts are the main case), Captain now withholds that figure’s extracted text instead of indexing numbers that may be wrong. Nothing is inserted in its place: surrounding text, captions, and tables are untouched, and search results simply never contain unverified chart data.
- Machine-detectable, still renderable: the withheld figure surfaces as a region with
extraction: "unavailable",text: null, an intact bounding box, and a workingimage_url, so your UI can render the real figure and decide how to present the omission. Regions withextractionnull or absent are included content as always. - Verified charts keep their data: figures whose extraction was verified against the source image continue to return their structured data.
Rerank Controls
- Tune reranking per request:
rerankon v3 Query and v2 Query now also accepts an object,{"enabled": true, "candidate_limit": 50, "model": "voyage-rerank-2.5"}. Pick the reranker (voyage-rerank-2.5, default, orgemini-2.5-flash), and size the candidate pool that gets reranked before your toplimitreturns (defaultlimit× 3, must be ≥limit, capped at 200). Booleans keep working unchanged, and the v3 response’srerankenvelope now reports themodelandcandidate_limitthat ran.
Chunk Types & Layout Exclusion
- Every parsed chunk now carries a layout role: v3 query results, document chunks, and related chunks include a first-class
chunk_typefield classified from the parser’s block structure at indexing time. The closed set of values isbody,table,heading,page_header,page_footer,footnote, andfigure.chunk_typeisnullfor unlabeled content: anything indexed before this shipped, plain-text and media files, and regions the parser returned without block structure. - Keep page furniture out of retrieval: pass
exclude_chunk_typeson v3 Query (for example["page_header", "page_footer", "footnote"]) and matching chunks are excluded at retrieval time, before reranking, combined withfilterwhen both are sent. Chunks with anulllabel always pass, so existing collections behave exactly as before. Unknown values return a 400 listing the allowed set, and excludingbodyadds a warning since body is a document’s primary text. The response always echoesexclude_chunk_types. - Reserved key:
chunk_typeis now reserved; writing it throughcustom_metadatais rejected on every write surface. - Applies to newly indexed documents: labels are written at indexing time, so re-index a document to pick them up. See Advanced Search & Relations for the full semantics.
Compliance PII Entities
- Four compliance entities:
mask_piinow detectsUS_NMLS_ID,US_SURETY_BOND_NUMBER,SURETY_COMPANY, andSURETY_BOND_PRINCIPAL. Entities are label-anchored, so loan numbers, NAIC codes, and amounts on the same form stay readable. See PII Masking.
Copy & Environment Tools in MCP
- MCP gains
captain_copy_collectionandcaptain_change_environment: clone a collection, or move one between environments, from any MCP client. API keys are environment-scoped, so a moved collection leaves the old environment’s keys behind. See MCP Server.
Same day: Document Metadata Endpoints, Image Dimension Limits, Neighboring Chunks, Page-Level Retrieval
Document Metadata Endpoints
- Replace or merge a document’s metadata:
PUTandPATCHon/v3/collections/{collection_name}/documents/{document_id}/metadatawrite custom metadata after indexing, and the v3 documents list acceptsmetadata_filterto look documents up by that metadata.
Image Dimension Limits
- Image dimension limits: images index up to 200 megapixels, with or without
mask_pii; an oversized image fails as a per-file error on the job record without blocking the batch. See File Size Limits.
Neighboring Chunks
- Read past a cut-off chunk without a second query: set
include.neighboring_chunks: trueon v3 Query and each result carries the chunk immediately before and after it in the source file, underneighboring_chunks.prevandneighboring_chunks.next.previsnullfor the first chunk in a document,nextisnullfor the last. See Advanced Search & Relations. - Off by default: the base query response is unchanged unless
include.neighboring_chunksis set.
Page-Level Retrieval
- Fetch one page of a document:
GET /v3/collections/{collection_name}/documents/{document_id}/pages/{page_number}returns the chunks, text, and regions of a single page, next to Get Document in the v3 reference.