ACCME PARS API Reference
American Medical Compliance - Engineering Docs
v4.0 • June 2025 • PARS Portal
AMC ACCME Provider ID
0008273
Reaccredited March 2024

Overview

AMC Active - ID 0008273
REST XML - TLS 1.2
Physicians only - All 50 states

PARS is the only system that performs direct provider-to-state-board electronic CE submission for physicians across all 50 states. One POST request and ACCME distributes to every applicable licensing board automatically.

Three web services

ServicePurposeMethods
Activity APIRegister CME course records in PARS. Required before any learner submission.SaveActivityGetActivity
Learner APISubmit individual physician completion records. ACCME distributes to state boards overnight.SaveLearnerActivityGetLearnerStatus
Learner MatchPre-validate physician identity before submitting. Eliminates most rejections.LearnerMatchRequest

Key constraints

ConstraintDetail
WhoUS-licensed physicians only - MD, DO, PA. AMA PRA Category 1 or MOC credit. No nurses or dental.
ConsentLearner must consent before data is submitted. Add consent checkbox to AMC Certificate Platform iframe.
ProtocolTLS 1.2 minimum on all connections.
FormatREST plus XML only. Content-Type: application/xml; charset=utf-8. Not JSON.
SOAPLegacy SOAP deprecated. All new development must use REST XML only.
WindowCurrent year and previous year. 2025 completions accepted until March 31, 2027.
DatesDate only - no time component. Including a time causes Central-to-UTC conversion errors.
EditingLearner records cannot be edited. Delete and resubmit with corrections.

MOC certifying boards - data flows automatically

BoardAcronym
American Board of Internal MedicineABIM
American Board of AnesthesiologyABA
American Board of PediatricsABP
American Board of PathologyABPath
American Board of Otolaryngology - Head and Neck SurgeryABOHNS
American Board of Orthopaedic SurgeryABOS
American Board of SurgeryABS
American Board of Thoracic SurgeryABTS

Setup Steps

Follow these steps in order. Sandbox must be fully working before requesting production credentials.

1
Email ACCME to request sandbox access

AMC primary contact emails info@accme.org requesting a web services user account and sandbox access. Two accounts provisioned: web services account (API username + password) and UI account (browser interface). Both needed. Technical support tickets: dataservices@accme.org

3
Register each AMC CME course as a PARS activity

Every AMC CME course must be registered via SaveActivity before learner completions can be submitted. One-time per course, not per learner. Store the returned PARS Activity ID in the amc_pars_activities Postgres table.

4
Build and test in sandbox

ACCME provides 350+ test physician records covering all MOC boards and all 50 states. Test until SaveActivity and SaveLearnerActivity both return "Accepted" consistently. Never use real physician data in sandbox.

5
Request production credentials

Email info@accme.org to request production credentials. Switch env vars to production URLs. Confirm first live submission returns "Accepted".

Support contacts

PurposeContact
Sandbox access and account provisioninginfo@accme.org
Technical API support ticketsdataservices@accme.org
Support hoursMonday-Friday, excluding US federal holidays and Juneteenth

Activity API

Register and manage CME course records in PARS. Must be completed before any learner completions can be submitted for that course. Real-time responses.

Base URLs

Production
https://pars.accme.org/services/ACCMEService.svc/IACCMEServiceREST
Sandbox
https://pars03nsbgateways02.azure-api.net/services/ACCMEService.svc/IACCMEServiceREST

SaveActivity - register or update a course record

POST  .../IACCMEServiceREST/SaveActivity

Content-Type: application/xml; charset=utf-8. The activityRecordAction field controls Add, Update, or Delete.

XML - SaveActivity Request
<?xml version="1.0" encoding="utf-8"?>
<SubmitMessage xmlns="http://schemas.datacontract.org/2004/07/BLL.Service">
  <User>webserviceuser@amcompliance.com</User>
  <Password>*YOUR_WS_PASSWORD*</Password>
  <ProviderId>0008273</ProviderId>
  <ReportingYear>2026</ReportingYear>
  <Data>
  &lt;accme:ACCMEActivities
    xmlns="http://ns.medbiq.org/metrics/v2/"
    xmlns:accme="http://docs.accme.org/schemas/ACCMEActivities/v3/"
    xmlns:ex="http://www.accme.org/ACCMEActivityExtension/v3"
    xmlns:lom="http://ltsc.ieee.org/xsd/LOM"
    xmlns:hx="http://ns.medbiq.org/lom/extend/v1/"&gt;
    &lt;MedicalEducationMetrics&gt;
      &lt;ReportDescription&gt;
        &lt;ReportingStartDate&gt;2026-01-01&lt;/ReportingStartDate&gt;
        &lt;ReportingEndDate&gt;2026-12-31&lt;/ReportingEndDate&gt;
      &lt;/ReportDescription&gt;
      &lt;lom:lom&gt;
        &lt;lom:general&gt;
          &lt;lom:identifier&gt;
            &lt;lom:catalog&gt;Provider Activity ID&lt;/lom:catalog&gt;
            &lt;lom:entry&gt;AMC-HIPAA-2025-V4&lt;/lom:entry&gt;
          &lt;/lom:identifier&gt;
          &lt;lom:title&gt;&lt;lom:string&gt;HIPAA Privacy and Security for Physicians&lt;/lom:string&gt;&lt;/lom:title&gt;
        &lt;/lom:general&gt;
        &lt;hx:healthcareMetadata&gt;
          &lt;hx:healthcareEducation&gt;
            &lt;hx:credits&gt;
              &lt;hx:activityCertification&gt;AMA PRA Category 1&lt;/hx:activityCertification&gt;
              &lt;hx:numberOfCredits&gt;1.0&lt;/hx:numberOfCredits&gt;
            &lt;/hx:credits&gt;
            &lt;hx:startDateTime&gt;2026-01-01&lt;/hx:startDateTime&gt;
            &lt;hx:endDateTime&gt;2026-12-31&lt;/hx:endDateTime&gt;
            &lt;hx:activitySponsorship&gt;direct&lt;/hx:activitySponsorship&gt;
            &lt;hx:activityFormat&gt;&lt;lom:string&gt;Internet Enduring Material&lt;/lom:string&gt;&lt;/hx:activityFormat&gt;
            &lt;hx:commercialSupport&gt;no&lt;/hx:commercialSupport&gt;
          &lt;/hx:healthcareEducation&gt;
        &lt;/hx:healthcareMetadata&gt;
      &lt;/lom:lom&gt;
      &lt;XtensibleInfo&gt;
        &lt;ex:CreditClaimDate&gt;2026-12-31&lt;/ex:CreditClaimDate&gt;
        &lt;ex:ForPublicList&gt;true&lt;/ex:ForPublicList&gt;
        &lt;ex:activityRecordAction&gt;Add&lt;/ex:activityRecordAction&gt;
        &lt;ex:closeActivityRecord&gt;false&lt;/ex:closeActivityRecord&gt;
      &lt;/XtensibleInfo&gt;
    &lt;/MedicalEducationMetrics&gt;
  &lt;/accme:ACCMEActivities&gt;
  </Data>
</SubmitMessage>

GetActivity - retrieve a registered activity

POST  .../IACCMEServiceREST/GetActivity

Pass the ACCME Activity ID or Provider Activity ID to retrieve the stored record and get the PARS-assigned Activity ID needed for learner submissions.

Learner API

Submit individual physician completion records. ACCME distributes to state medical licensing boards and MOC certifying boards automatically.

US-licensed physicians only. Each record submitted separately. Records cannot be edited after submission - delete and resubmit to correct errors. Learner consent is required before any submission.

Base URLs

Production
https://pars.accme.org/services/ACCMELearnerService.svc/IACCMELearnerServiceREST
Sandbox
https://pars03nsbgateways01.azure-api.net/services/ACCMELearnerService.svc/IACCMELearnerServiceREST

SaveLearnerActivity - submit a physician completion

POST  .../IACCMELearnerServiceREST/SaveLearnerActivity

Real-time response. Always run LearnerMatchRequest first to avoid rejections.

XML - SaveLearnerActivity Request
<SubmitMessage xmlns="http://schemas.datacontract.org/2004/07/BLL.Service">
  <User>webserviceuser@amcompliance.com</User>
  <Password>*YOUR_WS_PASSWORD*</Password>
  <ProviderId>0008273</ProviderId>
  <Data>
  &lt;ar:ACCMELearnerRecords
    xmlns:ar="http://docs.accme.org/schemas/ACCMELearnerRecords/v1/"&gt;
    &lt;ar:LearnerRecord&gt;
      &lt;ar:FirstName&gt;James&lt;/ar:FirstName&gt;
      &lt;ar:LastName&gt;Holloway&lt;/ar:LastName&gt;
      &lt;ar:DateOfBirth&gt;1975-03-22&lt;/ar:DateOfBirth&gt;
      &lt;ar:MedicalEducationNumber&gt;1234567890&lt;/ar:MedicalEducationNumber&gt;
      &lt;ar:ProviderID&gt;0008273&lt;/ar:ProviderID&gt;
      &lt;ar:ProviderActivityID&gt;AMC-HIPAA-2025-V4&lt;/ar:ProviderActivityID&gt;
      &lt;ar:AccmeActivityID&gt;12345678&lt;/ar:AccmeActivityID&gt;
      &lt;ar:DateTimeCreated&gt;2026-05-06&lt;/ar:DateTimeCreated&gt;
      &lt;ar:CompletedDateTime&gt;2026-05-06&lt;/ar:CompletedDateTime&gt;
      &lt;ar:Credits&gt;
        &lt;ar:Credit&gt;
          &lt;ar:CreditType&gt;AMA PRA Category 1 Credit&lt;/ar:CreditType&gt;
          &lt;ar:CreditAmount&gt;1.0&lt;/ar:CreditAmount&gt;
        &lt;/ar:Credit&gt;
      &lt;/ar:Credits&gt;
    &lt;/ar:LearnerRecord&gt;
  &lt;/ar:ACCMELearnerRecords&gt;
  </Data>
</SubmitMessage>

Status lifecycle

StatusMeaning
SubmittedPARS accepted the record. For MOC credit, queued for overnight transmission to certifying board.
TransmittedSent to certifying board. Board is applying its own validation rules.
ApprovedBoard accepted. Credit applied to physician file.
RejectedBoard rejected. AMC primary contact notified by email with error codes. Delete and resubmit.

New fields required in AMC Certificate Platform iframe

FieldPARS elementRequiredNotes
date_of_birthar:DateOfBirthRequiredMost common rejection reason. Must match PARS exactly. Format: YYYY-MM-DD.
npiar:MedicalEducationNumberRequired10-digit NPI. Show only for MD/DO/PA titles.
Consent checkboxpre-conditionRequired"I consent to my CME completion being reported to ACCME PARS." Cannot submit without this.

Learner Match

Pre-validate a physician identity against PARS before submitting a completion record. Returns a single integer. Run this before every SaveLearnerActivity call.

A return value of 1 means proceed. Any other value means do not submit. This one step eliminates the majority of rejection errors.

Endpoints

Production
https://pars.accme.org/services/ACCMELearnerService.svc/IACCMELearnerServiceREST/LearnerMatchRequest
Sandbox
https://pars03nsbgateways01.azure-api.net/services/ACCMELearnerService.svc/IACCMELearnerServiceREST/LearnerMatchRequest
XML - LearnerMatchRequest
<SubmitMessage xmlns="http://schemas.datacontract.org/2004/07/BLL.Service">
  <User>webserviceuser@amcompliance.com</User>
  <Password>*YOUR_WS_PASSWORD*</Password>
  <ProviderId>0008273</ProviderId>
  <Data>
  &lt;ar:LearnerMatchRequest
    xmlns:ar="http://docs.accme.org/schemas/ACCMELearnerRecords/v1/"&gt;
    &lt;ar:FirstName&gt;James&lt;/ar:FirstName&gt;
    &lt;ar:LastName&gt;Holloway&lt;/ar:LastName&gt;
    &lt;ar:DateOfBirth&gt;1975-03-22&lt;/ar:DateOfBirth&gt;
    &lt;ar:MedicalEducationNumber&gt;1234567890&lt;/ar:MedicalEducationNumber&gt;
  &lt;/ar:LearnerMatchRequest&gt;
  </Data>
</SubmitMessage>

Response interpretation

1
Unique match
Proceed with submission
0
No match
Name, DOB, or NPI incorrect
2+
Ambiguous
Identity not specific enough

Sandbox and Testing

Build and fully test in sandbox before requesting production credentials. Never use real physician data in sandbox.

ACCME provides a CSV with 350+ test physician records covering all participating MOC boards and all 50 US states. Download after sandbox credentials are provisioned.

Sandbox endpoints

ServiceSandbox URL
Activity APIhttps://pars03nsbgateways02.azure-api.net/services/ACCMEService.svc/IACCMEServiceREST
Learner API + Matchhttps://pars03nsbgateways01.azure-api.net/services/ACCMELearnerService.svc/IACCMELearnerServiceREST
Sandbox UIpars.accme.org - separate UI credentials provisioned by ACCME

Support ticket checklist

EnvironmentSandbox or production - always specify
Full XML requestComplete payload sent, credentials redacted
Full XML responseComplete response received from PARS
API endpoint URLThe full URL called
Error codesAny numeric codes in the response
Steps takenWhat has already been tried to resolve

Error Codes

Source: ACCME PARS Web Services documentation Appendices A and B, June 2025. All rejection codes returned in real time in the response XML.

Activity record rejections - Appendix A

CodeMeaningFix
100Invalid Provider IDVerify AMC Provider ID is exactly 0008273
101Date range invalidstartDateTime must be before endDateTime
102Credit amount invalidMust be a positive numeric matching the credit type
103Invalid activity formatMust match accepted strings e.g. Internet Enduring Material
104Commercial support missinghx:commercialSupport must be yes or no
105CreditClaimDate before end dateCreditClaimDate must be on or after endDateTime
200MOC error - ABIMVerify MOC credit type and points per ABIM requirements
322ABOS-specific errorABOS diplomate ID required when registering ABOS MOC activities

Learner record rejections - Appendix B

CodeMeaningFix
300Learner not foundRun LearnerMatchRequest first. Name, DOB, or NPI does not match any PARS record.
301Ambiguous identityMatches multiple physicians - refine identifying data
302Activity not foundRun SaveActivity first - activity ID does not exist in PARS
303Date outside activity windowCompletedDateTime must be between startDateTime and CreditClaimDate
304Duplicate recordThis learner plus activity already submitted - do not resubmit
305Invalid credit amountMust exactly match activity registered credit hours
306Non-US physicianPARS accepts US-licensed physicians only
307Consent not recordedAdd consent checkbox to AMC Certificate Platform iframe
310MOC board rejectionACCME emails AMC primary contact with full detail and next steps

n8n Wiring

Replace node 6A (ACCME PARS Submit placeholder) in the AMC Certificate Submission Router with this 4-node sequence.

1
IF node
Check routing eligibility
Conditions: _routing.route_accme_pars === true AND learner.npi not empty AND learner.date_of_birth not empty. False branch skips to CE Broker node. Both NPI and DOB required - submission rejected without them.
2
HTTP Request node
LearnerMatchRequest - pre-validate
POST to /LearnerMatchRequest. Auth: Basic Auth using ACCME_PARS_USER and ACCME_PARS_PASSWORD from n8n credential vault. Content-Type: application/xml; charset=utf-8. Parse XML response integer. If value is not 1, route to Error Handler with match code logged.
3
HTTP Request node
SaveLearnerActivity - submit
POST to /SaveLearnerActivity. Same credentials. Map: ProviderID = 0008273, ProviderActivityID from course.course_id, AccmeActivityID from amc_pars_activities lookup table, CompletedDateTime = course.completion_date (date only - strip any time). "Accepted" means store credit ID and continue. "Rejected" means throw error with code.
4
Wait + HTTP Request node
GetLearnerStatusByCreditId - confirm
Wait 5 minutes, then POST to /GetLearnerStatusByCreditId with the credit ID from step 3. Parse status: Submitted, Approved, or Rejected. Update Postgres audit record. If Rejected, alert Advik with ACCME error codes.

Environment variables

VariableValueNotes
ACCME_PARS_USERwebserviceuser@amcompliance.comFrom ACCME provisioning
ACCME_PARS_PASSWORD*provisioned by ACCME*Store in n8n credential vault - never in code
ACCME_PROVIDER_ID0008273AMC ACCME Provider ID
ACCME_ENVsandbox or productionToggle base URLs - keep sandbox until fully tested

PARS activity registry - Postgres table

SQL - Postgres Schema
CREATE TABLE amc_pars_activities (
  amc_course_id    TEXT PRIMARY KEY,
  pars_activity_id TEXT NOT NULL,
  course_title     TEXT,
  credit_hours     NUMERIC,
  credit_type      TEXT DEFAULT 'AMA PRA Category 1 Credit',
  registered_at    TIMESTAMPTZ DEFAULT NOW()
);

INSERT INTO amc_pars_activities VALUES (
  'AMC-HIPAA-2025-V4',
  '12345678',
  'HIPAA Privacy and Security for Physicians',
  1.0,
  'AMA PRA Category 1 Credit',
  NOW()
);