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.3.0",
  "timestamp": "2025-01-29T12: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, XLSX, PPTX, TXT, CSV, JSON, 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"}'
ConstraintValue
Max file size100 MB
Async threshold2 MB (auto)
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

Large file uploads are processed asynchronously and return a job_id.

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

curl https://api.memvid.com/v1/jobs/{JOB_ID} \
  -H "Authorization: Bearer mv2_YOUR_KEY"
Job statuses: pending, processing, completed, failed, partial

GET /v1/jobs — List Jobs

curl "https://api.memvid.com/v1/jobs?status=processing&limit=10" \
  -H "Authorization: Bearer mv2_YOUR_KEY"

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, DOCX, XLSX, PPTX, TXT, CSV, JSON, HTML, XML, Markdown Images (OCR): PNG, JPEG, WebP, GIF, TIFF, BMP

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