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
| Parameter | Type | Description |
|---|---|---|
filename | string | Required. The original filename with its extension, e.g. report.pdf. |
content_base64 | string | Required. The file’s bytes, base64-encoded. |
description | string | Optional note stored with the upload request. |
node_key | string | Optional graph node to link the file to. Generated when omitted. |
Size limits
| Limit | Value |
|---|---|
| MCP request body | 64 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
| Field | Description |
|---|---|
file_id | The file’s id. Use it with hm_tabular for spreadsheets. |
size_bytes | Size of the stored file. |
job_id | The processing job. |
processing_status | Starts as queued. Processing is durable and runs in the background; follow it with hm_list_files. |
replayed | true when the same upload had already been accepted. |
Example
{
"filename": "architecture-notes.md",
"content_base64": "IyBBcmNoaXRlY3R1cmUgTm90ZXMKCi4uLg==",
"description": "Architecture notes from the October design review"
}