The standalone E/M Coding APIs do not create or modify clinical notes. Suki bases its recommendations on the documentation you submit and does not infer services that are not recorded in the note.
session_id that identifies the coding request. Store this ID with the encounter and use it to check the processing status and retrieve the recommended codes when processing is complete, passing the coding session_id to these endpoints rather than an ambient session ID.
If Suki generates the clinical note from the clinician-patient conversation, enable E/M Coding on the ambient session instead. Suki returns the recommended codes with the completed note. Do not submit the same encounter through the standalone APIs. See Add E/M codes to an ambient visit.
Prerequisites
- A Suki Token from Login. Refer to Partner authentication guide to learn more.
- E/M Coding enabled for your organization. Contact support if you are unsure.
- At least one note section with a LOINC code and the section text.
Steps to generate E/M codes from a note
1
Authenticate
Call Login, and Register once if this user is new. Send the returned token as
sdp_suki_token on every E/M Coding request. If your partnership uses a Provider ID on each call, send sdp_provider_id as well.2
Submit the Note
POST the completed note to A successful call returns
/api/v1/em-codes, and Suki starts coding recommendations after this call returns. The generated response does not include the recommended codes.Request body
Send the finished note insections. Add patient, provider, encounter, and diagnoses when your EHR already has them, since those fields are optional and an ICD-10 or IMO diagnosis is a problem Suki uses with the note when it recommends the E/M code.array
required
The clinical note Suki codes from. Each item is one note section with a LOINC code in
loinc and the section text in content. Set content.type to TEXT and put the prose in content.text. At least one section must include non-empty text, or generate returns 400.object
Optional Patient facts that can change new vs established coding and support the visit. Send what you have. Leave the object out when you have nothing useful.
object
Optional Who saw the patient. Include name, NPI, and specialty when your system already stores them.
object
Optional Visit-level details for the encounter you are coding. Use this when you bill by date of service, want time to influence the code, or need to keep your own visit identifiers with the request.
object
Optional Diagnoses already recorded for the encounter. Include them in
diagnoses.values, with a code and short description for each diagnosis. Suki uses ICD-10 and IMO diagnoses alongside the clinical note when recommending an E/M code. Your existing diagnoses remain unchanged. Refer to Provide existing diagnoses for which diagnosis types to send.201 and a session_id. Store that session_id with the note.3
Wait Until Coding Finishes
Poll Get E/M coding status with that
session_id until status is completed or failed. Status values are created, running, completed, and failed.If webhooks are enabled, you can wait for the E/M Coding notification instead. On that payload, additional_info.session_type is EM_CODES. See E/M Coding webhook events.4
Retrieve the Codes
When status is
completed, call Get E/M codes and show em_codes.values in your review UI. Standalone codes stay available for 30 days. After that, retrieve can return that the codes are no longer available. See Get the generated E/M codes for the response fields.Example request body
Example responses
Generate (201)
Status (while you poll)
Get codes (when status is completed)
When the coding session reaches completed, call Get E/M codes with the same session_id to retrieve Suki’s recommendations.
The response contains the recommended E/M codes in em_codes.values:
values represents one recommended E/M code. Use the following fields to display the recommendation in your review UI:
Explain why Suki recommended the code in your review UI
Each code object includes exactly one set of supporting details:mdm_based_features, time_based_features, or wellness_features. The object present identifies the basis for the recommendation. Use its contents to explain the coding rationale in your review UI.
If
em_codes.values is an empty array ([]), Suki did not recommend any E/M codes for the submitted note.Code example
The following code shows the end-to-end logic: submit the finished note, poll status until coding finishes, then retrieveem_codes.values.
Best practices
Troubleshooting
Status Is Failed
Status Is Failed
Retrieve does not return usable codes for that session. Show the failure, retry generate if appropriate, or fall back to manual coding.
Session Older Than 30 Days
Session Older Than 30 Days
Retrieve returns 404 with a retention message. Call retrieve within 30 days of generate.
Empty Sections or No Section Text
Empty Sections or No Section Text
Generate returns 400. Send at least one section with
loinc, content, and non-empty text.Ambient Session Id Used as Session Id
Ambient Session Id Used as Session Id
Status or retrieve returns 404 (
invalid em coding session id). Use the session_id from the generate 201 response.