Scopes are permissions that control which API endpoints your app can access. When a clinic installs your app, they grant the scopes your app has requested.
How Scopes Work
- When you create your app, you declare which scopes it needs
- When a clinic installs your app, they review and approve those scopes
- When you create an API key, you select which of the approved scopes it should have
- At runtime, your effective permissions are the intersection of the key’s scopes and the clinic’s installation grants, and each API endpoint checks for the required scope before returning data
If you call an endpoint without the required scope, you’ll receive a 403 Forbidden response.
Available Scopes
Read Scopes
Patient Data
Appointments
Providers
Facilities
Billing
Claims
Payer Remittances (ERAs)
Per-procedure allowed, paid and patient-responsibility amounts, with the CARC/RARC
adjustments explaining the gap between charge and paid. Reported for both EHRs.
deductibleAmount, coinsuranceAmount and copayAmount are EzDerm only: the ModMed
ERA sync does not write those columns, so they are NULL on every ModMed line even when the
remit reported them. Do not derive patient responsibility by summing the three — on ModMed
that sum is 0 on a line the patient really owes. Use patientResponsibilityAmount, which
is populated for both EHRs.
Sync on updatedSince: payer amounts keep moving for 90+ days after service as
recoupments, secondary payers and 835 PLB adjustments land.
Notes
Tasks
Emails
Faxes
read:faxes also gates delivery of the fax.status_changed webhook.
GET /v3/faxes/templates opens a live session against the practice’s EHR — unlike the other two
reads, which are served from our own records. It is capped at 2,000 template reads per organization
per UTC day across all installed apps; over the cap it answers 429 until the budget resets at
00:00 UTC. Cover templates are practice-wide and change rarely, so fetch them once and cache them
rather than calling this before every send.
Phone Numbers
Inventory
Insurance Policies
Prior Authorizations
Eligibility Checks
Write Scopes
Notes
Tasks
Emails
Faxes
Faxes are sent through the practice’s own EHR fax subsystem, so anything you attach is filed as a
chart document and becomes part of the medical record. A sent fax cannot be recalled — idempotencyKey
is required, and repeating a call with the same key returns the original fax instead of sending another.Sending is capped at 200 faxes per organization per UTC day across all installed apps. Over the cap,
POST /v3/faxes/send answers 429; the budget resets at 00:00 UTC. Failed sends count, replays do not.A repeat with the same idempotencyKey never dials — it returns the original record, so re-asking after an
unknown outcome is safe. While the first send is still in flight you get a 503 rather than the record —
repeat the same request shortly, and never mint a new key for it. A 409 means something else: the key was
already used for a DIFFERENT fax, and only then should you use a new key. It is scoped to (app, organization) and never expires.
Products
Inventory
Eligibility Checks
Checking Your Scopes
Use the /v3/marketplace/me endpoint to see which scopes your API key currently has. This endpoint does not require any scope — it is always available.
The response includes your granted scopes:
Insufficient Scope Error
If you call an endpoint without the required scope:
To resolve this, update your app’s requested scopes in the Max AI dashboard and have the clinic re-approve the updated permissions.