Bytescale Now Supports Any S3-Compatible API for External Storage

Lawrence Wagerfield

We’re excited to announce Bytescale now supports any S3‑compatible API for use as external storage. That means whether you’re running MinIO on‑prem, a self‑hosted Ceph cluster, or any other storage service with an S3‑compatible API, you can now plug it straight into Bytescale.

What’s new?

With this update, your team can:

  • Plug in any S3‑compatible endpoint either manually via the Bytescale Dashboard or programmatically via the PutFolder API operation.
  • Seamlessly integrates with every part of Bytescale, including our File Processing APIs, Storage APIs, CDN, SDKs, and widgets.
  • Customizable object keys via settings like customizable object key prefixes and relative vs. absolute path resolution, built to fit your infrastructure needs.

Why you’ll love it

  • Freedom to choose – Use any S3‑compatible storage service—self‑hosted, cloud‑hosted, or anything in between.
  • Compliance & budget friendly – Select a storage provider that aligns with your data residency, regulatory, or cost requirements
  • Full feature parity – Benefit from the same high‑performance media processing APIs and media-optimized CDN provided by Bytescale, even with files stored externally.
  • Highly configurable – Fine‑tune object key structures, control how S3 URLs are resolved (subdomain vs. path-style), and specify unsupported operations to prevent Bytescale from using them—ensuring reliable integration with any S3-compatible service.

How to get started

  1. Head to Folder Settings → Storage Settings in the Bytescale Dashboard.
  2. Pick Generic S3 as your storage type.
  3. Provide your endpoint, bucket name, region, credentials, and custom options (forcePathStyle, objectKeyPrefix, etc.).
  4. Save changes—Bytescale will now treat your folder’s storage as an external source.

Alternatively, use the PutFolder operation to create Generic S3 folders programmatically. The configuration payload looks like this:

{
  "type": "GenericS3",
  "bucket": {
    "bucketEndpoint": "https://example.com/foo",
    "bucketName": "my-bucket",
    "bucketRegion": "auto",
    "forcePathStyle": true,
    "objectKeyPrefix": "uploads/",
    "unsupportedOperations": []
  },
  "credentials": {
    "accessKey": "YOUR_ACCESS_KEY",
    "secretKey": "YOUR_SECRET_KEY"
  },
  "useAbsolutePaths": true
}

Learn more

For full details, check out the docs:


How to Configure S3-Compatible APIs in Bytescale →

Share:
Lawrence Wagerfield
Written by

Lawrence Wagerfield Follow

Hey there, I'm the founder of Bytescale. I dabble in pretty much everything but my expertise is software engineering.

Stay in the know

Get new posts from the Bytescale Blog delivered straight to your inbox.