Skip to main content
When Suki sends a SUCCESS standalone E/M Coding webhook, the payload includes links to the recommended codes and the session status.
The webhook does not contain the codes themselves. Your application must call the linked E/M Coding API endpoints to retrieve them.This page covers standalone E/M Coding only. Codes requested on an ambient visit with artifacts: ["EM_CODES"] arrive on the Ambient webhook, not this one.
Use the em_codes link to load the recommended codes. Call the status link when you need to confirm coding finished. Each href is relative to /api/v1. Join your API base URL with that path, and authenticate the request with your Suki Token.

Prerequisites

Before you retrieve results, make sure you have:
  • A webhook receiver: An endpoint that receives Suki webhooks and verifies their signatures. Refer to Webhook quickstart and Signature verification.
  • A valid Suki Token: Authenticate E/M Coding API requests with the sdp_suki_token header. Include the sdp_provider_id header when your partnership requires it. Refer to E/M Coding API quickstart.
  • The E/M Coding session_id: Save the session ID returned by Generate E/M codes. That ID is never an ambient session ID.

Build the full URL

Each href in an E/M Coding webhook is relative to /api/v1. Append /api/v1 and the href to your API base URL. For example, when the production base URL is https://sdp.suki.ai and the link contains:
the full request URL is:
For staging, use https://sdp.suki-stage.com as the API base URL.

Available endpoints

Every link object includes a method field. Use that method when you call the endpoint. For these links, the method is always GET. Each of these keys holds exactly one link for the standalone session. Match the link’s name to the webhook’s session_id, or use the first entry in the array.
Other _links keys are present on the E/M Coding webhook but are empty arrays. Ignore them. Standalone E/M Coding sessions are not tied to an encounter, so encounter_id is an empty string. Refer to E/M Coding webhook payload.

Retrieve results step by step

Follow this sequence after your webhook endpoint receives a SUCCESS notification:

Verify the Webhook and Return HTTP 200

Verify the webhook signature and return HTTP 200 within 30 seconds. Do not wait for E/M Coding API calls to finish before you respond. Process the notification and retrieve results in a background job.

Select the Links for This Session

Read _links.em_codes and _links.status. Match each link’s name to the webhook’s session_id.

Check Session Status When Needed

Call the status link when you need to confirm coding finished. Continue to retrieve codes when the returned status is completed. If the status is failed, do not expect codes on the retrieve endpoint.

Retrieve and Store the Codes

Call the em_codes link and read em_codes.values. Store the codes you need soon after the webhook arrives. Standalone codes stay available for 30 days.
After 30 days, Get E/M codes returns 404 with em codes for session older than 30 days is not available. Read and store the codes when the webhook arrives.
For a full example response and field mapping, refer to Get the generated E/M codes.

Check session status

Call Get E/M Coding status when you need the current processing state. The following examples retrieve codes for the standalone E/M Coding session that triggered the webhook. Run this code after your webhook endpoint has verified the signature and returned HTTP 200. The examples:
  1. Read session_id and _links from the webhook payload.
  2. Find the em_codes link for that session.
  3. Retrieve em_codes.values.
The examples use the production API base URL. Replace it with the staging base URL when you test against staging.

Code example

Example: check session status

Reuse the same base URL, path prefix, headers, and link_for helper. Change only the _links key to status.

Code example

Responses from linked endpoints

When you call the E/M Coding API endpoints, Suki returns standard HTTP status codes. For the exact error messages, refer to E/M Coding error messages.
  • 400 Bad Request: Fix the URL or request parameters, then send the request again.
  • 401 Unauthorized: Log in again for a new Suki Token, then retry with the updated token.
  • 404 Not Found: Confirm the E/M Coding session_id, or store codes before the 30-day window ends.
  • 5xx Server Error: Retry the request after a short delay.

Next steps

E/M Coding payload reference - Every field and link key in the webhook body. Get the generated E/M codes - Read each code and its reason. E/M Coding overview - How E/M Coding fits your workflow. Webhook request and response - The 200 response, retries, and duplicate deliveries.
Last modified on November 5, 2026