One API for outpatient imaging. Order, route, and retrieve.
Search a national network of imaging centers, place a scan order, steer patients to the right site of care, and pull back structured radiology reports. One integration, every payer type.
curl https://api.sandbox.scan.com/api/v2/providers/search \ -H "Authorization: Bearer $SCAN_KEY" \ -H "Content-Type: application/json" \ -d '{ "modality": "mri", "zip": "30303", "network": "aetna_ppo" }'{ "data": [ { "id": "prv_5Kd2", "name": "Peachtree Imaging - Midtown", "modality": "mri", "distance_mi": 2.4, "in_network": true, "cash_price_usd": 420, "hospital_price_usd": 1180 } ]}Built for the teams shipping imaging
EHR / PMS integrators
Wire Scan into clinical ordering. Search providers, place orders, retrieve reports.
View guideEmployer / TPA platforms
Price estimates, site-of-care steerage, concierge scheduling, claims-audit feeds.
View guideBilling / RCM / comp
Submit and track workers-comp orders, pull documents, integrate billing.
View guideSelf-serve developers
Grab a sandbox key and make your first call against seeded demo data in minutes.
View guideFrom provider search to report in three calls
Search a national network, place the order at the right site of care, then receive the structured report. Same three primitives whether you're integrating an EHR, a TPA platform or a workers-comp portal.
- providers.search: modality, geography, network, price
- orders.create: bind a patient to a chosen provider
- orders.report: structured JSON plus signed PDF
# 1. Find an in-network MRI near the patientcurl -X POST https://api.scan.com/v2/providers/search \ -H "Authorization: Bearer $SCAN_KEY" \ -d '{ "modality": "mri", "zip": "30303", "network": "aetna_ppo" }'# 2. Place the order at the chosen site of carecurl -X POST https://api.scan.com/v2/orders \ -H "Authorization: Bearer $SCAN_KEY" \ -d '{ "provider_id": "prv_5Kd2", "patient_id": "pat_8Jm1", "cpt": "72148" }'# 3. Pull the structured radiology report when readycurl https://api.scan.com/v2/orders/ord_Qa7/report \ -H "Authorization: Bearer $SCAN_KEY"One integration, every imaging workflow
What you can build
Composable primitives. No bespoke EDI, no faxed orders, no per-center contracts.
Network and site-of-care search
Filter by modality, geography, network and price across thousands of imaging centers.
Scan ordering
One call to schedule an outpatient scan, with patient comms and prior auth handled.
Structured reports
Retrieve specialist reads as machine-readable JSON plus the signed PDF.
Price and steerage
Surface in-network and cash prices, recommend a high-value in-network site.
Signed webhooks
HMAC-signed lifecycle events with retries and replay from the dashboard.
Images and documents
Pull DICOM, signed PDFs and supporting documents through a single document API.
Your first scan order in 10 minutes
- 1
Get a sandbox API key
Sign up and we'll mint a sandbox key bound to a demo tenant, no card, no PHI.
.envSCAN_KEY=sk_sandbox_3f9a72c1d4e8b06a - 2
Make your first authenticated call
Pre-seeded: your demo tenant ships with imaging centers across modalities, a demo patientpat_8Jm1, and orders in every status. Nothing to set up.# Authenticated provider search against the sandboxcurl https://api.sandbox.scan.com/api/v2/providers/search \-H "Authorization: Bearer $SCAN_KEY" \-d '{ "modality": "ct", "zip": "94110", "radius_mi": 15 }' - 3
Walk the full flow
Place a real sandbox order against the seeded patient and pull the report back when it's ready.
curl -X POST https://api.sandbox.scan.com/api/v2/orders \-H "Authorization: Bearer $SCAN_KEY" \-d '{"provider_id": "prv_5Kd2","patient_id": "pat_8Jm1","body_part": "lumbar_spine","cpt": "72148"}'# => 201 Created# { "id": "ord_Qa7", "status": "scheduled" }Test every branch: use magic IDs to force outcomes.ord_report_readyreturns a signed report,prv_no_availabilityreturns an empty slot set,pat_invalidtriggers a 422. - 4
Go to production
We BAA-gate production access and run a short technical review, usually same week. Bring your callback URL and we'll wire it up.
Search providers
Search the imaging network by modality, geography, payer network and price. Returns freestanding and hospital pricing for site-of-care comparison. Paginated, fully sandboxable.
Returns data[] of Provider objects, plus has_more boolean.
Body parameters
- modalitystring enumRequired
mri · ct · xray · ultrasound · pet · mammo
- zipstringRequired
5-digit US ZIP for the search origin.
- radius_miintegerOptional
Search radius in miles. Default 25.
- networkstringOptional
Payer slug, e.g. aetna_ppo.
- limitintegerOptional
Results per page. Default 20, max 100.
curl -X POST https://api.sandbox.scan.com/api/v2/providers/search \ -H "Authorization: Bearer $SCAN_KEY" \ -H "Content-Type: application/json" \ -d '{ "modality": "mri", "zip": "30303", "radius_mi": 25, "network": "aetna_ppo", "limit": 20 }'{ "data": [ { "id": "prv_5Kd2", "name": "Peachtree Imaging - Midtown", "modality": "mri", "distance_mi": 2.4, "in_network": true, "cash_price_usd": 420, "hospital_price_usd": 1180 }, { "id": "prv_9Tb8", "name": "Atlanta Open MRI", "modality": "mri", "distance_mi": 5.1, "in_network": true, "cash_price_usd": 395, "hospital_price_usd": 1090 } ], "has_more": false}Built for healthcare
Built for machines as well as developers: clean markdown docs, a full OpenAPI spec, and an MCP server.
Still rare in healthcare APIs.
- llms.txt and .md on every page
- Copy for LLM, Open in Claude or ChatGPT
- MCP server for Cursor, VS Code, Claude
SDKs
Start building today
Sandbox keys in minutes. Production access after a short technical review.