# Storage & uploads
Source: https://docs.aden.space/docs/help/make-music/storage-media

How files get into and out of Aden. Signed uploads to R2/S3, presigned download URLs, media galleries, upload links for external contributors, and admin video rendering.
{/* Generated by `bun docs:publish` from docs/features/storage-media.md: edit the spec, not this file. */}

## What it is [#what-it-is]

Every file in Aden. Audio versions, cover art, album banners, media kit assets,
document attachments, and generated videos. Is stored in Cloudflare R2 (an
S3-compatible object store). Files are never served as plain public URLs;
instead, Aden hands out short-lived **presigned URLs** that expire automatically
so only authorised users can access your content.

You can also create **upload links**: shareable URLs you send to someone (a
photographer, a recording engineer, a client) so they can drop files directly
into your team, track, album, or event without needing an Aden account.

## Using it [#using-it]

**Upload files.** From a track, album, or team media gallery, drag a file or
click the upload button. The file goes straight to R2; a presigned URL is handed
back and cached so the player or viewer loads instantly.

**Play or view.** Audio and images are served via signed URLs that Aden refreshes
behind the scenes. If a URL is about to expire the player calls
`GET /api/storage/presign?key=<key>` silently to get a fresh one. Playback URL
resolution is a route handler (not a server action) on purpose: server action
ids change per deployment, so tabs open across a deploy would fail to renew.

**Delete files.** Use the delete button on any file. Audio track versions are
soft-deleted (`deleted_at` set) so history is preserved; everything else is hard-
deleted from both the database and R2.

**Create an upload link.** Go to your team settings or a track/album and choose
"Upload link". Give it a title, optional description, an optional expiry date,
and an optional use-count cap. Share the URL (at `/upload/[token]`) with your
external contributor. Files they submit land in the team's documents or media
gallery, tagged with their name.

**Manage upload links.** From the same settings area you can view existing links,
see how many times each has been used, and revoke any link immediately.

**Show media on your public profile.** In the team media gallery, use the eye
button on any uploaded photo, video, or audio file to add it to your public
profile. Public media appears in a **Media** tab on your `/@slug` page (next to
Tracks, Posts, Events, …): you can even make it the section visitors land on
first via Settings → Website → Profile homepage. Toggle the eye again to take an
item off the public page at any time; everything else in the gallery stays
private to your team.