Quickstart docs

Build with receipt-backed trust APIs.

Use Passpod APIs to create, verify, and inspect trust receipts with consent, expiry, source labels, and clear decision boundaries.

Run live demo

Quickstart

Start by checking the API index, then run a simulated receipt flow before requesting scoped API access.

curl -i https://api.passpal.app/openapi.json

Authentication

Simulated demos do not require a key. Real pilot routes use scoped keys bound to an API family, use case, and expiry.

curl -X POST https://api.passpal.app/v1/trust/request \\
  -H "X-API-Key: pilot_scoped_key" \\
  -H "Content-Type: application/json"

Core concepts

Trust receipt: a structured record of request, consent, state, expiry, and verification.

Boundary: requester requests, user consents, relying party decides, Passpod records.

Flagship workflow

external_message.send: before an AI agent sends an external message, Passpod Action Firewall checks policy and returns allow, deny, needs_approval, or freeze.

The future endpoint shape is definition-only: POST /v1/actions/check, POST /v1/actions/{action_id}/decision, GET /v1/receipts/{receipt_id}, and GET /v1/receipts/{receipt_id}/verify.

Privacy rule: sensitive_content_stored=false. Receipts store content_hash and safe content_summary, not raw message body, recipient details, payment details, customer details, or scoped keys.

Signature design: future Trust Action Receipts use deterministic canonical JSON, a canonical_hash, public_key_id, and signature_alg. Recommended future algorithm: Ed25519 / EdDSA. Demo signatures use fake values such as sig_demo_not_for_production.

Pilot key boundary: future keys use access modes test, pilot, and live_later; examples use fake prefixes such as pk_test_demo_action_firewall. Every action and receipt is scoped by workspace_id; failures include insufficient_scope and workspace_mismatch.

Decision state design: future transitions include requested -> checked, checked -> needs_approval, and needs_approval -> approved. Failure modes include invalid_transition, terminal_state_locked, duplicate_idempotency_key, and verification_is_read_only. Object ID is not authorization.

Pilot intake sandbox contract: POST /v1/pilot/request accepts JSON-only placeholder requests, and GET /v1/pilot/status/{request_id} returns privacy-safe status. contact_email is not identity proof; request_id is not authorization; unknown IDs must not reveal private records. It is sandbox/non-persistent: no production access, no private storage, and no payment/key/private material. No payment links returned. No keys/tokens returned.

Optional Idempotency-Key is placeholder-safe only. Same key plus same payload replays deterministically; changed payload returns idempotency_conflict. Safe failures include validation_error, payload_too_large, forbidden_field, not_found, and method_not_allowed. Preflight allows Content-Type and Idempotency-Key, not Authorization; responses include no-store, nosniff, no-referrer, frame denial, and minimal permissions headers.

API families

AgentTrust Live Control API: validate, inspect, and verify receipt-backed trust decisions.

AgentTrust APIs: live control, kill-state, and source-labeled signal claims for AI-era API risk.

Authentication

Use scoped API access with the standard HTTP Authorization header.

Authorization: Bearer YOUR_SCOPED_TASK_CORE_KEY

OpenAPI

The machine-readable API index lives at:

GET /openapi.json

Pilot key access

Request a pilot key after testing the live demo and reviewing the receipt model.

Request pilot key