Create Professional Claim (CMS-1500) JSON
Submit a professional claim in JSON modeled after the CMS-1500 form structure
/professional-claim-submissionsSubmit 837P professional claims to payers using a JSON request structure that follows the CMS-1500 paper form layout.
This endpoint is especially useful if you want to build a CMS-1500 form interface in your application. It's also useful when you're building an integration using AI agents, which are likely familiar with the data fields and requirements of the CMS-1500 form.
- Call this endpoint with a JSON payload.
- Stedi runs our suite of edits and repairs on the claim data. On success, Stedi translates the request to the X12 837 EDI format and sends it to the payer.
- The endpoint returns an HTTP
201whether Stedi's edits pass or fail. Monitor the response shape for failures:- Success: The endpoint returns only a
claimIdandsubmissionIdwhen the claim passes Stedi's edits. - Failures: The endpoint also returns an
errorsarray when the claim fails one or more of Stedi's edits. Address all issues before resubmitting.
- Success: The endpoint returns only a
When a claim fails edits, Stedi stores it with status REJECTED and displays it on the claims view in the Stedi portal. You can use the submissionId to retrieve the data with the Retrieve Professional Claim JSON endpoint.
This endpoint isn't compatible with webhooks, programmatic PDF download, or secondary and tertiary claims. Visit Submit professional claims for details.
A production Stedi API Key for authentication.
Headers
A unique string to identify this request to the server. You can safely retry requests with the same idempotency key within 24 hours of making the first request. This prevents you from sending duplicate claims due to network errors or other intermittent failures. If you reuse a key on a new request while Stedi is still processing the original, Stedi returns a 409 Conflict error. Learn more.
Body
[CMS-1500 Box 12, 13, 27, 31] Signature and assignment-of-benefits indicators for the claim, covering whether the provider has the patient's and insured's authorizations on file and whether the provider accepts the payer's terms.
[CMS-1500 Box 25, 26, 28, 29, 32, 32a, 32b, 33, 33a, 33b] Billing details for the claim, including the billing provider, service facility, tax identification, and total charges.
[CMS-1500 Box 10a, 10b, 10c, 10d, 14, 15, 16, 17, 17a, 17b, 18, 19, 21, 22, 23, 24h] Clinical details about the encounter, including diagnosis codes, the related providers, relevant dates, and supporting information for the claim.
[CMS-1500 Box 1, 1a, 4, 7, 11, 11a, 11b, 11c] The person who carries the insurance policy being billed. The insured is also called the subscriber, primary policyholder, or primary cardholder, and may be a different person from the patient. For example, when a spouse or child receives care under an employee's plan, the employee is the insured.
[CMS-1500 Box 9, 9a, 9d] Coverage the patient holds under another insurance policy, relevant to coordination of benefits. Include this when the patient has coverage from another payer in addition to the one you're billing.
[CMS-1500 Box 2, 3, 5, 6] The person who received care. Only include this object when the patient is someone other than the insured, such as a spouse or dependent on the insured's plan. When the patient is the insured, leave this empty.
[CMS-1500 Carrier Block] The payer being billed for this claim, identified by a Stedi payer ID. Visit the Payer Network for a complete list of payers and their IDs.
[CMS-1500 Carrier Block] The purpose of the submission. Use CHARGEABLE for standard fee-for-service claims, which covers most submissions.
SUBROGATION_DEMANDCHARGEABLEREPORTING[CMS-1500 Box 17, 17a, 17b, 20, 24a-24j] The individual services, procedures, or supplies being billed. Each service line corresponds to one row in Box 24 of the CMS-1500 form.
[CMS-1500 Carrier Block] The entity submitting the claim to Stedi.
Response
^(clm_)?[0-7][0-9A-HJKMNP-TV-Z]{25}$A unique identifier for the claim within Stedi. This ID stays the same throughout the claim's entire lifecycle. For example, the claim ID is the same for the initial submission and any resubmissions. This is how Stedi links a particular claim to responses, such as 277CA claim acknowledgments.
Failed claim edits that caused Stedi to reject the claim.
- When present, Stedi stored the claim and generated a 277CA claim acknowledgment for the rejection, but didn't send the claim to the payer. You must fix all errors before resubmitting.
- When absent, the claim data passed Stedi's edits and Stedi sent the claim to the payer.
A unique identifier for a specific submission of a claim within Stedi. Stedi generates a submission ID for the initial submission and then a new submission ID for every resubmission of the same claim. This is different from the claim ID, which doesn't change throughout the claim's lifecycle.
curl --request POST \ --url "https://claims.us.stedi.com/2025-03-07/professional-claim-submissions" \ --header "Idempotency-Key: 0e1f9a8d-6c5b-4a3f-9d2e-7b8c1a0f4e6d" \ --header "Authorization: <api_key>" \ --header "Content-Type: application/json" \ --data '{ "authorization": { "insuredAuthorizesAssignment": "YES", "patientReleasesMedicalInfo": "YES", "providerAcceptsAssignment": "ASSIGNED", "providerSignature": "ON_FILE" }, "billing": { "billingProvider": { "address": { "addressLine1": "123 St", "city": "City", "postalCode": "12345", "state": "IL" }, "identifiers": { "npi": "1999999984", "taxonomyCode": "207Q00000X" }, "name": { "organization": "Test Provider" } }, "patientControlNumber": "TEST-004", "taxId": { "ein": "123456789" }, "totalCharge": "100.00" }, "encounter": { "attachments": [ { "attachmentControlNumber": "PWK-2026-0001", "reportTypeCode": "PROGRESS_REPORT", "transmissionCode": "ELECTRONICALLY_ONLY" } ], "claimCodes": [ "AV" ], "claimNote": { "additionalInformation": "Patient presented with persistent cough and bronchospasm; treated in office." }, "clinicalDates": { "hospitalization": { "end": "2026-03-06", "start": "2026-03-04" }, "initialTreatment": "2026-03-03", "onsetOfCurrentIllness": "2026-03-02", "unableToWork": { "end": "2026-03-10", "start": "2026-03-03" } }, "patientCondition": { "isAutoAccidentRelated": false, "isEmploymentRelated": false, "isOtherAccidentRelated": false }, "primaryDiagnosisCode": "J0190", "priorReferringProvider": { "identifiers": { "npi": "1999999984" }, "name": { "person": { "firstName": "John", "lastName": "Doe" } } }, "referenceNumbers": { "clia": "14D2089999", "priorAuthorization": "PA-2026-11111", "referral": "REF-4321" }, "referringProvider": { "identifiers": { "npi": "1999999984" }, "name": { "person": { "firstName": "Jane", "lastName": "Doe" } } }, "resubmission": { "code": "REPLACEMENT_OF_PRIOR_CLAIM", "originalReferenceNumber": "CLM-ORIG-998877" }, "supervisingProvider": { "identifiers": { "npi": "1999999984" }, "name": { "person": { "firstName": "Jane", "lastName": "Smith" } } } }, "insured": { "address": { "addressLine1": "111 A Place", "city": "Somewhere", "postalCode": "123450000", "state": "IL" }, "dateOfBirth": "1990-01-01", "gender": "FEMALE", "insuranceType": "OTHER", "memberId": "W123456789", "name": { "person": { "firstName": "June", "lastName": "Doe" } }, "paymentResponsibilityLevelCode": "PRIMARY" }, "otherInsured": [ { "address": { "addressLine1": "111 A Place", "city": "Somewhere", "postalCode": "123450000", "state": "IL" }, "authorization": { "insuredAuthorizesAssignment": "YES", "patientReleasesMedicalInfo": "YES", "providerGeneratedPatientSignature": false }, "claimFilingIndicator": "BLUE_CROSS_BLUE_SHIELD", "memberId": "BCBS-IL-554433221", "name": { "person": { "firstName": "Michael", "lastName": "Doe" } }, "otherPayer": { "id": { "payerId": "00621" }, "name": { "organization": "Blue Cross Blue Shield of Illinois" } }, "planName": "BCBS PPO", "policyOrGroupNumber": "BCBS-GRP-3344", "relationshipToInsured": "SPOUSE", "responsibilityLevel": "SECONDARY" } ], "patient": { "address": { "addressLine1": "111 A Place", "city": "Somewhere", "postalCode": "123450000", "state": "IL" }, "dateOfBirth": "1900-02-02", "gender": "MALE", "name": { "person": { "firstName": "Liam", "lastName": "Doe" } }, "relationshipToInsured": "CHILD" }, "payer": { "id": "60054", "name": { "organization": "Aetna" } }, "purpose": "CHARGEABLE", "serviceLines": [ { "datesOfService": { "end": "2026-03-03", "start": "2026-03-03" }, "diagnosisCodes": [ "J0190" ], "lineItemChargeAmount": "100.00", "placeOfService": "11", "procedureCode": { "code": "99213" }, "units": "1" } ], "submitter": { "contact": { "phoneNumber": "5555551234" }, "etin": "TEST001", "name": { "organization": "Test Submitter" } } }'{
"claimId": "clm_01K6XFP3TZ8RA9X84963NMW40M",
"submissionId": "sbm_01K6XFP3TZ8RA9X84963NMW40N"
}