Introduction
Overview
Tessera is never in the data path. What Tessera actually does: aggressive host screening, geo-aware host selection (per client), and pre-payment of hosts (also per client) so you can write and read data anytime, on demand. Tessera never sees or even handles the (encrypted) bytes. That's the whole point of decentralized storage. We don't get between you and your data.
You or your agent call the Tessera API to find out where to write, then you write directly to hosts we have prepaid for you. Then you tell us what you did so we can store that metadata in Tessera's manifest, allowing you to reconstruct your file, on demand, slab by slab, from the field of hosts you're employing.
There is no PUT /objects that accepts a body. If you want one, you can build it from the
primitives below.
If you are going to use an agent at all, spend 10 minutes getting him fluent in Tessera. You will learn the system in the process. Coaching your agent.
The shape of an upload
1. POST /prepare-write → 30 providers, with an access token and contract for each
2. (your client) encrypt → Reed–Solomon split into 30 shards
3. (your client) write each shard directly to its provider
4. POST /slabs → register the shards as a slab, get a slab ID back
5. POST /objects → register the object as an ordered list of slabs
A download is the same in reverse: read the object, read its slabs, fetch any 10 shards per slab from providers, reconstruct, decrypt. Any 10 of the 30 rebuild the file.
Base URL
Storage API: https://index.tessera.storage
Account and billing: https://tessera.storage/api/v1 — see Accounts.
Endpoints are unversioned. Breaking changes will be new paths, not silent changes to existing ones.
Authentication
Storage requests are signed. No sessions, no cookies. See Authentication.
What is not here
- No S3 compatibility. No buckets, no presigned URLs, no multipart upload protocol.
- No filenames or directories. Names live in an encrypted metadata blob only your keys can read. See Concepts.
- No server-side encryption. Encryption is in your client, by design.
- No resumable upload protocol. A failed shard write is retried against another provider; that is your client's job.
- No browser-only integration. The API sets no CORS headers. Call it from a server, a native client, or your own backend.