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}
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.
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.