API reference
BangmodStorage exposes the S3 protocol; the canonical reference for request/response formats is AWS's S3 API documentation. The compatibility matrix at /docs/s3-compatibility lists which operations we implement.
This page describes only the points where our gateway diverges from AWS or where you need BangmodStorage-specific information.
Endpoints
| Region | Endpoint | Region string (SigV4) |
|---|---|---|
| Bangkok | https://s3.bkk.bangmod.storage | ap-southeast-1-bkk |
| Singapore | https://s3.sg.bangmod.storage | ap-southeast-1-sg |
Addressing styles
Both styles supported:
- Path-style:
https://s3.bkk.bangmod.storage/<bucket>/<key> - Virtual-hosted style:
https://<bucket>.s3.bkk.bangmod.storage/<key>
Virtual-hosted requires a wildcard TLS certificate, which we provide for our subdomains. If you are using a custom domain via CNAME, path-style is more reliable until you provide your own cert.
Common response headers
| Header | Description |
|---|---|
x-amz-request-id | Unique per request. Include in support tickets. |
x-amz-id-2 | Extended request ID (debug-only). |
x-bgs-region | BangmodStorage-specific. Confirms which region served the request. |
etag | MD5 of the object body for single-part uploads; opaque token for multi-part. |
Rate limits
Default per-account limits as of 2026-05-27:
| Operation class | Sustained limit | Burst |
|---|---|---|
| PUT / POST / DELETE / COPY | 3,500 req/sec per prefix | 10× for 30 s |
| GET / HEAD | 5,500 req/sec per prefix | 10× for 30 s |
| LIST | 500 req/sec per bucket | 3× for 30 s |
Limits scale with usage. Email support@bangmod.storage if you have throughput patterns that exceed these — we can raise the ceiling on validated workloads.
When throttled, responses return HTTP 503 with x-amz-error-code: SlowDown. Implement exponential backoff as you would against AWS.
Bucket-policy statements supported
| Action | Supported |
|---|---|
s3:GetObject | ✅ |
s3:PutObject | ✅ |
s3:DeleteObject | ✅ |
s3:ListBucket | ✅ |
s3:GetObjectVersion | ✅ |
Any action prefixed kms: | ❌ (SSE-KMS not yet supported) |
Conditions supported: aws:SourceIp, aws:Referer, aws:SecureTransport, s3:prefix. Wildcard principals ("Principal": "*") supported.
Object metadata
Up to 2 KB of user-defined metadata per object via x-amz-meta-* headers. Stored case-insensitively; returned lowercase on GET.
System metadata (Content-Type, Content-Encoding,Cache-Control, Content-Disposition, Content-Language, Expires) supported with AWS-identical semantics.
Versioning
Enable per-bucket via PutBucketVersioning. Once enabled:
- Every PutObject creates a new version with a unique
x-amz-version-id. - DeleteObject creates a delete marker rather than removing data; specify
versionIdto delete a specific version. - Suspending versioning preserves existing versions but new PUTs create the "null" version.
Multipart upload limits
- Min part size: 5 MB (except the last part)
- Max part size: 5 GB
- Max parts: 10,000
- Max object size: 5 TB
- Recommend lifecycle rule to abort incomplete uploads after 7 days.