← all help
UPLOAD a file (raw body or multipart):
   POST https://skale.dev/throway/?name=filename.ext
   with the file bytes as the body.
   -> Returns JSON: id, url, size, name, content_type, expires_in, expires_at.

LIFETIME (optional):
   POST https://skale.dev/throway/?name=x.txt&ttl=24h
   -> default is 4h; &ttl=<h|d> extends a single file, clamped to
      [4h, 14d] (MAX 14 days).

SHARE NAME (optional):
   POST https://skale.dev/throway/?share=my-note
   -> store the upload under a chosen, memorable name (create-or-get, like a
      named dir) at /d/my-note, instead of a random hex id. Rules: 5-32 chars
      [a-z0-9-], >=1 letter, not a reserved word. Sliding lifetime (default
      7d, &ttl= clamped [4h,14d]).

DOWNLOAD ONCE (optional, single files only):
   POST https://skale.dev/throway/?once=1
   -> burn-after-reading: the file auto-deletes after the first download.
      A second GET returns 404. Not combinable with &share= (dirs).

TAGS on uploads/imports (filter+sort later):
   POST https://skale.dev/throway/?name=x.pdf&tag=papers&tag=2026
   -> up to 5 tags per file ([a-z0-9-], 1-24 chars); returned in the JSON.
   Update later:  POST https://skale.dev/throway/<id>?tag=a&untag=b
   Browse/filter: GET  https://skale.dev/throway/browse?tag=papers&q=&sort=created&order=desc
   (sort: created | name | size | expires)

IMPORT FROM A URL (server-side fetch):
   POST https://skale.dev/throway/?url=<encoded-url>[&name=<filename>]
   -> server downloads the document and stores it like a normal upload.
   Max 5MB; private/loopback hosts are blocked.

STORE A URL AS A DOCUMENT (link doc):
   POST https://skale.dev/throway/?url=<encoded-url>&link=1[&name=<name>]
   -> stores a tiny editable HTML redirect page for that URL.
agent hint — this page is machine-readable
curl -A curl https://skale.dev/throway/help/files             # this topic as plain text