> For a complete page index of the Captain API documentation, fetch https://docs.captain.dev/llms.txt?excludeSpec=true

# Studio Improvements

* **Indexing options on Home**: a popover next to the Advanced / Basic choice sets Mask PII (`mask_pii`), skip or overwrite existing files (`skip_existing` / `overwrite_existing`), tags (`custom_metadata`, with reserved and `$`-prefixed keys rejected as you type), and the spoken language for audio and video (`transcription_language`). **Remember for this collection** keeps the processing type, Mask PII, and skip/overwrite choice as the collection's defaults, and Google Drive, SharePoint, and Dropbox continuous syncs re-index with them. New source tiles cover URLs, YouTube (transcript, audio, or video mode plus `on_missing_transcript`), and S3, GCS, Azure Blob, R2, Supabase, and Backblaze, all without an API key in the browser.
* **Search settings in the chat**: results per collection, rerank on/off with the model (`voyage-rerank-2.5`, `voyage-rerank-3`, `gemini-2.5-flash`, `gemini-3.8-flash`) and candidate limit, the keyword ↔ semantic balance (`semantic_ratio`), skipped chunk types, archived documents, and a metadata filter, remembered per organization in the browser. The **view code** panel now shows the [v3 Query](/reference/v3/query) request the settings produce, next to the v2 answer mode, with a parameter table.
* **Playground covers every public endpoint**: v3 Query with `semantic_ratio`, rerank Off / On / Custom, `exclude_chunk_types`, `boost`, all `include` keys, and relations; v2 Query; [query history](/reference/queries/list) list and get (by `query_id` or `request_id`); multipart file upload; parsing script validation; document page, asset URLs, and metadata; Azure Blob sync create and a credentials check; job PII report get and delete; feedback. Query cards render a ranked results view with total, server time, rerank model, and `query_id`, and every card exports cURL, Python, and TypeScript.
* **Sync Manager**: Azure Blob Storage as a provider (`container`, `account_name`, `account_key`, with Event Grid guidance in the Webhook dialog), tags on create, **Rotate secret** for webhooks (`rotate_secret`), and an Environment choice on the create form. Syncs stay organization-wide; the choice picks the target collection's environment, and an API key must exist there (`412` otherwise).
* **Activity**: **Cancel job** for running or queued jobs ([`DELETE /v2/jobs/{job_id}`](/reference/jobs/cancel)) and **Roll back** for finished ones ([`PATCH /v2/jobs/{job_id}/rollback`](/reference/jobs/rollback)); a PII masking row with the report state and the `GET /v2/jobs/{job_id}/pii` call; file rows that expand to URI, document id, status, stage, error, and update time.
* **API Keys and usage**: renaming a key persists, **Rotate key** reveals the new secret once and retires the old one immediately, and the sidebar usage figure sums the current billing period from the same source as the Usage page.
* **Faster chunk and document reads**: [`GET /v3/collections/{collection_name}/chunks`](/reference/v3/documents/chunks) and [`GET /v3/collections/{collection_name}/documents/{document_id}`](/reference/v3/document) no longer transfer each chunk's stored embedding from the index before dropping it. A 100-chunk page went from about 3 s to under a second, and a 317-chunk document from 9 s to under half a second, with the same response bodies. The same routes back the Playground's document and chunk cards and the MCP `captain_list_chunks` tool.