Skip to main content
Document routes enforce record authorization, but the current REST responses return the authorized document directly. They do not apply the MCP document helper’s separate raw-text redaction. Treat permission to these REST reads as permission to the returned text and metadata. See security. Response examples are abbreviated to highlight relevant fields; they are not complete write request bodies. Use the normalized ingest route for new evidence.

Endpoints


Search Documents

POST /v1/docs/search Search documents using text matching or vector similarity. When a query is provided with k, the endpoint performs semantic vector search against document chunk embeddings.
string
Free-text search query. Used for both keyword and vector similarity search.
integer
Number of top-k similarity results for vector search. When set, enables semantic search mode.
boolean
default:"false"
Include soft-deleted documents in results.
integer
default:"50"
Maximum results to return.
string
Pagination cursor from a previous response.

Ingest Document

POST /v1/docs/ingest Ingest a new document into the processing pipeline. Meerkat Recall stages a source-backed document and enqueues source-first work so the pipeline can triage, render, chunk, embed, and extract knowledge from it.
string
required
Document title.
string
Document text content or sidecar text for media-backed ingest. Required unless media is present.
object[]
Optional typed image/video inputs. Each item must include kind, media_type, and exactly one of inline_base64, path, or uri.
object
Arbitrary metadata (e.g., {"collection": "notes", "tags": ["security"]}).
string
Optional collection override for organizing documents.
string
Optional rendition label used in source/document processing. Normalized requests generate fresh document/source IDs; repeating this key alone does not guarantee that retried HTTP submissions deduplicate.
boolean
default:"false"
Must be omitted or false. true is rejected; use the asynchronous work item flow.

Batch Documents

POST /v1/docs/batch Create or update multiple documents in a single request. Each document is staged into the source-first pipeline for triage, rendering, chunking, embedding, and extraction.
object[]
required
Array of normalized document ingest inputs. Each item uses the same public fields as POST /v1/docs/ingest.
boolean
default:"false"
Accepted by the shared request schema but not implemented as a transaction. Items can succeed or fail independently; do not rely on rollback.

Get Collections

GET /v1/docs/collections Returns a list of distinct document collection names within the caller’s space.

Get Document

GET /v1/docs/{id} Retrieve a single document by its ID.
string
required
Document record ID (e.g., doc:3fa85f64-...).
boolean
default:"false"
If true, return even if the document was soft-deleted.

Update Document

PUT /v1/docs/{id} Replace a document’s fields. The document must exist and the caller must have write authorization.
string
required
Document record ID.

Delete Document

DELETE /v1/docs/{id}
Soft deletes the document. The record remains in the database with a deleted_at timestamp. Use the restore endpoint to undo.
Returns 204 No Content on success.
string
required
Document record ID.

Restore Document

POST /v1/docs/{id}/restore Restore a soft-deleted document.
string
required
Document record ID.

Get Document Chunks

GET /v1/docs/{id}/chunks Returns structural nodes for the document’s selected revision. revision identifies immutable evidence; span.start and span.end are UTF-8 byte offsets into that revision. A node’s text is optional, commonly used for summaries, so do not assume every node includes its excerpt inline. The example below omits common record fields.
string
required
Document record ID.

Get Document Pipeline Status

GET /v1/docs/{id}/pipeline-status Returns the processing status of a document across the active document pipeline: rendering, doc-tree construction, embedding, extraction, and staged artifact validation/commit.
string
required
Document record ID.
Counts above are illustrative. revision is omitted until a current revision exists. The optional extraction_guidance object describes how the purpose and extraction skill were resolved. Embedding progress is independent of the extraction state: compare chunks.embedded with chunks.total.

Extraction state

extraction_state summarizes relevant work for the document and its current revision. When work items have different states, failed takes precedence over running, which takes precedence over pending. The response does not include individual work items. Use the work queue for stage details. Neither a completed state nor an assertion count proves that the extracted claims are true.