Retool S3 Uploader & File Storage

Retool File Uploads to S3-Style Storage Without the IAM Setup

Store and manage files from your Retool internal tools.

Retool S3 uploader & file storage

Retool does ship a built-in file store — Retool Storage — but it's capped at roughly 5 GB per organization and 40 MB per file, and the bytes stay locked inside Retool with no permanent global-CDN URL you can embed in an email, a public page, or another app. So the moment you outgrow those caps or need a real shareable link, the textbook workaround is a Retool S3 uploader: stand up an S3 bucket, write an IAM policy, generate access keys, configure CORS for the Retool domain, and build signed-URL generation in a backend, which is easily a half-day of plumbing for what should be a one-line upload. files.link sits between those two options — when you outgrow Retool Storage's 5 GB/40 MB caps or need a permanent global-CDN URL, it's a drop-in S3 alternative for Retool internal tools: one REST API resource, a single query to upload, and a permanent CDN URL returned in the response, with no AWS console anywhere in the loop.

Concretely: add a REST API resource in Retool with base URL https://api.files.link and your API key in the Authorization header (raw key, no Bearer prefix). From a JavaScript query, take the file from {{ fileInput1.value[0] }} and run the upload flow — POST /v1/files/{folderId} to get a presigned URL and id, PUT the bytes to that URL, then POST /v1/files/confirm-upload with the id.

The response gives you a permanent CDN URL; write it back to your database with a SQL query, or display it immediately in an Image, PDF, Video, or Download component. Because the URL is permanent and edge-served, dashboards with dozens of embedded files stay fast and don't depend on regenerating short-lived links on every render.

Here's the entire upload as a single Retool JS query — bind it to your File Input's upload button, and it returns a permanent CDN URL you can write to your database or drop straight into an Image, PDF, or Download component:

js
// Retool JS query: upload fileInput1's file to files.link, return its permanent CDN URL.
const API = 'https://api.files.link/v1';
const API_KEY = '<YOUR_API_KEY>'; // store this in a Retool config variable, don't hardcode it
const FOLDER_ID = '<YOUR_FOLDER_ID>';
const file = fileInput1.files[0]; // the raw File object from the File Input component

// 1. Ask files.link for a presigned PUT URL and a file id
const { urls } = await (
  await fetch(`${API}/files/${FOLDER_ID}`, {
    method: 'POST',
    headers: { Authorization: API_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ filesMetadata: [{ name: file.name, size: file.size, type: file.type }] }),
  })
).json();
const { url, id, key } = urls[0];

// 2. PUT the bytes straight to storage (no auth header — the signature is in the URL)
await fetch(url, { method: 'PUT', headers: { 'Content-Type': file.type }, body: file });

// 3. Confirm the upload so the file goes live
await fetch(`${API}/files/confirm-upload`, {
  method: 'POST',
  headers: { Authorization: API_KEY, 'Content-Type': 'application/json' },
  body: JSON.stringify({ ids: [id] }),
});

// Permanent CDN URL — write it to your DB or bind it to an Image / PDF / Download component
return `https://cdn.files.link/${key}`;

This fits the internal-tools use cases Retool is built for: an ops team uploading vendor invoices, a support tool attaching screenshots to tickets, an admin panel managing product imagery, or a review queue where staff open user-submitted documents. For anything sensitive, upload private and mint a signed URL on demand instead of exposing a public path — useful when an internal tool surfaces customer documents that shouldn't be world-readable.

The contrast with native Retool + S3 is mostly setup and ongoing maintenance: no bucket policy to get wrong, no IAM key to rotate, no CORS error to debug at 5pm. Billing is prepaid credits with predictable per-GB pricing and no separate egress charge, so a tool that suddenly serves a lot of files doesn't generate a surprise bandwidth invoice. files.link is purely the storage backend — your Retool queries, resources, and app logic stay exactly as they are.

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

Native Retool + S3Retool StorageCloudflare R2files.link
Drop-in REST resource (no SDK)
Permanent CDN URLs returned
Global CDN delivery
No 5 GB org / 40 MB file cap
No IAM / CORS / bucket policy
Signed URLs for private files
Pay-as-you-go (prepaid credits)

Calculate Your Needs

Storage

0GB

Egress

0GB

CDN Bandwidth

0GB
Total: $0.000/month

Start Retool 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 Retool Storage

Frequently Asked Questions

How do I upload from Retool to S3-style storage without configuring AWS?
Add a REST API resource pointed at https://api.files.link with your API key in the Authorization header. In a JS query, take {{ fileInput1.value[0] }} and run POST /v1/files/{folderId} → PUT presigned URL → POST /v1/files/confirm-upload. The response's permanent CDN URL can be written to your DB or shown in a component — no bucket, IAM, or CORS needed.
What's the difference versus Retool's native S3 integration?
Retool's S3 resource only works after you create a bucket, write an IAM policy, generate keys, set CORS, and build signed-URL logic. files.link skips all of that — it's one REST resource that returns the CDN URL ready to embed in Image, PDF, or Download components.
Does Retool have built-in file storage?
Yes — Retool Storage. It's a built-in store, but it's capped at roughly 5 GB per organization and 40 MB per file, and files stay locked inside Retool with no permanent global-CDN URL you can embed elsewhere. files.link is the option for when you outgrow those caps or need an edge-served public or signed URL to use outside Retool.
How do I keep internal-tool files private?
Upload them private and mint a short-lived signed URL on demand from your query, rather than exposing a public path — useful when a tool surfaces customer documents that shouldn't be world-readable.
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