Skip to main content

S3 Compatibility

Fil One provides an S3-compatible API. If your application works with AWS S3, it works with Fil One — point your SDK or CLI at our endpoint and authenticate with your API keys.

Endpoint

https://eu-west-1.s3.fil.one

All requests use HTTPS. HTTP connections are rejected.

Authentication

Fil One supports AWS Signature Version 4 (SigV4) authentication. Any S3 client or SDK that supports SigV4 will work without modification.

ParameterValue
Endpointhttps://eu-west-1.s3.fil.one
Regioneu-west-1
Signature versionSigV4
Path styleRequired
Virtual-hosted styleNot supported

Supported operations

Bucket operations

OperationStatusNotes
CreateBucket❌ Not supportedBuckets must be created via the dashboard.
DeleteBucket❌ Not supportedBucket deletion is not yet available.
ListBuckets✅ Supported
HeadBucket✅ Supported
GetBucketVersioning✅ SupportedReturns Enabled for versioned buckets, Suspended is never returned.
PutBucketVersioning⚠️ PartialAccepted for SDK compatibility. Versioning cannot be suspended once enabled — suspend requests are rejected.
GetBucketObjectLockConfiguration✅ SupportedReturns the bucket-level default retention policy, if set.
PutBucketObjectLockConfiguration✅ SupportedSets the default retention policy (Compliance mode).
GetBucketEncryption✅ SupportedReturns the default SSE-KMS (AES-256) configuration.
PutBucketEncryption⚠️ No-opEncryption cannot be modified or disabled. Accepted for SDK compatibility but has no effect.
GetBucketAcl❌ Not supportedACL model is not implemented. See ACLs.
PutBucketAcl❌ Not supportedACL model is not implemented.
GetBucketPolicy❌ Not supportedBucket policies are not implemented.
PutBucketPolicy❌ Not supportedBucket policies are not implemented.
GetBucketLifecycleConfiguration❌ Not supportedPlanned for a future release.
PutBucketLifecycleConfiguration❌ Not supportedPlanned for a future release.
GetBucketNotificationConfiguration❌ Not supportedEvent notifications are not supported.
PutBucketNotificationConfiguration❌ Not supportedEvent notifications are not supported.
GetBucketTagging❌ Not supportedBucket and object tagging are not implemented.
PutBucketTagging❌ Not supportedBucket and object tagging are not implemented.

Object operations

OperationStatusNotes
PutObject✅ SupportedMax object size: 5 TB (use multipart for objects > 5 GB).
GetObject✅ SupportedSupports range requests (Range header). Supports VersionId to retrieve a specific version.
DeleteObject✅ SupportedCreates a delete marker on versioned buckets. Pass VersionId to permanently delete a specific version.
DeleteObjects✅ SupportedBulk delete up to 1,000 objects per request.
HeadObject✅ Supported
ListObjectsV2✅ Supported
ListObjectVersions✅ SupportedReturns all versions and delete markers. Supports Prefix and KeyMarker filters.
CopyObject✅ SupportedSupports x-amz-copy-source-version-id to copy a specific version.
GetObjectRetention✅ SupportedReturns the Object Lock Compliance retention for a specific version.
PutObjectRetention✅ SupportedSets Compliance retention on a specific version. Retention can be extended but not shortened.
GetObjectLegalHold❌ Not supportedPlanned for a future release.
PutObjectLegalHold❌ Not supportedPlanned for a future release.
GetObjectAcl❌ Not supportedACL model is not implemented.
PutObjectAcl❌ Not supportedACL model is not implemented.
GetObjectTagging❌ Not supportedObject tagging is not implemented.
PutObjectTagging❌ Not supportedObject tagging is not implemented.
RestoreObject❌ Not applicableFil One has a single storage class. There are no archival tiers to restore from.
SelectObjectContent❌ Not plannedS3 Select is not planned.

Multipart upload

OperationStatusNotes
CreateMultipartUpload✅ Supported
UploadPart✅ SupportedMinimum part size: 5 MB (except last part). Maximum: 5 GB.
CompleteMultipartUpload✅ SupportedMaximum 10,000 parts per upload.
AbortMultipartUpload✅ Supported
ListParts✅ Supported
ListMultipartUploads✅ Supported

Versioning

Versioning is opt-in and configured at bucket creation time. Once enabled on a bucket, it cannot be suspended or disabled. Every upload to an existing key on a versioned bucket creates a new version rather than overwriting.

OperationStatusNotes
GetBucketVersioning✅ SupportedReturns Enabled for versioned buckets.
ListObjectVersions✅ SupportedLists all versions and delete markers in a bucket.
GetObject with VersionId✅ SupportedRetrieves a specific historical version by ID.
DeleteObject with VersionId✅ SupportedPermanently deletes a specific version, bypassing delete markers.
CopyObject with x-amz-copy-source-version-id✅ SupportedCopies a specific version to restore or duplicate it.
PutBucketVersioning (suspend)❌ RejectedVersioning cannot be suspended once enabled. Suspend requests return an error.

See Versioning for detailed usage and examples.

Object Lock

Object Lock enforces WORM (Write-Once-Read-Many) protection. Compliance mode is supported. Governance mode and Legal Hold are planned for a future release.

OperationStatusNotes
GetBucketObjectLockConfiguration✅ SupportedReturns the bucket-level default retention policy.
PutBucketObjectLockConfiguration✅ SupportedSets the default retention (Compliance mode, 1 day – 10 years).
GetObjectRetention✅ SupportedReturns the Compliance retention for a specific object version.
PutObjectRetention✅ SupportedSets or extends Compliance retention on a version. Cannot be shortened.
GetObjectLegalHold❌ Not supportedPlanned for a future release.
PutObjectLegalHold❌ Not supportedPlanned for a future release.

Object Lock modes:

ModeStatus
Compliance✅ Supported — no user, including the account owner, can delete a locked object or shorten its retention.
Governance❌ Not supported — planned for a future release.

See Object Lock for compliance use cases, retention configuration, and examples.

Presigned URLs

OperationStatusNotes
Presigned GetObject✅ SupportedGenerate time-limited download URLs without requiring API credentials.
Presigned PutObject✅ SupportedGenerate time-limited upload URLs for direct client or browser uploads.

Server-side encryption

Encryption is always enabled on every Fil One bucket. There is nothing to configure.

FeatureStatusNotes
SSE-KMS (AES-256)✅ Always onAll objects are encrypted at rest with AES-256. Applied automatically — no headers required.
Encryption in transit (TLS)✅ Always onAll API connections use HTTPS. HTTP is rejected.
GetBucketEncryption✅ SupportedReturns the default SSE-KMS (AES-256) configuration.
PutBucketEncryption⚠️ No-opAccepted for SDK compatibility. Encryption cannot be modified or disabled.
SSE-C (customer-provided keys)❌ Not supportedKey management is handled by Fil One infrastructure.
Client-side encryption✅ OptionalEncrypt data before upload using AWS SDK encryption utilities. Server-side AES-256 is still applied on top.

See Encryption for details.

ACLs

The S3 ACL model is not supported. Fil One does not implement bucket or object ACLs, bucket policies, or public access controls. All access requires SigV4 authentication.

If your application passes ACL flags (e.g. --acl public-read in the AWS CLI, or ACL: 'public-read' in SDK calls), those flags are silently ignored — the request succeeds but no ACL is applied.

Per-bucket access control via API key scoping is planned for a future release.

Not yet supported

FeatureTimelineNotes
Lifecycle rules (expiration, transitions)Phase 2Planned. Affects archival and cleanup workflows.
Event notifications (SNS/SQS/Lambda triggers)Phase 2Planned.
Object and bucket taggingPhase 2Planned.
Object Lock: Governance modePhase 2Compliance mode is supported today.
Object Lock: Legal HoldPhase 2Planned.
Multi-regionPhase 2eu-west-1 only today. us-east-1 planned.
IAM / multi-user accounts / RBACPhase 2Single-user accounts only.
S3 SelectNot planned
S3 InventoryNot planned
S3 Batch OperationsNot planned
Multiple storage classesNot plannedSingle storage class.

Error responses

Fil One returns standard S3 error XML for all error conditions. If you're handling S3 errors in your application today, no changes are needed.

<?xml version="1.0" encoding="UTF-8"?>
<Error>
<Code>NoSuchBucket</Code>
<Message>The specified bucket does not exist.</Message>
<BucketName>my-bucket</BucketName>
<RequestId>abc123</RequestId>
</Error>

See the Error Reference for a full list of error codes.

Differences from AWS S3

Fil One is S3-compatible, not an S3 clone. A few behaviors differ:

BehaviorAWS S3Fil One
VersioningConfigurable — can be enabled, suspended, or left off per bucket.Opt-in per bucket. Once enabled, cannot be suspended or disabled.
EncryptionOptional and configurable. Off by default for older buckets.Always on (AES-256 SSE-KMS). Cannot be disabled.
Bucket managementCreateBucket and DeleteBucket supported via API. Requires an empty bucket to delete.Buckets managed via dashboard only. CreateBucket and DeleteBucket return AccessDenied. Deletion not yet available.
IAM and policiesFull IAM with users, roles, and bucket policies.Single-user accounts. No IAM or bucket policies. Key-based auth only.
Public accessConfigurable via ACLs and bucket policies.No public access. All requests require authentication.
Lifecycle rulesSupported (expiration, storage class transitions).Not supported. Planned for a future release.
Object Lock modesCompliance and Governance.Compliance only. Governance and Legal Hold planned.
Storage classesMultiple (Standard, IA, Glacier, etc.).Single storage class.
Regions30+ globally.eu-west-1 only. Additional regions planned.
Data retention after deletionObject is immediately and permanently deleted.Object is immediately inaccessible in Fil One, but the underlying Filecoin storage deals persist up to 180 days until natural sector expiration.