Object storage
Buckets are S3-compatible and live inside a project. Create one from Storage → New bucket.
Visibility
Buckets are private by default. Reads and writes go through pre-signed URLs or the SDK, both of which are scoped and time-limited. Marking a bucket public is an explicit action and serves it through the edge CDN.
Public URLs
A public bucket answers at:
https://<bucket>.app.tngat.com/<object-key>Pre-signed URLs
bash
curl -X POST https://api.tngat.com/api/v1/buckets/{{bucketId}}/presign \
-H "Authorization: Bearer $TNGAT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"key": "invoices/2026-09.pdf", "method": "PUT", "expiresIn": 900}'The response contains a URL that can be used directly by a browser or a mobile client without ever seeing your API key.
Quotas
Each bucket declares a quota in GB. Uploads that would exceed the quota are rejected with 413, and the bucket's usage is included in the organization's billing meter.