Drop & Direct Upload

Drop files; RememberOS extracts, embeds, and keeps originals downloadable. Built so one bad file never sinks a batch.

The drop zone#

rememberos.ai/drop.html — drag files or folders (folders are walked recursively), record audio in-browser, pick a collection, drop. Audio/video are transcribed, documents parsed, images captioned (see Content Types).

API: small batches#

POST /v1/memory/collections/docs/drop          (multipart, files=…)
→ 201 with per-file results and text previews

API: big batches (async)#

POST /v1/memory/collections/docs/drop          (multipart + async_ingest=true)
→ 202 {"batch_id": "…", "queued": N}

GET /v1/memory/ingest/batch/{batch_id}
→ {"total": N, "done": d, "failed": f, "complete": false}

Files are stored first and processed by the background worker — you can close the tab; poll the batch for progress.

Presigned direct-to-S3 (how the UI does >12 files)#

POST /v1/memory/collections/docs/drop/presign
[{"filename": "a.pdf", "content_type": "application/pdf", "size": 12345}, …]
→ {"uploads": [{"filename": "a.pdf", "key": "…", "url": "https://…presigned PUT…"}]}

# the browser PUTs each file straight to storage — bytes never touch the API

POST /v1/memory/collections/docs/drop/complete
[{"key": "…", "filename": "a.pdf", "mime": "application/pdf", "size": 12345}]
→ 202 {"batch_id": "…", "queued": N, "rejected": 0}

Keys are validated against your tenant's namespace on completion — you can't enqueue someone else's objects. Oversize files are flagged at presign time, not silently signed.

Failure isolation#