Skip to main content
Square Cloud Blob Storage service overview

Why choose Square Cloud Blob Storage?

As the largest bot hosting platform in Latin America, trusted by 80 of the 100 largest Brazilian Discord servers, we built Blob Storage to solve a problem our own community kept hitting: Discord’s CDN was never meant to be a storage backend, and links break, expire or get rate-limited. Blob Storage replaces that with an object store designed for durability. The design is simple on purpose: S3-compatible object storage is the source of truth for your files, and a global CDN delivers them from the edge. You get the 11-nines durability of an S3 design with the read latency of a global cache, and every plan includes generous storage.

Key features

No transfer fees

Zero ingress and egress fees. Upload and serve as much as you need: you pay for storage, never for bandwidth.

Global CDN

Public files are served from a global CDN, at the edge, close to your users wherever they are.

Private files

Store files without a public URL and hand them out through temporary links or share links. Switch any file between public and private at any time.

Share links

Links that expire, can be revoked, cap the number of downloads and, on Pro and Enterprise, ask for a password.

S3-compatible

Use aws-cli, boto3, rclone or any AWS SDK through the S3 gateway, with credentials derived from your API key.

Browser uploads

Your server mints an upload token and the browser uploads directly, without ever seeing your API key.

Rules per prefix

Set defaults (visibility, expiry, cache), limits (size, file types) and automatic deletion after N days for everything under a prefix with account settings.

Server-side operations

Copy, move and rename files without downloading them, and change headers (cache, disposition, metadata) in place.

How it works

Files come in through the REST API, the browser (with an upload token) or any S3 tool. Each file is either public or private, and goes out through a public URL, a temporary link or a share link.

Storage and pricing

Storage comes with your plan, and there are no transfer fees: you only ever pay for what stays stored above the quota.

Included storage

Every plan includes storage at no extra cost, and it grows with the plan:

Reaching your quota

When your usage reaches the included quota, new uploads are refused with STORAGE_QUOTA_EXCEEDED until you free space or upgrade your plan. Everything already stored keeps being served normally. Storage held above the quota (for example after a plan downgrade) is priced at:

Storage above the quota

R$ 0.20 per started GiB beyond your included quota.
Account Stats reports your current usage, this month’s average and the estimated cost of any storage held beyond the quota.
Blob Storage is only available with an active plan. An account without an active plan can still list, download, delete and make files private. When a plan expires or is canceled, stored files enter a deletion queue, so renew as soon as possible: files already deleted can’t be recovered.

Features by plan

Every plan gets the full API: public and private files, temporary links, share links, the S3 gateway, upload tokens and rules per prefix. A few options depend on the plan, and all of them answer the same 403 UPGRADE_REQUIRED code, with a message naming the plan (or the limit) that applies:

Public and private files

Every object is either public or private, and its id says which: pub/<user_id>/<path> or prv/<user_id>/<path>.
  • Public files have a permanent CDN URL: https://blob.squarecloud.dev/pub/<user_id>/<path>.
  • Private files have no public URL (url is null). You read them through a temporary link, a share link, the API or the S3 gateway.
  • Legacy files, uploaded before the September 2026 update, keep their original id <user_id>/<path>, and every route accepts it. Their original URL on https://public-blob.squarecloud.dev/<user_id>/<path> keeps working for 30 days, until October 25, 2026: move them with Object Copy (move: true) to get a URL on blob.squarecloud.dev.
Read Links and sharing for how publishing, unpublishing and the different kinds of links behave.

Supported file types

Practically any file type is accepted, including formats with no registered MIME type: .bam, .vcf, .fasta, .fastq, .parquet, .h5, .npy and so on. The stored extension comes from the filename you upload, and compound compression suffixes are preserved (reads.fastq.gz stays .fastq.gz). The only exception is a denylist of executables and installers (.exe, .msi, .bat, .apk and similar), refused with BLOCKED_FILE_TYPE.
Serving is safe by design: the served Content-Type is derived server-side, never from the client. Unknown formats and browser-renderable types (.html, .svg, .xml) are always served as downloads (application/octet-stream), so malicious uploads never render in the browser.

Performance and durability

Blob Storage went through extensive benchmarks before launch. Key findings:
  • Latency: files are received in ~11 ms on average.
  • Durability: designed for 99.999999999% (11 nines).
  • Edge delivery: public files are cached at the CDN edge, so repeated reads never travel back to the origin.
  • Health check: https://blob.squarecloud.dev/pub/status answers OK and is never cached, so you can point your monitoring at it.
Blob Storage global latency benchmark
Note: Benchmark results come from controlled tests and vary with geographic location, file size, network quality and peak usage. For the most accurate numbers, test from your production environment.
Regional Limitations: Users in Africa and some Asian regions may see higher latencies due to physical distance from data centers and local network infrastructure.

How to host your files

1

Get an API key

Create an API key with the blob:write scope in your account settings. See Authentication.
2

Upload

Send files up to 100 MB to Object Post. Larger files, up to 10 GiB, go through the chunked upload flow. Prefer S3 tools? Point them at the S3 gateway instead.
3

Serve

Use the url from the response for public files, or create a temporary link or a share link for private ones.
For a first upload and download with curl, follow the Blob Storage API quickstart.
Using JavaScript? The Blob SDK (@squarecloud/blob) handles simple and multipart uploads, links, shares, rules and the S3 gateway for you, on Node.js and in the browser.

Frequently asked questions

Blob Storage is available on any plan, Hobby and up, each with its own included storage quota (see the table above). See Plans and Pricing for the full comparison.
New uploads are refused with STORAGE_QUOTA_EXCEEDED until you delete objects or upgrade your plan. Everything already stored keeps being served normally. Storage held above the quota (for example after a downgrade) is priced at R$ 0.20 per started GiB, and Account Stats shows the estimate at any time.
Yes. The S3 gateway at https://s3-blob.squarecloud.app works with aws-cli, boto3, rclone and the AWS SDKs. Get the access key pair from S3 Credentials: it is derived from your API key, so revoking the key revokes the pair.
Every plan gets rules per prefix (5 on Hobby and Standard, 10 on Pro, 20 on Enterprise). Custom metadata and password-protected share links need Pro or Enterprise. Expiries and automatic deletion under 7 days, and files served without edge cache, need Enterprise. Outside those plans the request is refused with 403 UPGRADE_REQUIRED, and its message names the plan that unlocks the feature.
For 30 days. Legacy files, uploaded before the September 2026 update, keep their URL on public-blob.squarecloud.dev until October 25, 2026, and their id <user_id>/<path> keeps working on every route. To keep a public link after that, move the file with Object Copy (move: true): new files are served from blob.squarecloud.dev/pub/..., and their id starts with pub/ or prv/.