Paste
Paste anything.
Get a private link.
curl -fsSL https://readm3.com/install.sh | shText of any kind, a PDF or an image, behind a secret link. No account. Markdown renders as a document, code is highlighted and folds, and the link expires when you say. Only a hash of the secret is kept, so nobody can list or find it.
From the terminal, a script, or an agent
The page above is a form over one endpoint. Everything it does, these do too.
npm i -g @profullstack/readm3
# prints https://readm3.com/p/<token>
readm3 paste notes.md
# any file: the extension decides the language
readm3 paste config.json
# no name: the content is sniffed (YAML here)
kubectl get pods -o yaml | readm3 paste
# a PDF or image is shown as itself
readm3 paste spec.pdf
readm3 paste app.log --expires 1h --title crash.log
readm3 paste get https://readm3.com/p/<token> --raw
readm3 paste delete https://readm3.com/p/<token># a file from disk: its name decides the language
curl -s -F file=@app.log https://readm3.com/api/v1/pastes
# any type: logs, code, config, Markdown, a PDF or image
curl -s -F file=@spec.pdf -F expiresIn=1d \
https://readm3.com/api/v1/pastes
# or the bare bytes, with the name in the query
tail -n 500 app.log | curl -s --data-binary @- \
'https://readm3.com/api/v1/pastes?title=app.log&expiresIn=1h'
# create from JSON: any text; the language is detected,
# title and expiresIn (1h, 1d, 7d, 30d) are optional
curl -s https://readm3.com/api/v1/pastes \
-H 'content-type: application/json' \
-d '{"source":"{\"live\":true}","title":"status.json"}'
# → {"url":"https://readm3.com/p/<token>",
# "raw":"https://readm3.com/p/<token>/raw",
# "language":"json","mime":"application/json",…}
# the text itself, always text/plain
curl https://readm3.com/p/<token>/raw
# the file with its own type and name
curl -OJ 'https://readm3.com/p/<token>/raw?download=1'
# the paste as JSON: title, source, language, mime, expiresAt
curl https://readm3.com/api/v1/pastes/<token>
# gone for everyone
curl -X DELETE https://readm3.com/api/v1/pastes/<token>POST /api/v1/pastes
{ source, title?, expiresIn?, language? }
or a file: multipart (-F file=@x) or raw
bytes, options in the query string
GET /api/v1/pastes/<token> the paste as JSON
GET /api/v1/pastes/<token>/raw the text, or the bytes
of a PDF or image
DELETE /api/v1/pastes/<token> delete by link
256 KB per paste. 10 creates a minute per address.
Only the hash of the token is stored: a lost link is gone.
A PDF or image is sent as base64 with its file name.readm3 mcp # stdio server; add it to your agent
paste_create { source, title?, expiresIn?, language? }
→ url, raw, title, language, expiresAt
paste_get { url } → title, source, language, mime
paste_delete { url }