Pass ?inUseOnly=true to get only the types that appear on at least one synced
appointment — useful when a picker should not offer a filter that would match
nothing.Pass ?activeOnly=true to get only the types the practice can still book.
Retired types are returned by default, because historical appointments still
reference them and a picker that cannot name one renders that appointment’s type
as blank. ModMed only — EZDerm reports no status, so EZDerm types have
active: null and are excluded by this filter.
For EZDerm, a type nobody has booked inside the sync window is absent from the
catalogue. Treat the EZDerm list as a floor, not a complete configuration dump.
GET /v4/appointments?appointmentTypeIds=atp_9f1c2d3e4b5a46f78901234567890abc
Filter on id, not externalId.externalId is the EHR’s own id, and ModMed hands out practice-local integers
like 6054. On an organization with two connected EHR instances the same
externalId names two different types, so a filter keyed on it would return the
other location’s appointments too. id is Max AI’s own id and is unique.Ids that no longer resolve are ignored. If none of the ids in a filter
resolve, the result is empty — not unfiltered. That is deliberate: silently
dropping a broken filter would turn “these three appointment types” into “every
appointment in the practice”.
On an appointment, appointmentType.externalId matches this catalogue’s
externalId. For an organization with a single connected EHR instance — the
common case — that mapping is exact. With two instances, two catalogue rows can
share an externalId. The appointment carries instanceId for exactly this
reason: pair it with appointmentType.externalId and match against the
catalogue row’s own instanceId + externalId. Filtering still takes the
catalogue id, which is unique on its own.
lastSyncedAt on these two catalogues is a last-seen-at, not a
changed-at: it advances on every sync in which the type is still present in
the practice’s configuration, so you can tell a stale catalogue from a healthy
one. A RETIRED type stops being observed, so its stamp freezes at the last sync
that saw it — do not read min(lastSyncedAt) across the catalogue as connector
staleness. That is the opposite of lastSyncedAt on an
appointment, which only moves when the row’s data actually changed. Do not
use it to detect catalogue edits — compare name / active instead.
Retired reasons are returned by default — historical appointments still
reference them, and a picker that cannot name one would render that
appointment’s reason blank. Pass ?activeOnly=true for only the reasons the
practice can currently select.Sourced from ModMed’s cancel-reason configuration. EZDerm exposes no
equivalent reference surface, so an EZDerm-only organization gets an empty
list.
Cancellation reasons on an appointment: current limitation
Today cancelReason is null on every scraped appointment.Neither ModMed’s scheduler feed nor EZDerm’s encounter feed returns a
cancellation reason when reading appointments — ModMed only accepts a reason
on the write (cancel) call. So a null here means “not reported by the
EHR”, not “cancelled for no reason”.What this means for you:
You can configure which reasons should suppress outreach now, from
GET /cancel-reasons. That configuration starts taking effect automatically
the day a vendor read feed carries the value — no client change needed.
Do not write a suppression rule that treats null as a specific reason
(e.g. “null means the patient cancelled”). It would misfire on every
appointment today and change meaning later.
?cancelReasonIds= filters correctly, but currently matches nothing, for the
same reason.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Max AI Developer Docs","colors":{"primary":"#7C3AED","light":"#A78BFA","dark":"#6D28D9"},"logo":{"light":"https://mintcdn.com/maxaiinc-02a56fd1/3kDaJXdVQ62Q_li2/logo/logo.png?fit=max\u0026auto=format\u0026n=3kDaJXdVQ62Q_li2\u0026q=85\u0026s=593e8b0c409b58f620609de6e29ebb79","dark":"https://mintcdn.com/maxaiinc-02a56fd1/3kDaJXdVQ62Q_li2/logo/logo.png?fit=max\u0026auto=format\u0026n=3kDaJXdVQ62Q_li2\u0026q=85\u0026s=593e8b0c409b58f620609de6e29ebb79"},"favicon":"https://mintcdn.com/maxaiinc-02a56fd1/3kDaJXdVQ62Q_li2/logo/logo.png?fit=max\u0026auto=format\u0026n=3kDaJXdVQ62Q_li2\u0026q=85\u0026s=593e8b0c409b58f620609de6e29ebb79","api":{},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"maxaiinc-02a56fd1","hasAudioNarration":false,"actualSubdomain":"maxaiinc-02a56fd1","customDomains":["docs.maxcare.ai"],"gitSource":{"type":"github","owner":"maxcare-ai","repo":"monorepo","deployBranch":"staging","contentDirectory":"workloads/api-docs-mintlify","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6aedf59db961f3bf48d52094","clientVersion":"0.0.4076","searchFilterCounts":[{"language":"default","tag":"API Reference","count":914},{"language":"default","tag":"Patients","count":74},{"language":"default","tag":"Schedule","count":40},{"language":"default","tag":"EHR live reads","count":30},{"language":"default","tag":"Appointments","count":28},{"language":"default","tag":"Inventory","count":28},{"language":"default","tag":"Notes","count":28},{"language":"default","tag":"Tasks","count":28},{"language":"default","tag":"Guides","count":24},{"language":"default","tag":"Payers","count":20}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"guides/appointment-reference-data","slug":"/guides/appointment-reference-data","pageMetadata":{"title":"Appointment types \u0026 cancel reasons","description":"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them","href":"/guides/appointment-reference-data"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Note,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Two reference endpoints back the pickers a scheduling or reactivation app needs:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`GET /v4/appointment-types`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.code,{children:`GET /v4/cancel-reasons`})}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Both are org-scoped, unpaginated (a practice configures tens of these, not\nthousands), and require the `,_jsx(_components.code,{children:`read:appointments`}),` scope.`]}),`\n`,_jsx(Heading,{level:`2`,id:`appointment-types`,children:`Appointment types`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v4/appointment-types`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`18`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appointmentTypes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"atp_9f1c2d3e4b5a46f78901234567890abc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"externalId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"6054\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"instanceId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ins_1a2b3c4d5e6f47a89b01c2d3e4f56789\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Follow-up, established\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"abbreviation\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"EST\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"durationMinutes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cosmetic\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"active\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"lastSyncedAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-07-31T04:15:00.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`?inUseOnly=true`}),` to get only the types that appear on at least one synced\nappointment — useful when a picker should not offer a filter that would match\nnothing.`]}),`\n`,_jsxs(_components.p,{children:[`Pass `,_jsx(_components.code,{children:`?activeOnly=true`}),` to get only the types the practice can still book.\nRetired types are returned by default, because historical appointments still\nreference them and a picker that cannot name one renders that appointment’s type\nas blank. `,_jsx(_components.strong,{children:`ModMed only`}),` — EZDerm reports no status, so EZDerm types have\n`,_jsx(_components.code,{children:`active: null`}),` and are excluded by this filter.`]}),`\n`,_jsx(Heading,{level:`3`,id:`completeness-differs-by-ehr`,children:`Completeness differs by EHR`}),`\n`,_jsxs(Warning,{children:[_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{}),_jsx(_components.th,{children:`ModMed`}),_jsx(_components.th,{children:`EZDerm`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Source`}),_jsx(_components.td,{children:`The practice’s own appointment-type configuration`}),_jsx(_components.td,{children:`Types observed on synced appointments`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Includes never-booked types`}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`No`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`durationMinutes`})}),_jsx(_components.td,{children:`The type’s configured default`}),_jsx(_components.td,{children:`Null`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`abbreviation`})}),_jsx(_components.td,{children:`Present`}),_jsx(_components.td,{children:`Null (EZDerm has no such field)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`cosmetic`})}),_jsx(_components.td,{children:`Null (ModMed has no such field)`}),_jsx(_components.td,{children:`Present`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`active`})}),_jsx(_components.td,{children:`Present (from ACTIVE / ALWAYS_ACTIVE)`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Null`}),` — so `,_jsx(_components.code,{children:`?activeOnly=true`}),` returns nothing`]})]})]})]}),_jsx(_components.p,{children:`For EZDerm, a type nobody has booked inside the sync window is absent from the\ncatalogue. Treat the EZDerm list as a floor, not a complete configuration dump.`})]}),`\n`,_jsx(Heading,{level:`3`,id:`filtering-appointments-by-type`,children:`Filtering appointments by type`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v4/appointments?appointmentTypeIds=atp_9f1c2d3e4b5a46f78901234567890abc`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Filter on `,_jsx(_components.code,{children:`id`}),`, not `,_jsx(_components.code,{children:`externalId`}),`.`]})}),_jsxs(_components.p,{children:[_jsx(_components.code,{children:`externalId`}),` is the EHR’s own id, and ModMed hands out practice-local integers\nlike `,_jsx(_components.code,{children:`6054`}),`. On an organization with two connected EHR instances the same\n`,_jsx(_components.code,{children:`externalId`}),` names two different types, so a filter keyed on it would return the\nother location’s appointments too. `,_jsx(_components.code,{children:`id`}),` is Max AI’s own id and is unique.`]}),_jsxs(_components.p,{children:[`Ids that no longer resolve are ignored. If `,_jsx(_components.strong,{children:`none`}),` of the ids in a filter\nresolve, the result is `,_jsx(_components.strong,{children:`empty`}),` — not unfiltered. That is deliberate: silently\ndropping a broken filter would turn “these three appointment types” into “every\nappointment in the practice”.`]})]}),`\n`,_jsxs(_components.p,{children:[`On an appointment, `,_jsx(_components.code,{children:`appointmentType.externalId`}),` matches this catalogue’s\n`,_jsx(_components.code,{children:`externalId`}),`. For an organization with a single connected EHR instance — the\ncommon case — that mapping is exact. With two instances, two catalogue rows can\nshare an `,_jsx(_components.code,{children:`externalId`}),`. The appointment carries `,_jsx(_components.code,{children:`instanceId`}),` for exactly this\nreason: pair it with `,_jsx(_components.code,{children:`appointmentType.externalId`}),` and match against the\ncatalogue row’s own `,_jsx(_components.code,{children:`instanceId`}),` + `,_jsx(_components.code,{children:`externalId`}),`. Filtering still takes the\ncatalogue `,_jsx(_components.code,{children:`id`}),`, which is unique on its own.`]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`lastSyncedAt`}),` on these two catalogues is a `,_jsx(_components.strong,{children:`last-seen-at`}),`, not a\nchanged-at: it advances on every sync in which the type is still present in\nthe practice’s configuration, so you can tell a stale catalogue from a healthy\none. A RETIRED type stops being observed, so its stamp freezes at the last sync\nthat saw it — do not read `,_jsx(_components.code,{children:`min(lastSyncedAt)`}),` across the catalogue as connector\nstaleness. That is the opposite of `,_jsx(_components.code,{children:`lastSyncedAt`}),` on an\nappointment, which only moves when the row’s data actually changed. Do not\nuse it to detect catalogue edits — compare `,_jsx(_components.code,{children:`name`}),` / `,_jsx(_components.code,{children:`active`}),` instead.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`cancellation-reasons`,children:`Cancellation reasons`}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`GET /v4/cancel-reasons`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`16`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`16`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"success\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"data\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"cancelReasons\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"crn_7e8d9c0b1a2f43e5678901234567890a\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"externalId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"CR00000001\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"instanceId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ins_1a2b3c4d5e6f47a89b01c2d3e4f56789\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Patient cancelled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"active\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"predefined\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"lastSyncedAt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-07-31T04:15:00.000Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`Retired reasons are returned by default — historical appointments still\nreference them, and a picker that cannot name one would render that\nappointment’s reason blank. Pass `,_jsx(_components.code,{children:`?activeOnly=true`}),` for only the reasons the\npractice can currently select.`]}),`\n`,_jsxs(_components.p,{children:[`Sourced from ModMed’s cancel-reason configuration. `,_jsx(_components.strong,{children:`EZDerm exposes no\nequivalent reference surface`}),`, so an EZDerm-only organization gets an empty\nlist.`]}),`\n`,_jsx(Heading,{level:`2`,id:`cancellation-reasons-on-an-appointment-current-limitation`,children:`Cancellation reasons on an appointment: current limitation`}),`\n`,_jsxs(Warning,{children:[_jsx(_components.p,{children:_jsxs(_components.strong,{children:[`Today `,_jsx(_components.code,{children:`cancelReason`}),` is `,_jsx(_components.code,{children:`null`}),` on every scraped appointment.`]})}),_jsxs(_components.p,{children:[`Neither ModMed’s scheduler feed nor EZDerm’s encounter feed returns a\ncancellation reason when `,_jsx(_components.em,{children:`reading`}),` appointments — ModMed only accepts a reason\non the `,_jsx(_components.em,{children:`write`}),` (cancel) call. So a `,_jsx(_components.code,{children:`null`}),` here means `,_jsx(_components.strong,{children:`“not reported by the\nEHR”`}),`, not “cancelled for no reason”.`]}),_jsx(_components.p,{children:`What this means for you:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You can configure which reasons should suppress outreach `,_jsx(_components.strong,{children:`now`}),`, from\n`,_jsx(_components.code,{children:`GET /cancel-reasons`}),`. That configuration starts taking effect automatically\nthe day a vendor read feed carries the value — no client change needed.`]}),`\n`,_jsxs(_components.li,{children:[`Do `,_jsx(_components.strong,{children:`not`}),` write a suppression rule that treats `,_jsx(_components.code,{children:`null`}),` as a specific reason\n(e.g. “null means the patient cancelled”). It would misfire on every\nappointment today and change meaning later.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`?cancelReasonIds=`}),` filters correctly, but currently matches nothing, for the\nsame reason.`]}),`\n`]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Appointment types \u0026 cancel reasons","description":"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them","href":"/guides/appointment-reference-data"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Appointment types","slug":"appointment-types","depth":2,"children":[{"title":"Completeness differs by EHR","slug":"completeness-differs-by-ehr","depth":3,"children":[]},{"title":"Filtering appointments by type","slug":"filtering-appointments-by-type","depth":3,"children":[]}]},{"title":"Cancellation reasons","slug":"cancellation-reasons","depth":2,"children":[]},{"title":"Cancellation reasons on an appointment: current limitation","slug":"cancellation-reasons-on-an-appointment-current-limitation","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"maxaiinc-02a56fd1","siteName":"Max AI Developer Docs","title":"Appointment types \u0026 cancel reasons - Max AI Developer Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-04T05:12:52.955Z","originalFileLocation":"guides/appointment-reference-data.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\">\u003cmeta data-mint-head name=\"application-name\" content=\"Max AI Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Appointment types \u0026amp; cancel reasons - Max AI Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Max AI Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.maxcare.ai/guides/appointment-reference-data\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://maxaiinc-02a56fd1.mintlify.site/_mintlify/api/og/v2?division=Working+with+Appointments\u0026amp;title=Appointment+types+%26+cancel+reasons\u0026amp;description=Reference+catalogues+for+building+appointment-type+and+cancellation-reason+pickers%2C+and+how+to+filter+appointments+by+them\u0026amp;theme=02e0b3646d3b285707db65d5\u0026amp;signature=1357b1b73c3910ade110c33eb9ca39106423b3e475e1cb20ea34281ac44fb69a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Appointment types \u0026amp; cancel reasons - Max AI Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://maxaiinc-02a56fd1.mintlify.site/_mintlify/api/og/v2?division=Working+with+Appointments\u0026amp;title=Appointment+types+%26+cancel+reasons\u0026amp;description=Reference+catalogues+for+building+appointment-type+and+cancellation-reason+pickers%2C+and+how+to+filter+appointments+by+them\u0026amp;theme=02e0b3646d3b285707db65d5\u0026amp;signature=1357b1b73c3910ade110c33eb9ca39106423b3e475e1cb20ea34281ac44fb69a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/maxaiinc-02a56fd1/qw7ccI6uMOHd5Iws/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Max AI Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#7C3AED\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.maxcare.ai/guides/appointment-reference-data\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guides/appointment-reference-data.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.maxcare.ai/#organization\",\"name\":\"Max AI Developer Docs\",\"url\":\"https://docs.maxcare.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/maxaiinc-02a56fd1/3kDaJXdVQ62Q_li2/logo/logo.png?fit=max\u0026auto=format\u0026n=3kDaJXdVQ62Q_li2\u0026q=85\u0026s=593e8b0c409b58f620609de6e29ebb79\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.maxcare.ai#website\",\"name\":\"Max AI Developer Docs\",\"url\":\"https://docs.maxcare.ai\",\"publisher\":{\"@id\":\"https://docs.maxcare.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.maxcare.ai/guides/appointment-reference-data#webpage\",\"url\":\"https://docs.maxcare.ai/guides/appointment-reference-data\",\"name\":\"Appointment types \u0026 cancel reasons\",\"description\":\"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\",\"dateModified\":\"2026-09-04T05:12:52.955Z\",\"isPartOf\":{\"@id\":\"https://docs.maxcare.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.maxcare.ai/guides/appointment-reference-data#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.maxcare.ai/guides/appointment-reference-data#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Working with Appointments\",\"item\":\"https://docs.maxcare.ai/guides/appointment-status\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Appointment types \u0026 cancel reasons\",\"item\":\"https://docs.maxcare.ai/guides/appointment-reference-data\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.maxcare.ai/guides/appointment-reference-data#article\",\"headline\":\"Appointment types \u0026 cancel reasons\",\"name\":\"Appointment types \u0026 cancel reasons\",\"description\":\"Reference catalogues for building appointment-type and cancellation-reason pickers, and how to filter appointments by them\",\"url\":\"https://docs.maxcare.ai/guides/appointment-reference-data\",\"mainEntityOfPage\":{\"@id\":\"https://docs.maxcare.ai/guides/appointment-reference-data#webpage\"},\"dateModified\":\"2026-09-04T05:12:52.955Z\",\"publisher\":{\"@id\":\"https://docs.maxcare.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.maxcare.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Max AI Developer Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Max AI Developer Docs","nav":{"global":null,"tabs":[{"tab":"Guides","groups":[{"group":"Overview","pages":[{"title":"Max AI Developer Docs","href":"/guides"},{"title":"How It Works","href":"/guides/architecture"},{"title":"Getting Started","href":"/guides/getting-started"}]},{"group":"Core Concepts","pages":[{"title":"Authentication","href":"/guides/authentication"},{"title":"OAuth Authorization","href":"/guides/oauth"},{"title":"Scopes","href":"/guides/scopes"},{"title":"Pagination","href":"/guides/pagination"},{"title":"Error Handling","href":"/guides/errors"}]},{"group":"Working with Appointments","pages":[{"title":"Appointment statuses","description":"The normalized status vocabulary, how each EHR's native statuses map onto it, and how to target cancellations and no-shows","href":"/guides/appointment-status"},{"title":"Appointment types \u0026 cancel reasons","href":"/guides/appointment-reference-data"},{"title":"Availability \u0026 the appointment finder","description":"Choosing between bookable slots and the EHR's own appointment finder, every finder option, acting as the logged-in user, holds, and errors","href":"/guides/appointment-finder"}]},{"group":"Working with Patients","pages":[{"title":"Patient mailing addresses","href":"/guides/patient-addresses"},{"title":"Payer identities","href":"/guides/payer-identities"}]},{"group":"Prescriptions","pages":[{"title":"E-Prescribing","href":"/guides/e-prescribing"}]},{"group":"Patient Tracking","pages":[{"title":"Patient Tracking","href":"/guides/patient-tracking"}]},{"group":"Building Apps","pages":[{"title":"App Development","href":"/guides/app-development"},{"title":"CLI Reference","href":"/guides/cli"},{"title":"Rate Limits","href":"/guides/rate-limits"},{"title":"Syncing \u0026 incremental polling","href":"/guides/syncing"},{"title":"Patient history \u0026 readiness","href":"/guides/patient-history"},{"title":"Change feed","href":"/guides/changes"},{"title":"Webhooks","href":"/guides/webhooks"},{"title":"On-demand sync","href":"/guides/on-demand-sync"},{"title":"Live EHR reads","href":"/guides/ehr-live-reads"}]}]},{"tab":"API Reference","versions":[{"version":"v4","tag":"Latest","groups":[{"group":"API Reference","pages":[{"group":"Appointment Types","pages":[{"title":"List appointment types","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /appointment-types","href":"/api-reference/v4/appointment-types/list-appointment-types"}]},{"group":"Appointments","pages":[{"title":"List appointments","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /appointments","href":"/api-reference/v4/appointments/list-appointments"},{"title":"Book an appointment","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /appointments","href":"/api-reference/v4/appointments/book-an-appointment"},{"title":"List cancellation reasons","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /appointments/cancel-reasons","href":"/api-reference/v4/appointments/list-cancellation-reasons"},{"title":"List appointment statuses","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /appointments/statuses","href":"/api-reference/v4/appointments/list-appointment-statuses"},{"title":"Get appointment by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /appointments/{id}","href":"/api-reference/v4/appointments/get-appointment-by-id"},{"title":"Reschedule an appointment","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /appointments/{id}","href":"/api-reference/v4/appointments/reschedule-an-appointment"},{"title":"Cancel an appointment","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /appointments/{id}/cancel","href":"/api-reference/v4/appointments/cancel-an-appointment"}]},{"group":"Bank Accounts","pages":[{"title":"List connected bank accounts","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /bank-accounts","href":"/api-reference/v4/bank-accounts/list-connected-bank-accounts"}]},{"group":"Bank Transactions","pages":[{"title":"List bank deposits","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /bank-transactions","href":"/api-reference/v4/bank-transactions/list-bank-deposits"}]},{"group":"Bills","pages":[{"title":"List bills","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /bills","href":"/api-reference/v4/bills/list-bills"},{"title":"Get bill by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /bills/{id}","href":"/api-reference/v4/bills/get-bill-by-id"}]},{"group":"Cancel Reasons","pages":[{"title":"List appointment cancellation reasons","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /cancel-reasons","href":"/api-reference/v4/cancel-reasons/list-appointment-cancellation-reasons"}]},{"group":"Changes","pages":[{"title":"Replay the organization's change feed from a cursor","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /changes","href":"/api-reference/v4/changes/replay-the-organizations-change-feed-from-a-cursor"}]},{"group":"Claims","pages":[{"title":"List claims","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /claims","href":"/api-reference/v4/claims/list-claims"},{"title":"Get claim by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /claims/{id}","href":"/api-reference/v4/claims/get-claim-by-id"}]},{"group":"Deposit matches","pages":[{"title":"Record that a deposit paid one of your remittances","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /deposit-matches","href":"/api-reference/v4/deposit-matches/record-that-a-deposit-paid-one-of-your-remittances"},{"title":"Revoke one of your deposit matches","deprecated":null,"version":null,"openapi":"/openapi-v4.json delete /deposit-matches/{id}","href":"/api-reference/v4/deposit-matches/revoke-one-of-your-deposit-matches"}]},{"group":"Patients","pages":[{"title":"Where each document category is filed","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /documents/categories","href":"/api-reference/v4/patients/where-each-document-category-is-filed"},{"title":"List patients","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients","href":"/api-reference/v4/patients/list-patients"},{"title":"Create a patient","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients","href":"/api-reference/v4/patients/create-a-patient"},{"title":"Read complete appointment and bill histories for up to 25 charts","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/history","href":"/api-reference/v4/patients/read-complete-appointment-and-bill-histories-for-up-to-25-charts"},{"title":"Read whole appointment histories from the EHR for up to 25 charts","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/history/refresh","href":"/api-reference/v4/patients/read-whole-appointment-histories-from-the-ehr-for-up-to-25-charts"},{"title":"Match a patient by demographics","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/match","href":"/api-reference/v4/patients/match-a-patient-by-demographics"},{"title":"Get patient by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{id}","href":"/api-reference/v4/patients/get-patient-by-id"},{"title":"Update a patient","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /patients/{id}","href":"/api-reference/v4/patients/update-a-patient"},{"title":"List a patient's allergies","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{id}/allergies","href":"/api-reference/v4/patients/list-a-patients-allergies"},{"title":"List a patient's chart documents","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{id}/documents","href":"/api-reference/v4/patients/list-a-patients-chart-documents"},{"title":"File a document on a patient's chart","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/documents","href":"/api-reference/v4/patients/file-a-document-on-a-patients-chart"},{"title":"Refresh a patient's chart-document list","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/documents/refresh","href":"/api-reference/v4/patients/refresh-a-patients-chart-document-list"},{"title":"Download one chart document's bytes","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{id}/documents/{documentId}/content","href":"/api-reference/v4/patients/download-one-chart-documents-bytes"},{"title":"Pull one chart document's bytes from the EHR","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/documents/{documentId}/fetch","href":"/api-reference/v4/patients/pull-one-chart-documents-bytes-from-the-ehr"},{"title":"Attach insurance to an existing patient","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/insurance","href":"/api-reference/v4/patients/attach-insurance-to-an-existing-patient"},{"title":"Attach an insurance card image","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/insurance/cards","href":"/api-reference/v4/patients/attach-an-insurance-card-image"},{"title":"Attach insurance with an exact payer","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /patients/{id}/insurance:exact","href":"/api-reference/v4/patients/attach-insurance-with-an-exact-payer"},{"title":"List a patient's lab / pathology results","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{id}/lab-results","href":"/api-reference/v4/patients/list-a-patients-lab-pathology-results"},{"title":"Set a patient's referring provider","deprecated":null,"version":null,"openapi":"/openapi-v4.json put /patients/{id}/referring-provider","href":"/api-reference/v4/patients/set-a-patients-referring-provider"},{"title":"Change an insurance policy's type","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /patients/{patientId}/insurance-policies/{policyId}","href":"/api-reference/v4/patients/change-an-insurance-policys-type"}]},{"group":"EHR live reads","pages":[{"title":"Which live EHR reads each of the organization's EHR instances supports","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/capabilities","href":"/api-reference/v4/ehr-live-reads/which-live-ehr-reads-each-of-the-organizations-ehr-instances-supports"},{"title":"Search the allergen catalog (at most 50 results)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/catalog/allergens","href":"/api-reference/v4/ehr-live-reads/search-the-allergen-catalog-at-most-50-results"},{"title":"Search SNOMED conditions (at most 50 results)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/catalog/conditions","href":"/api-reference/v4/ehr-live-reads/search-snomed-conditions-at-most-50-results"},{"title":"Search the drug catalog (at most 50 results)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/catalog/medications","href":"/api-reference/v4/ehr-live-reads/search-the-drug-catalog-at-most-50-results"},{"title":"Search SNOMED surgical procedures (at most 50 results)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/catalog/surgeries","href":"/api-reference/v4/ehr-live-reads/search-snomed-surgical-procedures-at-most-50-results"},{"title":"The insurance policy types an EHR instance accepts","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/insurance-policy-types","href":"/api-reference/v4/ehr-live-reads/the-insurance-policy-types-an-ehr-instance-accepts"},{"title":"Find an instance's charts by date of birth and name, active or not","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/search","href":"/api-reference/v4/ehr-live-reads/find-an-instances-charts-by-date-of-birth-and-name-active-or-not"},{"title":"A patient's practice-management alerts","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/alerts","href":"/api-reference/v4/ehr-live-reads/a-patients-practice-management-alerts"},{"title":"A patient's appointments, past and future","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/appointments","href":"/api-reference/v4/ehr-live-reads/a-patients-appointments-past-and-future"},{"title":"A visit's unsigned consents","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/consents","href":"/api-reference/v4/ehr-live-reads/a-visits-unsigned-consents"},{"title":"One consent's PDF","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/consents/{consentRef}/pdf","href":"/api-reference/v4/ehr-live-reads/one-consents-pdf"},{"title":"A patient's demographics as the EHR holds them","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/demographics","href":"/api-reference/v4/ehr-live-reads/a-patients-demographics-as-the-ehr-holds-them"},{"title":"The files in a patient's chart","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/documents","href":"/api-reference/v4/ehr-live-reads/the-files-in-a-patients-chart"},{"title":"One chart file's bytes","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/documents/{ref}/content","href":"/api-reference/v4/ehr-live-reads/one-chart-files-bytes"},{"title":"A patient's visits, any note status","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters","href":"/api-reference/v4/ehr-live-reads/a-patients-visits-any-note-status"},{"title":"One visit","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters/{ref}","href":"/api-reference/v4/ehr-live-reads/one-visit"},{"title":"A visit's post-signoff addenda","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters/{ref}/addenda","href":"/api-reference/v4/ehr-live-reads/a-visits-post-signoff-addenda"},{"title":"A visit's final signed PDF","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters/{ref}/final-pdf","href":"/api-reference/v4/ehr-live-reads/a-visits-final-signed-pdf"},{"title":"A visit's SOAP note","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters/{ref}/soap-note","href":"/api-reference/v4/ehr-live-reads/a-visits-soap-note"},{"title":"A visit's note status","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/encounters/{ref}/status","href":"/api-reference/v4/ehr-live-reads/a-visits-note-status"},{"title":"A patient's active insurance policies","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/insurances","href":"/api-reference/v4/ehr-live-reads/a-patients-active-insurance-policies"},{"title":"A policy's prior authorizations","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/insurances/{policyRef}/prior-authorizations","href":"/api-reference/v4/ehr-live-reads/a-policys-prior-authorizations"},{"title":"Create a prior authorization on a policy","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /ehr/patients/{patientId}/insurances/{policyRef}/prior-authorizations","href":"/api-reference/v4/ehr-live-reads/create-a-prior-authorization-on-a-policy"},{"title":"A patient's lab and pathology results","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/lab-results","href":"/api-reference/v4/ehr-live-reads/a-patients-lab-and-pathology-results"},{"title":"A patient's balance and open charges","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/ledger","href":"/api-reference/v4/ehr-live-reads/a-patients-balance-and-open-charges"},{"title":"A patient's medical history","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/medical-history","href":"/api-reference/v4/ehr-live-reads/a-patients-medical-history"},{"title":"Charts this patient was merged with (ids only)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/merge-history","href":"/api-reference/v4/ehr-live-reads/charts-this-patient-was-merged-with-ids-only"},{"title":"A patient's sticky note","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/sticky-note","href":"/api-reference/v4/ehr-live-reads/a-patients-sticky-note"},{"title":"Poll a live read that answered 202","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/reads/{readId}","href":"/api-reference/v4/ehr-live-reads/poll-a-live-read-that-answered-202"},{"title":"Language, race, ethnicity and other code lists of an EHR instance","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/reference-data","href":"/api-reference/v4/ehr-live-reads/language-race-ethnicity-and-other-code-lists-of-an-ehr-instance"}]},{"group":"Patient merges","pages":[{"title":"A merge this app requested","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patient-merges/{id}","href":"/api-reference/v4/patient-merges/a-merge-this-app-requested"},{"title":"Merge this chart into another","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /ehr/patients/{patientId}/merge","href":"/api-reference/v4/patient-merges/merge-this-chart-into-another"},{"title":"What merging this chart into another would do","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /ehr/patients/{patientId}/merge-preview","href":"/api-reference/v4/patient-merges/what-merging-this-chart-into-another-would-do"}]},{"group":"Eligibility Checks","pages":[{"title":"List eligibility checks","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /eligibility-checks","href":"/api-reference/v4/eligibility-checks/list-eligibility-checks"},{"title":"Run an eligibility check","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /eligibility-checks","href":"/api-reference/v4/eligibility-checks/run-an-eligibility-check"},{"title":"Get eligibility check by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /eligibility-checks/{id}","href":"/api-reference/v4/eligibility-checks/get-eligibility-check-by-id"}]},{"group":"Emails","pages":[{"title":"List sent emails","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /emails","href":"/api-reference/v4/emails/list-sent-emails"},{"title":"Send emails","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /emails/send","href":"/api-reference/v4/emails/send-emails"},{"title":"Get email by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /emails/{id}","href":"/api-reference/v4/emails/get-email-by-id"}]},{"group":"ERA Payments","pages":[{"title":"List ERA payments","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /era-payments","href":"/api-reference/v4/era-payments/list-era-payments"}]},{"group":"ERA Service Lines","pages":[{"title":"List ERA service lines","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /era-service-lines","href":"/api-reference/v4/era-service-lines/list-era-service-lines"},{"title":"Get ERA service line by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /era-service-lines/{id}","href":"/api-reference/v4/era-service-lines/get-era-service-line-by-id"}]},{"group":"Facilities","pages":[{"title":"List facilities","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /facilities","href":"/api-reference/v4/facilities/list-facilities"},{"title":"Get facility by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /facilities/{id}","href":"/api-reference/v4/facilities/get-facility-by-id"}]},{"group":"Faxes","pages":[{"title":"List faxes","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /faxes","href":"/api-reference/v4/faxes/list-faxes"},{"title":"Send a fax","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /faxes/send","href":"/api-reference/v4/faxes/send-a-fax"},{"title":"List fax cover-page templates","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /faxes/templates","href":"/api-reference/v4/faxes/list-fax-cover-page-templates"},{"title":"Get fax by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /faxes/{id}","href":"/api-reference/v4/faxes/get-fax-by-id"}]},{"group":"Insurance Policies","pages":[{"title":"List insurance policies","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /insurance-policies","href":"/api-reference/v4/insurance-policies/list-insurance-policies"},{"title":"Get insurance policy by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /insurance-policies/{id}","href":"/api-reference/v4/insurance-policies/get-insurance-policy-by-id"},{"title":"List a policy's insurance card images","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /insurance-policies/{id}/attachments","href":"/api-reference/v4/insurance-policies/list-a-policys-insurance-card-images"}]},{"group":"Intramail","pages":[{"title":"List intramail messages","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /intramail/messages","href":"/api-reference/v4/intramail/list-intramail-messages"},{"title":"Send an intramail message (or save a draft)","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /intramail/messages","href":"/api-reference/v4/intramail/send-an-intramail-message-or-save-a-draft"},{"title":"Get an intramail message","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /intramail/messages/{id}","href":"/api-reference/v4/intramail/get-an-intramail-message"},{"title":"Delete a draft","deprecated":null,"version":null,"openapi":"/openapi-v4.json delete /intramail/messages/{id}","href":"/api-reference/v4/intramail/delete-a-draft"},{"title":"Mark read or unread, flag, archive","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /intramail/messages/{id}","href":"/api-reference/v4/intramail/mark-read-or-unread-flag-archive"},{"title":"Reply, reply all or forward","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /intramail/messages/{id}/reply","href":"/api-reference/v4/intramail/reply-reply-all-or-forward"},{"title":"Search intramail recipients","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /intramail/recipients","href":"/api-reference/v4/intramail/search-intramail-recipients"},{"title":"Intramail sync status","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /intramail/status","href":"/api-reference/v4/intramail/intramail-sync-status"}]},{"group":"Inventory","pages":[{"title":"List inventory changes","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/changes","href":"/api-reference/v4/inventory/list-inventory-changes"},{"title":"Get inventory change by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/changes/{id}","href":"/api-reference/v4/inventory/get-inventory-change-by-id"},{"title":"List products in an inventory change","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/changes/{id}/products","href":"/api-reference/v4/inventory/list-products-in-an-inventory-change"},{"title":"List products","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/products","href":"/api-reference/v4/inventory/list-products"},{"title":"Get product by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/products/{id}","href":"/api-reference/v4/inventory/get-product-by-id"},{"title":"Get stock levels","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/stock-levels","href":"/api-reference/v4/inventory/get-stock-levels"},{"title":"Get stock levels with per-lot breakdown","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /inventory/stock-levels/detail","href":"/api-reference/v4/inventory/get-stock-levels-with-per-lot-breakdown"}]},{"group":"Marketplace","pages":[{"title":"List this app's installations","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /marketplace/installations","href":"/api-reference/v4/marketplace/list-this-apps-installations"},{"title":"Get current app context","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /marketplace/me","href":"/api-reference/v4/marketplace/get-current-app-context"},{"title":"List the organization's members","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /marketplace/members","href":"/api-reference/v4/marketplace/list-the-organizations-members"},{"title":"Verify a session token and resolve its organization","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /marketplace/verify-session","href":"/api-reference/v4/marketplace/verify-a-session-token-and-resolve-its-organization"}]},{"group":"Notes","pages":[{"title":"List patient notes","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /notes","href":"/api-reference/v4/notes/list-patient-notes"},{"title":"Get note by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /notes/{id}","href":"/api-reference/v4/notes/get-note-by-id"},{"title":"Edit SOAP note fields","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /notes/{noteId}","href":"/api-reference/v4/notes/edit-soap-note-fields"},{"title":"Upload image to note","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /notes/{noteId}/images","href":"/api-reference/v4/notes/upload-image-to-note"},{"title":"Delete image from note","deprecated":null,"version":null,"openapi":"/openapi-v4.json delete /notes/{noteId}/images/{imageId}","href":"/api-reference/v4/notes/delete-image-from-note"},{"title":"Get signed URL for a note image","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /notes/{noteId}/images/{imageId}/url","href":"/api-reference/v4/notes/get-signed-url-for-a-note-image"},{"title":"Edit impression fields","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /notes/{noteId}/impressions/{impressionId}","href":"/api-reference/v4/notes/edit-impression-fields"}]},{"group":"OAuth","pages":[{"title":"Exchange authorization code for user info","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /oauth/token","href":"/api-reference/v4/oauth/exchange-authorization-code-for-user-info"}]},{"group":"Organization","pages":[{"title":"List the organization's members","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /org/members","href":"/api-reference/v4/organization/list-the-organizations-members"}]},{"group":"Patient Tracking","pages":[{"title":"List a source's facilities","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patient-tracking/facilities","href":"/api-reference/v4/patient-tracking/list-a-sources-facilities"},{"title":"List a source's providers","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patient-tracking/providers","href":"/api-reference/v4/patient-tracking/list-a-sources-providers"},{"title":"Read the tracking board","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patient-tracking/snapshot","href":"/api-reference/v4/patient-tracking/read-the-tracking-board"},{"title":"List patient-tracking sources","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patient-tracking/sources","href":"/api-reference/v4/patient-tracking/list-patient-tracking-sources"}]},{"group":"Pharmacies","pages":[{"title":"List a patient's pharmacies","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{patientId}/pharmacies","href":"/api-reference/v4/pharmacies/list-a-patients-pharmacies"},{"title":"Search the pharmacy directory","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /pharmacies/search","href":"/api-reference/v4/pharmacies/search-the-pharmacy-directory"}]},{"group":"Prescriptions","pages":[{"title":"List a patient's prescriptions","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /patients/{patientId}/prescriptions","href":"/api-reference/v4/prescriptions/list-a-patients-prescriptions"},{"title":"List prescribers","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prescribers","href":"/api-reference/v4/prescriptions/list-prescribers"},{"title":"List stored prescriptions (change feed)","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prescriptions","href":"/api-reference/v4/prescriptions/list-stored-prescriptions-change-feed"},{"title":"Create a draft prescription from an existing one","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /prescriptions","href":"/api-reference/v4/prescriptions/create-a-draft-prescription-from-an-existing-one"},{"title":"Get a prescription","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prescriptions/{id}","href":"/api-reference/v4/prescriptions/get-a-prescription"},{"title":"E-prescribe a pending prescription to a pharmacy","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /prescriptions/{id}/send","href":"/api-reference/v4/prescriptions/e-prescribe-a-pending-prescription-to-a-pharmacy"},{"title":"Void a draft prescription","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /prescriptions/{id}/void","href":"/api-reference/v4/prescriptions/void-a-draft-prescription"}]},{"group":"Payers","pages":[{"title":"Search payers","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /payers","href":"/api-reference/v4/payers/search-payers"},{"title":"Add a directory payer to the practice","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /payers","href":"/api-reference/v4/payers/add-a-directory-payer-to-the-practice"},{"title":"Payer capabilities","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /payers/capabilities","href":"/api-reference/v4/payers/payer-capabilities"},{"title":"Search the EHR's national payer directory","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /payers/directory","href":"/api-reference/v4/payers/search-the-ehrs-national-payer-directory"},{"title":"Get payer by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /payers/{id}","href":"/api-reference/v4/payers/get-payer-by-id"}]},{"group":"Phone Numbers","pages":[{"title":"List organization phone numbers","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /phone-numbers","href":"/api-reference/v4/phone-numbers/list-organization-phone-numbers"}]},{"group":"Prior Authorizations","pages":[{"title":"List prior authorizations","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prior-authorizations","href":"/api-reference/v4/prior-authorizations/list-prior-authorizations"},{"title":"Get prior authorization by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prior-authorizations/{id}","href":"/api-reference/v4/prior-authorizations/get-prior-authorization-by-id"},{"title":"List source documents for a prior authorization","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /prior-authorizations/{id}/documents","href":"/api-reference/v4/prior-authorizations/list-source-documents-for-a-prior-authorization"}]},{"group":"Providers","pages":[{"title":"List providers","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /providers","href":"/api-reference/v4/providers/list-providers"},{"title":"Get provider by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /providers/{id}","href":"/api-reference/v4/providers/get-provider-by-id"}]},{"group":"Schedule","pages":[{"title":"List appointment types","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/appointment-types","href":"/api-reference/v4/schedule/list-appointment-types"},{"title":"List availability templates","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/availability-templates","href":"/api-reference/v4/schedule/list-availability-templates"},{"title":"List calendar events","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/calendar-events","href":"/api-reference/v4/schedule/list-calendar-events"},{"title":"What this organization's EHR supports","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/capabilities","href":"/api-reference/v4/schedule/what-this-organizations-ehr-supports"},{"title":"Search the EHR's appointment finder","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/finder","href":"/api-reference/v4/schedule/search-the-ehrs-appointment-finder"},{"title":"Providers and facilities that take an appointment type","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/finder/provider-locations","href":"/api-reference/v4/schedule/providers-and-facilities-that-take-an-appointment-type"},{"title":"Hold a slot","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /schedule/holds","href":"/api-reference/v4/schedule/hold-a-slot"},{"title":"Release a slot hold","deprecated":null,"version":null,"openapi":"/openapi-v4.json delete /schedule/holds/{holdId}","href":"/api-reference/v4/schedule/release-a-slot-hold"},{"title":"Find bookable slots","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /schedule/slots","href":"/api-reference/v4/schedule/find-bookable-slots"},{"title":"List visit reasons","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /visit-reasons","href":"/api-reference/v4/schedule/list-visit-reasons"}]},{"group":"Sync Requests","pages":[{"title":"Request a re-sync of a resource with the EHR","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /sync-requests","href":"/api-reference/v4/sync-requests/request-a-re-sync-of-a-resource-with-the-ehr"},{"title":"Request a re-sync of several resources in one call","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /sync-requests/batch","href":"/api-reference/v4/sync-requests/request-a-re-sync-of-several-resources-in-one-call"},{"title":"Get a sync request by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /sync-requests/{id}","href":"/api-reference/v4/sync-requests/get-a-sync-request-by-id"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /tasks","href":"/api-reference/v4/tasks/list-tasks"},{"title":"Create a task","deprecated":null,"version":null,"openapi":"/openapi-v4.json post /tasks","href":"/api-reference/v4/tasks/create-a-task"},{"title":"List task assignee groups","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /tasks/assignee-groups","href":"/api-reference/v4/tasks/list-task-assignee-groups"},{"title":"List task assignees","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /tasks/assignees","href":"/api-reference/v4/tasks/list-task-assignees"},{"title":"Task capabilities","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /tasks/capabilities","href":"/api-reference/v4/tasks/task-capabilities"},{"title":"Get task by ID","deprecated":null,"version":null,"openapi":"/openapi-v4.json get /tasks/{id}","href":"/api-reference/v4/tasks/get-task-by-id"},{"title":"Update task status","deprecated":null,"version":null,"openapi":"/openapi-v4.json patch /tasks/{id}","href":"/api-reference/v4/tasks/update-task-status"}]}]}]},{"version":"v3","pages":[{"title":"v3","href":"/api-reference/v3/appointment-types/list-appointment-types"}]},{"version":"v2","pages":[{"title":"v2","href":"/api-reference/v2/appointment-types/list-appointment-types"}]},{"version":"v1","pages":[{"title":"v1","href":"/api-reference/v1/appointment-types/list-appointment-types"}]}]}]},"basePath":"","title":"Appointment types \u0026 cancel reasons - Max AI Developer Docs","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":[],"chunks":[]}