Six surfaces. Every one a real round-trip to the live FastAPI.
§22 P9 (every artifact genuine) burn-down: each tile mounts a Next page that fires an HTTP call to a registered router on the live portal, captures X-Trace-Id, displays the raw response payload, and surfaces the round-trip latency. There is no setTimeout fake-progress and no hand-authored response shim · open the network panel and the same call_id token travels both ways.
Pair a sender and receiver.
Form posts to POST /api/wallet/pair with an Idempotency-Key; the response carries both wallet handles, the corridor code, and a pair_id you can look up.
Read a live FX quote.
Hits GET /api/quote with any of the six supported corridors. Live mid-rate from open.er-api.com travels with a sandbox call_id per rail.
List active shared budgets.
Calls GET /api/family/budgets · the same in-memory ledger that /workflow/family-goal writes to. Create a budget there, see it surface here.
Initiate a sandbox transfer.
Pulls a live quote first, then POSTs /api/transfer with the returned quote_call_id and a fresh Idempotency-Key. Both prefixes (SBX-/STUB-) accepted server-side for back-compat.
Download a real NRI PDF.
Streams GET /api/statement/nri.pdf with a configurable period. Headers expose X-Remiton-Statement-Rows + X-Remiton-Statement-Synthetic so QA can verify provenance.
Inspect the audit trail.
Queries GET /api/audit/events with entity_type + user_handle filters. Surfaces the storage_mode chip (supabase vs memory-degraded) so the UI never silently lies about persistence.