API Endpoints
api.objekt.sh — General
| Method | Path | Description |
|---|---|---|
PUT /{key} | Upload a file | |
GET /{key} | Download a file | |
POST /deploy | Deploy a static site | |
GET /pricing | Current storage pricing |
Gateways
| Domain | Description |
|---|---|
ipfs.objekt.sh/{cid} | IPFS content gateway |
ar.objekt.sh/{txId} | Arweave content gateway |
tmp.objekt.sh/{slug} | Temporary deploy previews |
Reveal Service
reveal.objekt.sh — Pay-to-Reveal
| Method | Path | Auth | Payment | Description |
|---|---|---|---|---|
PUT /{name}/{key} | EIP-712 | — | Deposit view key | |
GET /{name}/{key} | — | x402 | Purchase view key | |
GET /{name} | — | — | List keys + prices | |
DELETE /{name}/{key} | EIP-712 | — | Remove key | |
GET /attestation | — | — | TEE attestation proof |
Deposit Request
PUT /1a35e1.eth/phone
Content-Type: application/json
{
"viewKey": "objekt_vk_...",
"price": "5.00",
"contentUri": "ipfs://Qm...",
"ttl": "7d",
"sig": "0x...",
"expiry": "1711843200000",
"unverifiedAddress": "0x..."
}Deposit Response
{
"namespace": "1a35e1.eth",
"keyName": "phone",
"commitment": "0x...",
"price": "5.00",
"expiresAt": 1711929600000
}Purchase Response
{
"viewKey": "objekt_vk_...",
"contentUri": "ipfs://Qm...",
"commitment": "0x..."
}List Response
{
"namespace": "1a35e1.eth",
"keys": [
{
"keyName": "phone",
"price": "5.00",
"contentUri": "ipfs://Qm...",
"commitment": "0x...",
"expiresAt": 1711929600000
}
]
}Authentication
All authenticated endpoints use EIP-712 typed data signatures:
- Domain:
{ name: "Objekt", version: "1" } - Signature expiry: 60 seconds
- Server recovers the signer address and verifies ENS ownership (for
.ethnames) or address match (for0xnamespaces)