Skip to main content
Access Memvid via HTTP REST API. All endpoints require authentication with an API key.

Base URL

https://api.memvid.com

Authentication

All protected endpoints require an API key in one of two ways: Option 1: Bearer Token
Authorization: Bearer mv2_your_api_key_here
Option 2: X-API-Key Header
X-API-Key: mv2_your_api_key_here
Memory-scoped keys restrict access to a single memory and its documents/jobs.

Health & Readiness

GET /health

Check API health status.
curl https://api.memvid.com/health
{
  "status": "healthy",
  "version": "1.4.9",
  "timestamp": "2026-03-11T12:00:00Z"
}

GET /health/ready

Check MongoDB and S3 connectivity. Returns 503 if degraded.
curl https://api.memvid.com/health/ready

Memories

A memory is a searchable container for your documents.

POST /v1/memories — Create

curl -X POST https://api.memvid.com/v1/memories \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Research Papers",
    "description": "ML papers from 2024"
  }'
FieldTypeRequiredDescription
namestringYes1-1000 characters
descriptionstringNoUp to 5000 characters
projectIdstringNoAssign to existing project
projectNamestringNoAuto-create project if needed

GET /v1/memories — List All

curl https://api.memvid.com/v1/memories \
  -H "Authorization: Bearer mv2_YOUR_KEY"

GET /v1/memories/:id — Get One

curl https://api.memvid.com/v1/memories/{MEMORY_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"

DELETE /v1/memories/:id — Delete

Deletes the memory, all its documents, and its .mv2 file from S3.
curl -X DELETE https://api.memvid.com/v1/memories/{MEMORY_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"
Returns 204 No Content on success.

Documents

POST /v1/memories/:id/documents — Add Documents

Option A: Upload a file Supports PDF, DOCX, DOC, XLSX, PPTX, PPT, TXT, CSV, TSV, LOG, JSON, JSONL/NDJSON, HTML, XML, Markdown.
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/documents \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -F "file=@./report.pdf"
Option B: JSON text
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/documents \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "documents": [
      {
        "title": "Meeting Notes",
        "text": "We decided on React for the frontend and Postgres for the database.",
        "tags": ["meeting", "architecture"]
      }
    ]
  }'
Option C: Ingest from URL
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/documents \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/report.pdf"}'
Ingestion options: Pass these in an options object alongside documents or url:
OptionTypeDefaultDescription
asyncboolfalseForce async processing via background worker
deduplicateboolfalseSkip documents with similar content
enableOcrbooltrueAuto-OCR scanned/image-only PDF pages using vision AI
ocrMaxPagesint50Max pages to OCR per document (max 200)
storeSourceboolfalseStore original file in S3 for later retrieval
embeddingModelstringtext-embedding-3-smallEmbedding model (pinned on first ingest)
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/documents \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -F "file=@./scanned-contract.pdf" \
  -F 'options={"enableOcr": true, "ocrMaxPages": 100}'
Response codes:
CodeMeaning
200Document processed synchronously. Ready to search.
202Document routed to async worker. Response includes jobId and pollUrl.
Scanned PDFs: PDFs containing scanned images are automatically detected and processed with OCR. Small scanned PDFs (5 or fewer image pages) are handled synchronously. Larger scanned PDFs are automatically routed to the background worker and return 202 — poll the jobId to track progress.
ConstraintValue
Max file size100 MB
Async threshold2 MB (auto)
Scanned PDF async threshold5+ image-only pages
Max URL download100 MB

GET /v1/memories/:id/documents — List Documents

curl https://api.memvid.com/v1/memories/{MEMORY_ID}/documents \
  -H "Authorization: Bearer mv2_YOUR_KEY"

DELETE /v1/memories/:id/documents/:doc_id — Delete One

curl -X DELETE \
  https://api.memvid.com/v1/memories/{MEMORY_ID}/documents/{DOC_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"
Returns 204 No Content.

POST /v1/memories/:id/find — Hybrid Search

Semantic + keyword hybrid search with reranking.
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/find \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "what database are we using",
    "topK": 5
  }'
FieldTypeDefaultDescription
querystringrequiredSearch query
topKint10Number of results
options.modestringauto"hybrid", "semantic", "lexical", or "auto"
options.limitint10Number of results
options.highlightboolfalseWrap matches in <mark> tags

POST /v1/memories/:id/search — Simple Search

Simplified search with sensible defaults.
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/search \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "database choice", "limit": 3}'

Ask (RAG)

POST /v1/memories/:id/ask — Ask a Question

Retrieval-augmented generation: searches your memory and generates an answer with sources.
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/ask \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "What tech stack did we decide on?",
    "options": {
      "model": "gpt-4o-mini",
      "maxContextChunks": 15,
      "includeSources": true
    }
  }'
FieldTypeDefaultDescription
questionstringrequiredYour question
options.modelstring"gpt-4"LLM model ID
options.maxContextChunksint10Max chunks fed to the LLM
options.includeSourcesboolfalseReturn source documents

POST /v1/ask-once — One-Shot Q&A (No Memory)

Ask a question on content you provide directly. Nothing is persisted.
curl -X POST https://api.memvid.com/v1/ask-once \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "question": "Summarize this",
    "content": "Your raw text here...",
    "model": "gpt-4o-mini"
  }'

Structured Extraction

POST /v1/memories/:id/extract — Extract Structured Data

Pull structured fields from your documents using a schema you define.
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/extract \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "sections": [
      {
        "id": "parties",
        "name": "Contract Parties",
        "fields": [
          {"key": "buyer", "label": "Buyer Name"},
          {"key": "seller", "label": "Seller Name"},
          {"key": "effective_date", "label": "Effective Date", "data_type": "date"}
        ]
      }
    ],
    "context": "This is a commercial real estate lease agreement"
  }'
FieldTypeRequiredDescription
sectionsarrayYesAt least one section
sections[].idstringYesUnique section identifier
sections[].namestringYesDisplay name
sections[].fields[].keystringYesField identifier
sections[].fields[].labelstringYesUsed as the search query
sections[].fields[].data_typestringNoType hint (e.g. "date", "currency")

OCR (Image-to-Text)

POST /v1/memories/:id/ocr — OCR & Auto-Ingest

Extract text from images using vision LLMs, then auto-ingest the result into the memory. Option A: Multipart file upload
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/ocr \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -F "file=@./screenshot.png" \
  -F "mode=fast"
Option B: JSON with base64
curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/ocr \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "imageBase64": "/9j/4AAQ...",
    "options": {
      "mode": "accurate",
      "languageHints": ["en", "es"]
    }
  }'
LimitValue
Max image file size20 MB
Max base64 payload27 MB
Supported formatsPNG, JPEG, WebP, GIF, TIFF, BMP

Projects

Projects group memories together.

POST /v1/projects — Create

curl -X POST https://api.memvid.com/v1/projects \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Q1 Research"}'

GET /v1/projects — List All

curl https://api.memvid.com/v1/projects \
  -H "Authorization: Bearer mv2_YOUR_KEY"

GET /v1/projects/:id — Get One

curl https://api.memvid.com/v1/projects/{PROJECT_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"

PUT /v1/projects/:id — Update

curl -X PUT https://api.memvid.com/v1/projects/{PROJECT_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Q2 Research"}'

DELETE /v1/projects/:id — Delete

curl -X DELETE https://api.memvid.com/v1/projects/{PROJECT_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"

Account

GET /v1/account — Account Info & Usage

Returns your organization details, plan limits, and current usage.
curl https://api.memvid.com/v1/account \
  -H "Authorization: Bearer mv2_YOUR_KEY"

Jobs

Documents that exceed the sync processing threshold are handled by a background worker. The add documents endpoint returns 202 with a jobId you can poll. What triggers async processing:
  • Files larger than 2 MB
  • Scanned PDFs with more than 5 image-only pages (OCR required)
  • Explicit options.async: true

GET /v1/jobs/:id — Check Job Status

curl https://api.memvid.com/v1/jobs/{JOB_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"
{
  "id": "69b17fa2dacb7d03814fb49b",
  "memoryId": "69b03bb1a62c98d88403ceca",
  "jobType": "documentingestion",
  "status": "completed",
  "progress": 100,
  "message": "Finalizing...",
  "result": {
    "documentsAdded": 1,
    "chunksCreated": 74,
    "documentIds": ["69b180c9b225e959e6b1b0a1"],
    "totalBytes": 1318799,
    "processingMs": 295779
  },
  "createdAt": "2026-03-11T14:43:46.602Z",
  "startedAt": "2026-03-11T14:43:46.616Z",
  "completedAt": "2026-03-11T14:48:42.408Z"
}
Job statuses: pendingprocessingcompleted, failed, or partial
FieldDescription
statusCurrent job state
progress0–100 percentage
messageHuman-readable progress description
resultPresent when completed — includes document IDs and chunk count
errorPresent when failed — error description
isPartialtrue if job completed with partial results (e.g. quota reached)
Poll every 5–10 seconds. Scanned PDFs typically take 2–8 minutes depending on page count. Text-only large files usually finish in under a minute.

GET /v1/jobs — List Jobs

curl "https://api.memvid.com/v1/jobs?status=processing&limit=10" \
  -H "Authorization: Bearer mv2_YOUR_KEY"
Query ParameterTypeDefaultDescription
statusstringFilter by status (pending, processing, completed, failed)
memoryIdstringFilter by memory
limitint20Max results (1–100)

Corrections

Store priority-boosted corrections that surface first in search results.

POST /v1/memories/:id/correct — Add Single Correction

curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/correct \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "statement": "The capital of France is Paris, not London.",
    "topics": ["geography", "France"],
    "boost": 2.0
  }'

POST /v1/memories/:id/corrections — Add Multiple Corrections

curl -X POST https://api.memvid.com/v1/memories/{MEMORY_ID}/corrections \
  -H "Authorization: Bearer mv2_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "corrections": [
      {
        "statement": "Water boils at 100°C at sea level.",
        "topics": ["science", "physics"]
      }
    ]
  }'

Endpoints Summary

MethodEndpointDescription
GET/healthHealth check
GET/health/readyReadiness check
GET/v1/accountAccount info, usage, limits
POST/v1/memoriesCreate a memory
GET/v1/memoriesList memories
GET/v1/memories/:idGet memory details
DELETE/v1/memories/:idDelete memory
POST/v1/memories/:id/documentsAdd documents
GET/v1/memories/:id/documentsList documents
DELETE/v1/memories/:id/documents/:doc_idDelete one document
POST/v1/memories/:id/findHybrid search
POST/v1/memories/:id/searchSimple search
POST/v1/memories/:id/askRAG question answering
POST/v1/ask-onceOne-shot Q&A (no memory)
POST/v1/memories/:id/extractStructured data extraction
POST/v1/memories/:id/ocrOCR & auto-ingest
POST/v1/memories/:id/correctAdd single correction
POST/v1/memories/:id/correctionsAdd multiple corrections
GET/v1/jobs/:idCheck async job status
GET/v1/jobsList jobs
POST/v1/projectsCreate project
GET/v1/projectsList projects
GET/v1/projects/:idGet project
PUT/v1/projects/:idUpdate project
DELETE/v1/projects/:idDelete project

Supported File Types

Documents: PDF (including scanned), DOCX, DOC, XLSX, PPTX, PPT, TXT, CSV, TSV, LOG, JSON, JSONL/NDJSON, HTML, XML, Markdown Images (OCR endpoint): PNG, JPEG, WebP, GIF, TIFF, BMP
Scanned PDFs are automatically detected and processed with OCR — no special configuration needed. Legacy formats (.doc, .ppt) are converted through the same pipeline as their modern counterparts.

Limits

LimitFree PlanStarter Plan
Storage50 MB25 GB
Memories15
QueriesUnlimited250,000/month
Max file size100 MB100 MB
Max image size (OCR)20 MB20 MB
Request timeout5 minutes10 minutes
Request body limit150 MB150 MB

Next Steps