Overview
Room for everything you build.
Upsky Storage gives your apps private buckets that speak the S3 API, so any S3 client or SDK works with them. Downloads are always free.
Get started
- In the dashboard, open Storage and create a bucket. Every team gets one 10 GB bucket for free.
- Open the bucket and create an access key. Copy the Access Key ID and the Secret Access Key: the secret is shown only once.
- Click Connect on the Storage page to copy the endpoint. The region is
always
auto.
Each access key reaches one bucket only. Make one per app or environment, so you can delete one without breaking the others.
Connect a client
import { S3Client } from "@aws-sdk/client-s3"
const storage = new S3Client({
region: "auto",
endpoint: process.env.UPSKY_STORAGE_ENDPOINT,
credentials: {
accessKeyId: process.env.UPSKY_STORAGE_ACCESS_KEY_ID,
secretAccessKey: process.env.UPSKY_STORAGE_SECRET_ACCESS_KEY,
},
})Use the bucket name shown on the bucket's page, which starts with upsky-, as
Bucket in every request.
Upload a file
import { PutObjectCommand } from "@aws-sdk/client-s3"
await storage.send(
new PutObjectCommand({
Bucket: process.env.UPSKY_STORAGE_BUCKET,
Key: "reports/2026/report.pdf",
Body: file,
ContentType: "application/pdf",
})
)A / in the key works like a folder, and the dashboard's file browser shows it
as one.
Share a file
Buckets are private. To let a browser download or upload a file directly, sign a short-lived URL on your server:
import { GetObjectCommand } from "@aws-sdk/client-s3"
import { getSignedUrl } from "@aws-sdk/s3-request-presigner"
const url = await getSignedUrl(
storage,
new GetObjectCommand({
Bucket: process.env.UPSKY_STORAGE_BUCKET,
Key: "reports/2026/report.pdf",
}),
{ expiresIn: 300 }
)Sizes and usage
Each size includes a number of writes and reads every month. Writes are requests that change or list the bucket, such as uploads; reads are requests that fetch, such as downloads. Deletes are free.
Writes and reads beyond the allowance are paid from your credits. If they can't be paid, new uploads pause until you add credits, and reads keep working. A full bucket also pauses uploads until you delete files or move to a larger size.
See pricing for the current sizes and prices.