Files

hm_upload_file

Upload a document, spreadsheet or image and turn it into memory

hm_upload_file stores a file and queues it for processing. HyperMemory extracts its text (or, for spreadsheets, its sheets and regions), summarizes it, and links it into your graph as a document node that other memories can point to.

Every plan can upload files. Each upload counts against your plan’s monthly document allowance — 5 on Free, 25 on Basic, 40 on Pro, 120 on Business. Free stops at its allowance; paid plans continue as overage at $0.32 per document. See Plans.

Parameters

ParameterTypeDescription
filenamestringRequired. The original filename with its extension, e.g. report.pdf.
content_base64stringRequired. The file’s bytes, base64-encoded.
descriptionstringOptional note stored with the upload request.
node_keystringOptional graph node to link the file to. Generated when omitted.

Size limits

LimitValue
MCP request body64 MiB, so about 47 MiB of file data after base64 encoding
Documents (PDF, Word, PowerPoint, Excel, text, Markdown, CSV)50 MiB
Images (PNG, JPEG, GIF, WebP)20 MiB
Audio (MP3, WAV, OGG, M4A)100 MiB
Video (MP4, WebM, MOV)Upload from the dashboard

For files larger than MCP allows, use the Files page in the dashboard.

Response

FieldDescription
file_idThe file’s id. Use it with hm_tabular for spreadsheets.
size_bytesSize of the stored file.
job_idThe processing job.
processing_statusStarts as queued. Processing is durable and runs in the background; follow it with hm_list_files.
replayedtrue when the same upload had already been accepted.

Example

{
  "filename": "architecture-notes.md",
  "content_base64": "IyBBcmNoaXRlY3R1cmUgTm90ZXMKCi4uLg==",
  "description": "Architecture notes from the October design review"
}

Equivalents

curl -X POST https://api.hypermemory.io/api/v1/memory/upload-file \
  -H "Authorization: Bearer $HYPERMEMORY_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{\"filename\":\"notes.md\",\"content_base64\":\"$(base64 < notes.md)\"}"