Sandbox guide
The sandbox (sandbox.railflo.com / api.sandbox.railflo.com) runs the same build as production, in test-mode-only isolation — no live keys can ever exist there. Every screen shows a permanent SANDBOX banner so it’s never mistaken for the real thing.
What you get on signup
Section titled “What you get on signup”Signing up on the sandbox auto-provisions your new tenant with:
- 1 facility, 1 practitioner
- 50 synthetic patients, generated deterministically from your own tenant id — Irish-plausible names, addresses, and format-valid (but clearly synthetic) IHI identifiers. See Magic values for the 3 patients seeded with special behaviour.
Nothing here is derived from a real person — see packages/synth/README.md in the platform repo for the provenance rule this generator follows.
Magic values
Section titled “Magic values”The fastest way to test failure modes without waiting for them to happen naturally. Full list and exact behaviour: Magic values. Categories:
- Patients (by their seeded IHI) — one always rejects every exchange with
policy_denied, one triggers the possible-duplicate match path, one is the demo patient for the identifier-reveal flow. - Recipients —
unreachable@sandbox.railflo.comalways fails delivery;slow@sandbox.railflo.comfails twice then succeeds;locked@sandbox.railflo.comdemonstrates the secure-link retrieval page’s lockout. - Document filenames — a filename containing
__infected__,__lowconf__, or__extractfail__simulates the matching pipeline failure, no real malware or bad OCR required.
Scenario scripts
Section titled “Scenario scripts”POST /v1/sandbox/scenarios/{name} runs a scripted sequence for you — useful for demos and for your own integration’s CI:
inbound_referral— a synthetic correspondent org sends your tenant a referral. Exercises your inbox and theackflow.busy_morning— 15 mixed documents hit intake at once (including one of each document magic value), exercising the review queue with a realistic status distribution.full_lifecycle— create → deliver → ack, end to end.
curl -X POST https://api.sandbox.railflo.com/v1/sandbox/scenarios/inbound_referral \ -H "Authorization: Bearer railflo_sk_test_..."Each call returns the ids of everything it created, so your own test suite can assert against them directly.
Resetting
Section titled “Resetting”curl -X POST https://api.sandbox.railflo.com/v1/sandbox/reset \ -H "Authorization: Bearer railflo_sk_test_..."Wipes everything your tenant has accumulated (patients, exchanges, documents, consent records) and re-seeds the exact same pristine 50-patient state signup gave you. Your API keys and webhook endpoints survive a reset — this is a data reset, not an account reset.
Idle tenants
Section titled “Idle tenants”A sandbox tenant idle for 90 days gets a warning, then an automatic reset — the sandbox is a shared resource, not permanent storage for a proof-of-concept you’ve moved on from.