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