From a note you sent yourself
Use this path after Generate E/M codes from a note.- Confirm Get E/M coding status is
completed, or handle a success E/M Coding webhook. - Call Get E/M codes with the coding
session_idfrom generate. Do not pass an ambient session ID here.
Path parameters
string
required
The E/M coding session ID returned by generate (
201). Not an ambient session ID.Example request
404 with em codes for session older than 30 days is not available.
From an ambient visit
Use this path after Add E/M codes to an ambient visit. The E/M codes generated as part of an ambient session are stored with the note. Read them after ambient status iscompleted. Confirm Session status before you treat the note or the codes as ready. An ambient webhook SUCCESS means processing finished; still confirm status.
With the rest of the note
If you already load structured data,em_codes can sit next to diagnoses, orders, and section values under structured_data.em_codes:
When you only need the codes
The ambient success webhook always includes
_links.em_codes and _links.encounter_em_codes, so you can call those URLs without building the path yourself. Those links return empty values unless the session was created with artifacts: ["EM_CODES"].Example em_codes response
Dedicated E/M retrieve endpoints return recommended codes underem_codes.values. Ambient codes-only endpoints return the same em_codes object. Combined structured-data responses place that object under structured_data.em_codes.
The example below includes MDM detail objects. Those detail fields appear when the API returns them. They are not required on every code.
Response fields
Each object inem_codes.values is one recommended E/M code. Use these fields to display the recommendation in your application’s UI for the clinician reviewing the note.
Exactly one of mdm_based_features, time_based_features, or wellness_features is populated on each code. Use that object to explain the coding rationale.
string
E/M code record ID.
string
The recommended E/M code, such as
99214.string
The E/M code family. Allowed values:
PROBLEM_BASED, WELLNESS_PREVENTIVE, ADD_ON_CODE, CONSULTATIONS, PREVENTIVE_MEDICINE_SERVICES, PROLONGED_SERVICES, and TRANSITIONAL_CARE_MANAGEMENT_SERVICES.number
The recommended coding level.
string
The patient category used for the recommendation (
NEW_PATIENT or ESTABLISHED_PATIENT).array
Code modifiers for the recommendation, such as
25. Show this only when the list has values.array
Additional codes recommended with the E/M code. Show this only when the list has values.
object
Optional Medical decision making (MDM) details when Suki coded on MDM. Present only when this is the basis for the recommendation.
object
Optional Time-based coding details when Suki coded on time. Present only when this is the basis for the recommendation.
object
Optional Wellness or preventive coding details when Suki coded on wellness. Present only when this is the basis for the recommendation.
What to show the reviewer
Show the recommended code as a suggestion for the reviewer to check, not as a final billing decision. The reviewer is usually the clinician who completed the note, but your application may also send the recommendation to a coding team. In either case, require the reviewer to accept or change the code before sending it to billing. Display the recommended code (for example,99214) prominently, along with whether the patient is new or established and the recommended level. Then show the supporting information from the code’s feature object:
- Medical decision making: Show
rationale. When medical decision making details are available, also show the problems, data reviewed, and risk, along with the evidence for each. - Time-based coding: Show the total minutes and the supporting
evidence. - Wellness coding: Show the supporting
evidence.
em_codes.values is empty, display a message that no code was recommended. Keep the note available for review. An empty list does not indicate a failed request. For ambient visits, the note can be complete even when Suki has no coding recommendation.
Let the reviewer accept the recommended code or select a different one. Once they confirm their choice, your application can pass the accepted code to its existing billing or EHR workflow. Suki does not submit claims, send codes to payers, or update the EHR.
Best practices
Troubleshooting
Empty em_codes.values
Empty em_codes.values
Dedicated E/M endpoints still return an
em_codes object with values: []. Treat that as no recommendation, not as a failed HTTP call.Standalone Status Is Failed
Standalone Status Is Failed
Do not expect codes on retrieve for that session. Retry generate or fall back to manual coding.
Ambient Coding Failed or Was Skipped
Ambient Coding Failed or Was Skipped
Ambient can still complete successfully. Show the note. Empty
values means no code for this visit.Encounter EM Retrieve Before Session Completes
Encounter EM Retrieve Before Session Completes
Can return
200 with empty values. Poll or wait until ambient status is completed.Standalone Codes Older Than 30 Days
Standalone Codes Older Than 30 Days
Standalone retrieve returns
404 with em codes for session older than 30 days is not available. Retrieve sooner, or generate again if you still have the note.Next steps
What E/M Coding is - What the E/M code means before you map fields. Get E/M codes - Standalone retrieve API reference. Retrieve Ambient results - Use ambient webhook_links for session and encounter E/M codes.
Retrieve E/M Coding results - Use the standalone E/M webhook em_codes link after coding finishes.