Scale
Downloads never stream through the API
A request for a file gets a redirect to a signed storage link, so a large download goes straight from storage to the client instead of through the API.
Store files of any type, serve public ones from a CDN and private ones through short-lived signed links, with size, dimensions and duration recorded for you.
Every task works three ways, and all of them change the same project. Here's one: upload a podcast episode and get its public URL.
The Anythink dashboard
Switch Public on, drag the file in, copy the link.
The Anythink CLI
files get shows the basics. fetch returns the full record, including cdn_url and duration_seconds.
$ anythink files upload episode-12.mp3 --public$ anythink files list# 87 is the id that files list shows$ anythink fetch /files/87Claude, through MCP
Ask for the upload and the details. It runs the same commands.
you › “Upload episode-12.mp3 as a public file, then tell me its duration and CDN URL once it's been probed.”
Scale
A request for a file gets a redirect to a signed storage link, so a large download goes straight from storage to the client instead of through the API.
Integrity
The content hash is computed when the file is probed, so you can spot duplicate uploads or check that a file hasn't changed.
Automation
Fetch a file from a URL and link it to a record in one workflow step, then send an email or push when it lands.
Access
Signed links are issued only to callers allowed to read files, and they expire within five minutes. Public files carry no credentials at all.
Upload, organise and serve files from the same project as your data, with access rules and media metadata handled for you.
Files go from the request straight into object storage without being buffered in memory, so a multi-gigabyte upload doesn't stall the API. Your project's storage quota is checked before the upload starts.
A background worker probes every upload and records duration, width and height, bitrate, frame rate, codecs and audio channels where they apply, plus a SHA-256 hash of the content.
Organise files into nested folders in the Anythink dashboard or through the API, and upload straight into a folder.
Public files are served from a CDN at a stable URL. Private files are only reachable through a signed storage link that expires within five minutes, issued to callers with permission to read files.
Add a file field to any entity to attach uploads to records, check uploads against the file types that field accepts, and read the linked files back through the entity API.
The File Handler workflow step downloads a file from a URL, stores it in your project and links it to a record, so imports and integrations can bring their files with them.
In practice
curl -X POST "https://api.my.anythink.cloud/org/{org_id}/files?isPublic=true&folderId=3" \ -H "Authorization: Bearer <access token>" \ -F "file=@episode-12.mp3"
How it works
Send the file to /files from the dashboard, the CLI or your app. It streams into storage, after a check against your project's storage quota.
Public files get a CDN URL. Private files stay behind your permissions and are served through signed links.
A background worker downloads the file to temporary disk, reads its media details and hash, and writes them back to the file record.
Link the file to an entity through a file field, by hand, from your app or with a File Handler workflow step.
Your app requests the file and gets a redirect to the CDN or to a short-lived signed link. The bytes never pass through the API.
Follow the guide
Upload through the dashboard or the CLI, and add file fields to your own entities.
Read the file management guide →Upload a file to /files and Anythink streams it into object storage, records its name, type and size, and queues it for probing. A background worker then adds media metadata such as duration, dimensions and a SHA-256 hash. Each file can be public or private, sit in a folder, and be linked to records through a file field.
Files are private unless you upload them as public. A private file is served through a signed storage link that expires within five minutes, and only to callers with permission to read files. Public files are served from a CDN with no credentials, and the public file endpoint returns 404 for anything private.
Yes, with a workflow. The File Handler step fetches a file from a URL, stores it in your project and links it to a record's file field. Run it for each record that holds a source URL to move files over from S3 or any HTTP location.
Yes. After an upload, a background worker runs ffprobe on the file and writes back duration, width, height, bitrate, frame rate, codecs and audio channels where they apply, plus a SHA-256 content hash. The upload returns straight away and the metadata appears shortly after.
Still have questions?
Get in TouchEvery feature reads from the same data model, so each one you add works with the rest.
The dashboard, the CLI, MCP and the SDK, plus guides for moving from other platforms.
How founders, agencies and enterprise teams use Anythink.
Uploads stream straight to storage, downloads use short-lived signed links, and any record can carry a file field.