Private & Secure: No LLM training on your data
X-API-KEY header. See Authentication for details. For full request/response schemas, see the Content API reference.
Upload a file
Direct upload has two required steps; a third step is optional if you want to track enrichment status. The workflow uploads your file and enriches it (extraction, structure and annotation of the content). By default it also indexes the document so it is available in Search and Research Agent. You can skip indexing or long-term storage with the optionalno_index and no_store flags. See Processing options.
1
Request an upload URL
POST to Include an optional
/contents/v1/documents with JSON metadata. The response contains a single-use pre-signed url and the document id.enrichments array to configure the processing pipeline to apply extra enrichment steps to the document. See Enrichments below. Optionally set no_index or no_store if you want enrichment without Search indexing or without long-term retention. See Processing options.Example response:2
Upload the file to the pre-signed URL
PUT the file to the url from the previous response. This uploads the document; Bigdata then enriches it (extraction, structure and annotation of the content). Unless you set
no_index or no_store, it is also indexed for Search and Research Agent.3
(Optional) Poll to track enrichment status
If you want to track when the document is ready, use the id from step 1 with Get document metadata to poll
status. While enriching, you will see "status": "processing". When enrichment is complete (and indexing, unless you skipped it), the status becomes "status": "completed". This step is not required; Bigdata processes the document in the background after you upload it.Tags
At upload time: Include atags array in the POST body to apply tag names to the document (e.g. ["Research Team", "Q4 2025"]). These tags can be used to filter documents in the Search and Research Agent services.
List tags: Use GET /contents/v1/tags to retrieve all tags visible to your organization, with document counts. Tags are returned with id, name, and file_count.
Filter documents by tags: When calling List documents, use the tags query parameter (repeat for multiple tags). Documents matching any of the given tags are returned (OR logic).
Use tags in Search and Research Agent: You can scope search and research to documents with specific tags. In the Search API, set query.filters.tag in the request body. In the Research Agent API, configure the search tool’s query_filters.content with the desired tag filter.
Enrichments
Include an optionalenrichments array in the upload POST body to configure the processing pipeline to apply additional enrichment steps to your document.
Supported enrichments:
You can request one or more enrichments in the same request:
Processing options
By default, an uploaded document is enriched, stored, and indexed so it can be retrieved later and used in Search and Research Agent. On POST/contents/v1/documents you can set these optional flags:
Both flags can be
true in the same request. no_store already skips indexing, so no_index has no additional effect in that case.
Working with your files
List documents: GET /contents/v1/documents returns a paginated list of documents you can access. Use query parameters for filtering (origin, tags, connector, from_date, file_name, etc.), sorting (sort_by, sort_order), and pagination (page, page_size).
Example: list first page of directly uploaded documents, filter by tag
id values returned by the Search API for RavenPack content; for those, use Fetch document (GET /v1/documents/{document_id}).
Download the original file: GET /contents/v1/documents//original returns a time-limited pre-signed URL. GET that URL to download the original file in its native format (e.g. .pdf, .docx).
Example: get download URL for original file, then download
Deleting a document
To permanently remove a document from the platform, call DELETE /contents/v1/documents/. This deletes the original file, the annotated version, and the chunks from the vector database. Documents uploaded withno_store are deleted automatically 24 hours after enrichment completes; you do not need to call DELETE for those unless you want them removed sooner.
Only documents in COMPLETED or FAILED status can be deleted. Attempting to delete a document that is still being enriched will raise an exception. Use Get document metadata to check status before deleting.
- Success: 200 response with a null body.
- Not found: 404 with body
{"statusCode": 404, "message": "Document not found", "errorCode": "PRIVATE_CONTENT_NOT_FOUND", "requestId": "..."}.
Next steps
- Try the how-to guide — Upload and search your content to see your uploaded content in action.
- Try the Batch file upload — Batch file upload script for uploading many files.
- Try Playgrounds — Use the Search Service or Research Agent playgrounds below; select My Files to query your documents.
Search Service Playground
Search across your private content and other sources. In the playground, open the source selector and choose My Files to limit results to your uploaded documents.
Research Agent Playground
Run research over your private content and real-time data. In the playground, use the source selector and filter by My Files to ground answers in your documents.