Skip to main content
For who owns checkout, scheduling, and the member experience, start with Is this API right for you?. Before using this guide you need a sandbox and an access token. Request keys from Get API keys. How to send Authorization is in Authentication. Use synthetic data only on the initial sandbox. Listing imaging centers, searching or creating practices or law firms, and submitting an order-form-only referral may be off until Scan enables them for your account. What you will build. One referral with the patient on file and the physician order attached. You do not send safety answers or preferred times in this flow. What Scan does after. We reach out for safety screening and scheduling, confirm the appointment with the patient, and file the radiology report back to you. If you already have safety answers and the times that work, use Submit for scheduling instead. Workers compensation payers should use Workers’ compensation and payers for payment_type, order_type, payer, and claim fields.

Terms you will see

  • Referral — the request for imaging. Holds one or more visits.
  • Visit — one trip to an imaging center, carrying the orders for that trip (modality, body part).
  • Order form — the physician’s signed order PDF, sent as order_form. There is no separate medical-referral object.
Safety questions on this referral belong to Submit medical questions. Preferred center and times belong to Submit preferred times.

1. Tell us who the patient is

Register the person being scanned so the rest of the flow can refer to them. Patients are scoped to your group, so you only ever see your own. If you would rather send everything at once, you can nest these same fields as referral.patient in the next step instead. POST /api/v2/patients
What you get back. The patient id. Hold onto it as patient_id for the next step. Full payload: Creates a patient.

2. Send the referral with the physician order

This is the step that creates the imaging request. It carries three things: the patient, the signed physician order, and what is being scanned. The order is the PDF the referring physician signed, sent as order_form in a base64 data URL shaped like data:<content_type>;name=<filename>;base64,<payload>. What is being scanned lives in visits, and each visit carries its orders. Look up the exact procedure first with CPT codes, then send its id as cpt_code_id. We infer modality, body part, contrast, laterality, modifier, and number of views from that mapping. Diagnosis IDs come from ICD-10 codes. You can still send the legacy modality and body-part fields instead. POST /api/v2/referrals
What you get back. The full referral, including its id. Hold onto it to track the referral below. You can stop here. Scan will collect safety answers and book. If you already have safety answers, continue with Submit medical questions. If you already have preferred times, continue with Submit preferred times. If you already have safety answers and preferred times, use Submit for scheduling. Full payload: Creates a referral.

3. Follow the referral to the report

You have two ways to stay current. Subscribe to the status changed webhook and we push each change to you, or poll the referral when you need a snapshot. GET /api/v2/referrals/{referral_id}
What you get back. Once we book, visits[].location and visits[].start_time tell you where and when the patient is going. When the scan is read, pull the radiology report PDF with GET /api/v2/order_documents/report. Full payload: Returns a referral by ID.