Freeshka

Changelog

Notable changes to the API, the S3 endpoint and the delivery cache.

Conditional writesAPI

PUT now honours If-None-Match: * and If-Match: <etag>, which makes create-if-absent and compare-and-swap possible without a separate read. Mismatches return 412.

Prefix-scoped tokensAPI

Tokens can be restricted to a key prefix instead of a whole bucket, so a client can be handed write access to uploads/2026/ and nothing else.

Brotli on the delivery endpointCDN

Text responses are now compressed with Brotli when the client advertises it, falling back to gzip. Already-compressed types are passed through untouched.

List pagination is now cursor-basedAPI

Listing returns an opaque cursor instead of a numeric offset. Offsets keep working until 1 January 2027, after which they are removed.

Frankfurt regionStorage

Buckets can now be created with region: fra. Existing buckets stay in Amsterdam; there is no in-place migration yet.

Object versioningStorage

Previous revisions are retained for a configurable window, from 1 to 90 days, and can be listed and restored through the API.