Prove it later¶
Everything Planisphere seals is built to be re-checked by someone who does not trust you — or us. This page is the export-and-verify path: pull the records for a period, bundle them, and verify the bundle anywhere.
Export a time range¶
GET /tenant/exports/records?from=&to=&cursor= returns the sealed records for a period. Filters are always applied — unknown query parameters are rejected, never silently ignored — so an export is exactly what you asked for.
curl -sS "https://api.planisphere.ooo/tenant/exports/records?from=2026-07-01T00:00:00Z&to=2026-08-01T00:00:00Z" \
-H "X-Planisphere-Key: ps_test_YOUR_KEY"
Page through with cursor until it comes back empty, collecting each record's action_key.
Bundle the evidence¶
POST the action keys to POST /evidence-packets/seal-bundle/batch as a wrapped object — {"action_keys": [...]}, unlike the bare array POST /v1/record/batch takes — and you get one offline-verifiable evidence package for the whole set:
curl -sS -X POST https://api.planisphere.ooo/evidence-packets/seal-bundle/batch \
-H "X-Planisphere-Key: ps_test_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"action_keys":["law:proposed-action:…","eu-ai-act:record:…"]}'
Verify — three ways¶
- Online:
POST /v1/verifywith a record's verify request — every seal check itemized: signature, hashes, and key identity, each recomputed. The gate/review/record response carries an in-bandverify_request, and quickstart step 5 walks the whole round trip. - Offline recipe:
GET /v1/verify/kitreturns the verification recipe — fields, hashes, and checks, no key material required — so an auditor can re-derive every check themselves. - In the browser: www.planisphere.ooo/verify verifies seal-bundle files entirely in your browser; the record data never leaves the tab.
The trust anchor is public: /.well-known/planisphere-keys.json publishes the signing keys, so verification never depends on asking Planisphere whether Planisphere is honest.
Payload retention
Planisphere stores hash commitments only — it never holds your content. Retain your payload to re-prove WHAT was recorded; the sealed record proves THAT it happened and that nothing was altered. Every record response repeats this in its payload_retention field.