Skip to main content
This guide starts from a referral you already created. If you do not have a referral_id yet, follow Submit a medical referral first. Do not create the patient or the referral again here. 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. Preferred center and availability on that existing referral. You do not send a new patient, a new order, or safety answers in this flow. What Scan does after. We book the appointment from the preference you send, confirm it with the patient, and file the radiology report back to you. You never pick a timeslot yourself in this flow. If you still need to collect safety answers as well as preferred times, use Submit for scheduling instead. Safety answers on an already-created referral belong to Submit medical questions. If your account has live auto-book enabled and you want Scan to choose from live availability instead of recording patient preferences, use Submit a booking.

Terms you will see

  • Referral — the request for imaging. Holds one or more visits. You already have its id from the previous guide.
  • Visit — one trip to an imaging center, carrying the orders for that trip (modality, body part).
  • Preferred center and availability — where and when the patient wants to be seen. We book from this.
Safety questions on this referral belong to Submit medical questions. The full intake path belongs to Submit for scheduling.

1. Show the patient nearby imaging centers

Get the centers that can perform this scan, closest first. The search starts from the patient’s address unless you pass a different address. These are candidate centers, not appointment times. Availability is not part of this response. Ranking is more accurate after safety answers are on the referral. Send those first with Submit medical questions. If you skipped the questionnaire, you can still pick a center from this list. GET /api/v2/locations?referral_id={id}
What you get back. A ranked list with each center’s name, address, and distance in miles. Keep the id of whichever one the patient picks. Full payload: Returns nearby imaging centers.

2. Send the center and times the patient wants

Tell us how to book. There are two ways to answer, depending on how particular the patient is. If they are flexible on both place and time, send anytime_anywhere and nothing else — we find the soonest good option. If they are not, send time_preferences with the location_id they picked in the previous step, plus either the days and times that work (preferred_times) or asap: true to take the soonest opening at that center. POST /api/v2/referrals/{referral_id}/scheduling_preferences
What you get back. The updated referral, with preferred_location and scheduling_mode reflecting what you just sent. The referral is now with our scheduling team. Full payload: Submits preferred center and availability.

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. The snapshot also carries preferred_location and scheduling_mode, so you can confirm the preference landed. When the scan is read, pull the radiology report PDF with GET /api/v2/order_documents/report. Full payload: Returns a referral by ID.