Slack File Storage

Permanent, API-Accessible File Storage for Slack Bots and Apps

External storage for Slack bots and integrations with global access.

Slack is a messaging surface, not a file store. On the free plan, files (and the messages they're attached to) age out after 90 days, and even on paid plans a file is bound to the message it was shared in and the workspace's retention settings. Worse for builders: a Slack file's download URL requires the bot token to fetch, isn't a clean public link, and isn't meant to be embedded elsewhere.

If your Slack app generates reports, accepts user uploads, or needs to hand someone a durable link, you want storage outside Slack. files.link gives your bot a permanent home for files plus a global CDN, with a REST API that fits naturally into an event-driven Slack app.

Two flows cover most apps. Inbound: when a user shares a file (a file_shared or message event with files), your bot downloads it from Slack's API using the bot token, then uploads it to files.link — POST /v1/files/{folderId} → PUT presigned URL → POST /v1/files/confirm-upload — and stores the returned permanent URL keyed to the user, channel, or ticket. The file now survives past Slack's retention window and is retrievable without a Slack token.

Outbound: when your bot generates an artifact (a PDF export, a chart image, a CSV), upload it to files.link first, then post the permanent CDN URL into the channel. Slack unfurls it with a preview for images and supported types, and the link keeps working in the message history, in an email, or wherever it's later referenced.

The distinction from leaning on Slack's own storage is durability and addressability: your archive doesn't evaporate on a free workspace, and every file is a stable URL you control rather than a token-gated handle. For sensitive artifacts — an exported report containing customer data — upload private and post a signed URL that expires (10-minute default) so it can't be scraped out of channel history and reused indefinitely.

Run your bot's upload calls server-side so the API key never lands in a Slack message or client. Billing is prepaid credits with no separate egress fee, so a chatty bot that serves a lot of files draws down one balance instead of generating a bandwidth bill. files.link is purely the storage and delivery layer behind your bot — your Slack app's commands, events, and Block Kit UI stay exactly as you built them.

Benefits With No Complexity

Global CDN delivery

Your files are served from 450+ edge locations worldwide.

Edge-cached worldwide

Files are cached close to your users for fast delivery.

Signed-URL security

Private files stay protected with time-limited access.

What You Get

Unlimited files

Upload as many files as you need.

Unlimited storage

There is no storage limit.

Public + Private storage

Private files are fully secured.

CDN ready links

Upload directly to 450+ edge locations worldwide.

Prepaid credits

No subscription. Pay only for the storage and bandwidth you use.

More coming soon

We have plenty of features coming!

How files.link Works

1. Upload

Create a project and upload your first file.

2. Copy

Copy the CDN link.

3. Use Anywhere

Paste and enjoy the blazing speed.

Why Developers Choose files.link

A Better Way to Store & Deliver Files

Slack Built-in FilesAmazon S3Cloudflare R2files.link
Permanent storage (no 90-day expiry)
Global CDN delivery
Clean public/permanent URLs (no token)
Simple REST API for bots
Signed URLs for sensitive exports
Prepaid credits (no egress fees)

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Slack Storage

  • Global CDN delivery
  • Edge-cached worldwide
  • Signed-URL security
  • Unlimited files
  • Unlimited storage
  • Public + Private storage
  • No subscription — prepaid credits keep spend predictable
Start Slack Storage

Frequently Asked Questions

Why not just rely on Slack's built-in file storage?
On the free plan files age out after 90 days, and on any plan a Slack file is tied to its message and needs the bot token to download — it isn't a clean, embeddable URL. For durable, externally referenceable files you store them outside Slack.
How does my bot save a file a user uploaded?
On a file_shared or message-with-files event, download the file from Slack's API using your bot token, then upload it to files.link (POST /v1/files/{folderId} → PUT presigned URL → POST /v1/files/confirm-upload) and store the returned permanent URL keyed to the user, channel, or ticket.
Can I post files.link links back into Slack?
Yes. Upload your bot's generated artifact first, then post the permanent CDN URL into the channel. Slack unfurls images and supported types with a preview, and the link keeps working in history and anywhere else it's referenced.
How do I handle exports containing customer data?
Upload them private and post a signed URL that expires (10-minute default) instead of a permanent public link, so the file can't be scraped out of channel history and reused later. Run the upload server-side so the API key never appears in a message.
General Questions
Is there a subscription?
No. files.link uses prepaid credits, so storage, bandwidth, and API usage are deducted from your balance as you go. The app explains the payment step before uploads are enabled — no monthly subscription and no per-user fees.
What is files.link?
files.link is a developer-first file platform that makes it simple to store, secure, and deliver files globally. It provides signed URLs, public/private access, and an API-first design so you can integrate file delivery into any app without the usual complexity.
How does billing work?
files.link uses prepaid credits. As you use storage, bandwidth, and API requests, credits are deducted daily. When your balance runs low, we automatically recharge it using your saved card. If an auto-recharge doesn't go through, your files and links stay put — you simply update your payment method or top up manually to keep going. No monthly subscriptions — just simple usage-based pricing.
How secure is my data?
All files are encrypted at rest and in transit. You can use signed URLs for private files, control access with permissions, and rely on enterprise-grade infrastructure for data protection.

Related

files.link
Copyright © 2026
All rights reserved
ContactGuidesGlossaryStatusLegal