Binary content — images, PDFs, audio, video, arbitrary files — lives outside the item row. Items reference blobs by content hash; the bytes live in a pluggable backend.Documentation Index
Fetch the complete documentation index at: https://docs.myme.so/llms.txt
Use this file to discover all available pages before exploring further.
Content addressing
Every blob is identified by a SHA-256 hash of its bytes, serialised assha256:<hex>. The same bytes always produce the same hash; storage deduplicates naturally. Two items carrying identical content share a single stored copy.
An item references blobs in two places:
- Primary blob — file types (
core.file,core.file.image,core.file.audio,core.file.video) require ablob_refon theirproperties. The item is the binary. - Attachments — every item has an
attachments[]array for secondary artefacts (a transcript on a video, a thumbnail, a readable HTML rendering of a bookmark). Each entry carriesblob_ref,mime_type, optionaltitle, and an optionalrole. See Items — attachments.
Backends
Two storage backends, selected viaBLOB_BACKEND:
filesystem— blobs land underBLOB_PATHon local disk. Suitable for single-host self-hosts and development.s3— blobs land in an S3-compatible bucket. Required for horizontally-scaled deployments. Works with AWS S3, MinIO, Cloudflare R2, and other S3-compatible services viaS3_ENDPOINT.
Upload and download
Full request shapes are in the Blobs API reference. The flow:- Upload bytes via
POST /blobs(multipart or raw octet-stream). Response carries thehash. - Write an item whose
propertiesorattachments[]reference thathash. - Read back via
GET /blobs/{hash}or follow the URL returned by the SDK’sblobs.url(hash)helper.
HEAD /blobs/{hash} checks existence cheaply.
CDN rewrites
SettingCDN_BASE_URL rewrites blob URLs in API responses to a public CDN prefix — useful for serving images and other static assets without proxying them through the server. The SDK’s blobs.url(hash) helper honours this automatically.
Presigned URLs
S3 backends supportGET /blobs/{hash}/url, which returns a time-limited presigned download URL (ttl query parameter, seconds; default 3600). Filesystem backends don’t — the endpoint responds with 400 when called against a non-S3 backend.
Lifecycle
Blobs outlive the items that reference them by default — the content-addressed model assumes reuse. Two admin-only jobs reconcile:POST /blobs/cleanup— removes blobs that no item references (including in trash). Supportsdry_run.POST /blobs/reconcile— compares the storage backend against the database, surfacing orphans in both directions.
MAX_BLOB_SIZE (default 50 MB). Uploads beyond the limit return 413 blob_too_large.