Register your application in the QPP developer portal and obtain OAuth 2.0 client credentials; use the authorization code flow with PKCE to acquire an access token for the clinician or group you are submitting on behalf of.
Review the 2026 QPP quality measure specifications at qpp.cms.gov to confirm which measures are applicable, the required sample size thresholds, and any measure-specific reporting constraints added for 2026.
Construct a JSON submission payload according to the QPP Submissions API schema, including the NPI or TIN identifier, performance year (2026), measurement set (quality), and an array of measure observations each containing the measure ID, performance met, denominator, numerator, and exclusion counts.
POST the submission payload to the QPP Submissions API staging environment at the preview endpoint to validate scores and data before targeting the production environment.
On receipt of a 201 Created response containing the submission ID, confirm the calculated preliminary score returned in the response body; resolve any validation errors surfaced in the 422 response body if submission is rejected.
Submit final data before the annual QPP submission deadline (typically in late March of the year following the performance year) and retain the submission ID and score confirmation for audit purposes.
Known gotchas
The QPP Submissions API uses OAuth 2.0 with an access token scoped to the submitting organization's TIN; a token issued for one TIN cannot be used to submit data for a different TIN.
The API enforces a minimum denominator threshold for most quality measures; submissions with a denominator below the threshold return a validation error and cannot be scored.
Resubmissions overwrite the existing submission for a given TIN, NPI, and performance year combination; partial updates require re-sending the complete measurement set, not just the changed measures.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp