Six curl calls. One signed receipt.
From an unknown agent call to a verifiable economic event, against the live public sandbox. No SDK. No sign-up. No real funds. Open a terminal.
1. Liveness probe
Confirm the gateway is up before anything else.
curl -i https://sandbox.aisthetic.services/live
# → 200 OK
# { "ok": true, "service": "agenttrust-api", ... }2. Helper session
Returns the bounded JSON description of the public sandbox flow, schema-versioned, no secrets, ready to copy.
curl -s https://sandbox.aisthetic.services/v1/sandbox/demo-session
# → bounded JSON
# {
# "schemaVersion": "agenttrust.public_sandbox_demo_session.v1",
# "sandboxBaseUrl": "https://sandbox.aisthetic.services",
# "demoEndpoint": "/g/aisthetic/probe",
# "identityMode": "sandbox_header_only",
# "paymentMode": "sandbox_x402",
# ...
# }3. Unauthenticated call → 401
The gateway refuses any call that carries no agent-identity evidence. The upstream provider never sees the request.
curl -i -X POST https://sandbox.aisthetic.services/g/aisthetic/probe # → 401 Unauthorized # identity evidence missing, no wallet, no DID, no VC
4. Identified but unpaid call → 402
With sandbox identity headers attached, the gateway accepts the principal but emits a payment challenge bound to this exact request. Replay against another request is rejected.
curl -i -X POST https://sandbox.aisthetic.services/g/aisthetic/probe \ -H "X-AgentTrust-Wallet-Address: 0xSANDBOX" \ -H "X-AgentTrust-Signature-Scheme: sandbox" \ -H "X-AgentTrust-Principal: did:web:sandbox.aisthetic.services" # → 402 Payment Required # challenge body bound to the request hash
5. Sandbox paid call → 200 + signed receipt
X-AgentTrust-Sandbox-Proof: demo-paid is a sandbox-only header. It accepts no real settlement, calls no facilitator, touches no chain. Production deploys refuse this header unconditionally.
curl -i -X POST https://sandbox.aisthetic.services/g/aisthetic/probe \ -H "X-AgentTrust-Wallet-Address: 0xSANDBOX" \ -H "X-AgentTrust-Signature-Scheme: sandbox" \ -H "X-AgentTrust-Principal: did:web:sandbox.aisthetic.services" \ -H "X-AgentTrust-Sandbox-Proof: demo-paid" # → 200 OK # X-AgentTrust-Receipt-Id: <UUID> # the response body is whatever the sandbox upstream returns
6. Verify the proof bundle offline
Receipts are Ed25519-signed and the audit log is hash-chained per provider. The proof bundle verifies offline against the published gateway public key, no contact with us required.
# clone the repo locally, then:
pnpm proof:verify ./bundle-<placeholder>.zip
# → { "verdict": "valid", "hashChainContinuous": true, "signaturesValid": true }What this proves
- The gateway runs a deterministic identity → policy → payment → upstream → receipt → audit pipeline.
- Identity evidence is required before any upstream proxy.
- Paid endpoints emit an HTTP 402 challenge bound to the request, not a generic challenge.
- Successful calls produce a signed receipt indexed in an append-only audit chain.
- The proof bundle verifies offline against a published public key.
What this does not prove
- It does not exercise real x402 settlement (sandbox payment adapter only).
- It does not prove production wallet/DID/VC verification (sandbox identity short-circuit).
- It does not prove enterprise SSO, SCIM, or SIEM integration (operator-credential gated).
- It does not imply any compliance certification, none are claimed.
Next steps
- Read the full request lifecycle for the eight-step flow.
- See payment lifecycle for HTTP 402, x402 wire profiles, and the verify-first invariant.
- See receipts & proof for Ed25519 signing, hash chaining, and offline verifier wiring.
- When you are ready to wire your sandbox endpoint behind the gateway, see design-partner pilot shapes.