Roadmap
Peal Commit, paid access, and what is live against what is not, stated plainly.
Peal Commit
The rounds API above is the general shape: many seals, one deadline. Most callers, and nearly every agent, want the narrow one: seal a thing until a time, get something back that proves it was sealed before it was opened. That is one call.
POST https://peal.network/v1/seals
{
"ciphertext_b64": "…", // encrypted on your side, always
"unlock_at": "2026-09-12T18:00:00Z",
"tag": "my-app"
}
→ {
"id": "4f858dc3…", // sha256 of the ciphertext
"round_id": "cond_…",
"unlock_at": "2026-09-12T18:00:00Z",
"proof_url": "/v1/seals/4f858dc3…/proof"
}
Or with the client, which does the encryption:
import { peal } from 'https://peal.network/peal.js';
const until = '2026-09-12T18:00:00Z';
const { id, proof_url } = await peal.sealUntil('the bid', until);
const proof = await peal.getProof(id);
There is no field that takes a plaintext. Encrypting on our side would move the encryption to the wrong end of the network and delete the only property this has. The payload is a ciphertext or it is not accepted.
What the proof actually proves
GET /v1/seals/{id}/proof returns the checkable facts and nothing else. The
load-bearing one is ordering_committed_at: the coordinator writes the batch's
ordering root at freeze, before any operator is handed work, so a commitment timestamp
earlier than the reveal is evidence that the set and its order were fixed before anybody
could open it. Before the round opens, the reveal fields are null rather than
false, because "not yet" and "no" are different answers.
{
"seal_id": "4f858dc3…", // recompute it yourself
"position": 3, // from the hashes, not arrival
"ordering_root": "0x…",
"ordering_committed_at": 1788490917,
"merkle_root": "0x…",
"revealed_at": 1788494517,
"commitment_precedes_reveal": true,
"threshold": "3 of 5 operators open a batch"
}
What is built, and what is not
Every endpoint on this page is live and every example runs against the network. These are the pieces that are not, so you can see the edge of the thing before you plan around it.
- live
POST /v1/sealsseal until a time, in one call - live
GET /v1/seals/{id}/proofordering commitment, merkle root, threshold - shipping next
webhookon a seal we would call you at the deadline; today you poll the round, which an ETag makes nearly free - shipping next
POST /v1/roundswith an invite list multi-party rounds where the participants are known up front - plannedMCP tool
seal_until(payload, unlockAt)so an agent can reach this without an SDK - livepaid access over
x402
every
/v1route has a metered twin at/v1/x402that answers 402 until it is shown an on chain payment. The free API is unchanged and still needs no account. See metered calls - plannedtyped SDKs for TypeScript, Python and Go peal.js and plain HTTP cover it today
- livesealed bid auctions reserve, maximum, ranking, the queue, replay rejection and encrypted contact details
- shipping nextcurrency conversion in the API bidders in another currency; peal-live does it client side today
- shipping nextclaiming a short link from the API you can check availability today; claiming is a permanent onchain write and happens from your own key
An agent cannot sign up for anything: it cannot accept terms, hold an API key it did not earn, or expense a subscription. It can pay for one request. That is why per-call payment is on this list rather than a plan and a dashboard.