{
"code": "server_unresponsive",
"message": "EHR integration is not available for this note",
"trace_id": "550e8400-e29b-41d4-a716-446655440000"
}
Patients
Attach insurance with an exact payer
Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR’s payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient’s EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR’s own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.
Max AI payer id from GET /payers — the exact practice payer to attach. Resolved within the patient's own EHR instance and written by its EHR id, never by a name search. A payer from another organization or instance, an inactive payer, or one with no EHR id is refused with 422 payer_not_writable.
The policyholder's relationship to the patient. SELF (the default) means the patient is the policyholder. Anything else — SPOUSE, CHILD, … — REQUIRES the subscriber* fields below; without them the request is rejected with subscriber_required rather than writing a policy whose policyholder is unknown.
Policyholder's date of birth, YYYY-MM-DD. Required when subscriberRelationship is not SELF — a claim identifies the subscriber by name AND date of birth, so a name alone still sends the biller back to the patient.
Policyholder's sex, as the payer knows it. A professional claim's 2010BA loop carries the subscriber's DMG demographics — date of birth AND gender — so omitting it leaves a correctable rejection on the table. NOT required: unlike name and date of birth, a missing gender does not make the policyholder unidentifiable, so it is never a reason to refuse the write.
Policyholder's address, for the claim's 2010BA N3/N4 segments. Omit and set subscriberAddressSameAsPatient instead when the policyholder lives with the patient — the common case for a spouse or dependant, and the one ModMed models natively.
true when the policyholder lives at the patient's address. Maps to ModMed's own policyHolderAddressSameAsPatients, so the EHR resolves the address itself rather than us copying it and creating a second copy that can drift. Mutually exclusive with subscriberAddress; supplying both is rejected.
Policy type, using ModMed's own names. Applies only to a policy this request adds; omitted, it is filed as COMMERCIAL_OTHER. A policy already on the chart is never edited here; change its type with PATCH /patients/{patientId}/insurance-policies/{policyId}, using the policy's id from GET /insurance-policies (not this response's EHR policyId); a policy added here is listed there after the next EHR sync. Ignored on EHRs without a policy type (see GET /payers/capabilities).
Rank the new policy must take: 1 primary, 2 secondary. When sent, the policy is written at exactly that rank or refused with nothing written: 409 coverage_rank_taken when another policy holds it, 409 coverage_rank_out_of_order when a lower rank is still free (write the primary first). Omitted, the EHR files the policy at its next free rank.
{"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":"api-reference/v2/patients/attach-insurance-with-an-exact-payer","slug":"/api-reference/v2/patients/attach-insurance-with-an-exact-payer","pageMetadata":{"title":"Attach insurance with an exact payer","description":"Attaches coverage using the exact practice payer picked from `GET /payers` (`payerId`), instead of searching the EHR's payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 `payer_not_writable` before anything is written when the payer is not in this organization and the patient's EHR instance (`data.reason: not_found_in_instance`), is inactive (`inactive`), has no EHR id (`no_integration_id`), or no longer exists in the EHR (`ehr_payer_missing`). Refused with 422 `coverage_ranks_full` when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send `coverageOrder` (1 primary, 2 secondary) to require that rank: refused with 409 `coverage_rank_taken` when another policy holds it, or 409 `coverage_rank_out_of_order` when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. `coverageOrder` is part of the request, so reusing an `Idempotency-Key` with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and `alreadyOnChart` is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR's own copy of the policy, read back after the write, so `payerId` confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 `ehr_write_uncertain`. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same `Idempotency-Key` contract as `POST /patients/{id}/insurance`.","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/insurance:exact","href":"/api-reference/v2/patients/attach-insurance-with-an-exact-payer","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Attaches coverage using the exact practice payer picked from \", _jsx(_components.code, {\n children: \"GET /payers\"\n }), \" (\", _jsx(_components.code, {\n children: \"payerId\"\n }), \"), instead of searching the EHR’s payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 \", _jsx(_components.code, {\n children: \"payer_not_writable\"\n }), \" before anything is written when the payer is not in this organization and the patient’s EHR instance (\", _jsx(_components.code, {\n children: \"data.reason: not_found_in_instance\"\n }), \"), is inactive (\", _jsx(_components.code, {\n children: \"inactive\"\n }), \"), has no EHR id (\", _jsx(_components.code, {\n children: \"no_integration_id\"\n }), \"), or no longer exists in the EHR (\", _jsx(_components.code, {\n children: \"ehr_payer_missing\"\n }), \"). Refused with 422 \", _jsx(_components.code, {\n children: \"coverage_ranks_full\"\n }), \" when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send \", _jsx(_components.code, {\n children: \"coverageOrder\"\n }), \" (1 primary, 2 secondary) to require that rank: refused with 409 \", _jsx(_components.code, {\n children: \"coverage_rank_taken\"\n }), \" when another policy holds it, or 409 \", _jsx(_components.code, {\n children: \"coverage_rank_out_of_order\"\n }), \" when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. \", _jsx(_components.code, {\n children: \"coverageOrder\"\n }), \" is part of the request, so reusing an \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and \", _jsx(_components.code, {\n children: \"alreadyOnChart\"\n }), \" is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR’s own copy of the policy, read back after the write, so \", _jsx(_components.code, {\n children: \"payerId\"\n }), \" confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 \", _jsx(_components.code, {\n children: \"ehr_write_uncertain\"\n }), \". A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \" contract as \", _jsx(_components.code, {\n children: \"POST /patients/{id}/insurance\"\n }), \".\"]\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}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Attach insurance with an exact payer","description":"Attaches coverage using the exact practice payer picked from `GET /payers` (`payerId`), instead of searching the EHR's payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 `payer_not_writable` before anything is written when the payer is not in this organization and the patient's EHR instance (`data.reason: not_found_in_instance`), is inactive (`inactive`), has no EHR id (`no_integration_id`), or no longer exists in the EHR (`ehr_payer_missing`). Refused with 422 `coverage_ranks_full` when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send `coverageOrder` (1 primary, 2 secondary) to require that rank: refused with 409 `coverage_rank_taken` when another policy holds it, or 409 `coverage_rank_out_of_order` when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. `coverageOrder` is part of the request, so reusing an `Idempotency-Key` with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and `alreadyOnChart` is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR's own copy of the policy, read back after the write, so `payerId` confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 `ehr_write_uncertain`. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same `Idempotency-Key` contract as `POST /patients/{id}/insurance`.","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/insurance:exact","href":"/api-reference/v2/patients/attach-insurance-with-an-exact-payer","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Attaches coverage using the exact practice payer picked from `GET /payers` (`payerId`), instead of searching the EHR's payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 `payer_not_writable` before anything is written when the payer is not in this organization and the patient's EHR instance (`data.reason: not_found_in_instance`), is inactive (`inactive`), has no EHR id (`no_integration_id`), or no longer exists in the EHR (`ehr_payer_missing`). Refused with 422 `coverage_ranks_full` when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send `coverageOrder` (1 primary, 2 secondary) to require that rank: refused with 409 `coverage_rank_taken` when another policy holds it, or 409 `coverage_rank_out_of_order` when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. `coverageOrder` is part of the request, so reusing an `Idempotency-Key` with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and `alreadyOnChart` is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR's own copy of the policy, read back after the write, so `payerId` confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 `ehr_write_uncertain`. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same `Idempotency-Key` contract as `POST /patients/{id}/insurance`.","operationId":"PatientsPublicController_addPatientInsuranceExact","parameters":["81dbbac3-bcd2-461c-99db-1b8325388d5d","f38cc0a4-1ce1-4337-9eed-15f711e0d502","ddfbd10f-40f8-4356-82e4-ffe44371ae1f"],"requestBody":"70dc2801-32d5-4b02-aeb3-ca8990877293","responses":{"200":"4473901b-67ab-4ecc-b9fc-da8f58c5bfc6","400":"6d183597-b1f0-488c-8fd5-05c4e798c733","401":"9d9472c1-35da-4eb5-94ea-a64bd45ac72d","403":"0f11ae4d-bdaa-4269-ab46-86ee80408304","404":"08d4f96f-c4d8-45ea-9f71-c017d83e5bf4","409":"f7fd19f5-e578-4cf4-96e4-0058faf13a0c","422":"2baf5d1f-535e-4961-8ee8-7150e233184c","429":"7a17b815-a38c-439a-9da1-cee9a4f1ebdf","502":"21495cd2-eda8-4837-8e31-afea29d4987f","503":"2f19b84e-5259-4e3a-a177-f40a5f297eeb"},"security":["9d505750-7e51-4b0b-9a44-6654a63e4d73"],"summary":"Attach insurance with an exact payer","tags":["Patients"],"method":"post","type":"path","servers":["bda469ab-e693-49f0-97b1-e1f5f0dcb0ee"],"path":"/patients/{id}/insurance:exact","baseUrlOptions":["https://api.maxcare.ai/v2"],"title":"Attach insurance with an exact payer","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"81dbbac3-bcd2-461c-99db-1b8325388d5d":{"name":"id","required":true,"in":"path","description":"Patient ID","schema":{"type":"string","isRequired":true,"description":"Patient ID","uniqueKey":"","typeLabel":"string"}},"f38cc0a4-1ce1-4337-9eed-15f711e0d502":{"name":"idempotency-key","required":false,"in":"header","description":"Client-generated key protecting retries for 24 hours","schema":{"type":"string","isRequired":false,"description":"Client-generated key protecting retries for 24 hours","uniqueKey":"","typeLabel":"string"}},"ddfbd10f-40f8-4356-82e4-ffe44371ae1f":{"name":"X-Organization-Id","in":"header","required":true,"schema":{"type":"string","isRequired":true,"description":"Target clinic organization ID","uniqueKey":"","typeLabel":"string"},"description":"Target clinic organization ID"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"memberId":{"type":"string","description":"Member id as printed on the card. Required and non-blank: it decides whether the coverage is already on the chart.","example":"XYZ123456","minLength":1,"maxLength":100,"isRequired":true,"uniqueKey":"memberId","typeLabel":"string"},"payerId":{"type":"string","description":"Max AI payer id from `GET /payers` — the exact practice payer to attach. Resolved within the patient's own EHR instance and written by its EHR id, never by a name search. A payer from another organization or instance, an inactive payer, or one with no EHR id is refused with 422 `payer_not_writable`.","example":"8b9c0a52-3f1e-4c2a-9d7b-2a6f3e1c4b5d","isRequired":true,"uniqueKey":"payerId","typeLabel":"string"},"groupNumber":{"type":"string","example":"0009","uniqueKey":"groupNumber","typeLabel":"string"},"subscriberRelationship":{"type":"string","description":"The policyholder's relationship to the patient. `SELF` (the default) means the patient is the policyholder. Anything else — `SPOUSE`, `CHILD`, … — REQUIRES the `subscriber*` fields below; without them the request is rejected with `subscriber_required` rather than writing a policy whose policyholder is unknown.","example":"SELF","uniqueKey":"subscriberRelationship","typeLabel":"string"},"subscriberFirstName":{"type":"string","description":"Policyholder's first name. Required when `subscriberRelationship` is not `SELF`.","example":"Robert","uniqueKey":"subscriberFirstName","typeLabel":"string"},"subscriberLastName":{"type":"string","description":"Policyholder's last name. Required when `subscriberRelationship` is not `SELF`.","example":"Doe","uniqueKey":"subscriberLastName","typeLabel":"string"},"subscriberDateOfBirth":{"type":"string","description":"Policyholder's date of birth, YYYY-MM-DD. Required when `subscriberRelationship` is not `SELF` — a claim identifies the subscriber by name AND date of birth, so a name alone still sends the biller back to the patient.","example":"1968-03-14","uniqueKey":"subscriberDateOfBirth","typeLabel":"string"},"subscriberSex":{"type":"string","description":"Policyholder's sex, as the payer knows it. A professional claim's 2010BA loop carries the subscriber's `DMG` demographics — date of birth AND gender — so omitting it leaves a correctable rejection on the table. NOT required: unlike name and date of birth, a missing gender does not make the policyholder unidentifiable, so it is never a reason to refuse the write.","enum":["M","F","U"],"example":"M","uniqueKey":"subscriberSex","typeLabel":"enum\u003cstring>"},"subscriberAddress":{"type":"object","description":"Policyholder's address, for the claim's 2010BA `N3`/`N4` segments. Omit and set `subscriberAddressSameAsPatient` instead when the policyholder lives with the patient — the common case for a spouse or dependant, and the one ModMed models natively.","required":["line1","city","state","zip"],"properties":{"line1":{"type":"string","example":"1200 Miller Rd","isRequired":true,"uniqueKey":"subscriberAddress.line1","typeLabel":"string"},"city":{"type":"string","example":"Flint","isRequired":true,"uniqueKey":"subscriberAddress.city","typeLabel":"string"},"state":{"type":"string","description":"Two-letter state code. The adapters translate to each vendor's form (EZDerm `FLORIDA`, ModMed `FL`).","example":"MI","isRequired":true,"uniqueKey":"subscriberAddress.state","typeLabel":"string"},"zip":{"type":"string","example":"48507","isRequired":true,"uniqueKey":"subscriberAddress.zip","typeLabel":"string"},"line2":{"type":"string","example":"Apt 4","uniqueKey":"subscriberAddress.line2","typeLabel":"string"},"country":{"type":"string","example":"US","uniqueKey":"subscriberAddress.country","typeLabel":"string"}},"uniqueKey":"subscriberAddress","typeLabel":"object"},"subscriberAddressSameAsPatient":{"type":"boolean","description":"`true` when the policyholder lives at the patient's address. Maps to ModMed's own `policyHolderAddressSameAsPatients`, so the EHR resolves the address itself rather than us copying it and creating a second copy that can drift. Mutually exclusive with `subscriberAddress`; supplying both is rejected.","example":true,"uniqueKey":"subscriberAddressSameAsPatient","typeLabel":"boolean"},"planName":{"type":"string","description":"Plan name as printed on the card (e.g. `PPO Gold`). Previously always written as null; supply it when the card shows it.","example":"PPO Gold","uniqueKey":"planName","typeLabel":"string"},"policyType":{"type":"string","description":"Policy type, using ModMed's own names. Applies only to a policy this request adds; omitted, it is filed as `COMMERCIAL_OTHER`. A policy already on the chart is never edited here; change its type with `PATCH /patients/{patientId}/insurance-policies/{policyId}`, using the policy's `id` from `GET /insurance-policies` (not this response's EHR `policyId`); a policy added here is listed there after the next EHR sync. Ignored on EHRs without a policy type (see `GET /payers/capabilities`).","enum":["MEDICARE","MEDICARE_ADVANTAGE","MEDICAID","CHIP","TRICARE","CHAMPVA","GOVERNMENT_OTHER","COMMERCIAL_OTHER","HMO","PPO","EPO","POS","GHP","IPA","ACA_EXCHANGE"],"example":"MEDICARE","uniqueKey":"policyType","typeLabel":"enum\u003cstring>"},"coverageOrder":{"type":"number","description":"Rank the new policy must take: 1 primary, 2 secondary. When sent, the policy is written at exactly that rank or refused with nothing written: 409 `coverage_rank_taken` when another policy holds it, 409 `coverage_rank_out_of_order` when a lower rank is still free (write the primary first). Omitted, the EHR files the policy at its next free rank.","enum":[1,2],"example":2,"uniqueKey":"coverageOrder","typeLabel":"enum\u003cnumber>"}},"required":["memberId","payerId"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"memberId":"XYZ123456","payerId":"8b9c0a52-3f1e-4c2a-9d7b-2a6f3e1c4b5d","groupNumber":"0009","subscriberRelationship":"SELF","subscriberFirstName":"Robert","subscriberLastName":"Doe","subscriberDateOfBirth":"1968-03-14","subscriberSex":"M","subscriberAddressSameAsPatient":true,"planName":"PPO Gold","policyType":"MEDICARE","coverageOrder":2}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"4473901b-67ab-4ecc-b9fc-da8f58c5bfc6":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Response code","example":"success","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"data":{"type":"object","properties":{"patientId":{"type":"string","description":"The patient the coverage was attached to","example":"pat_c56103bcd39c46d39f3138dd2b5e05f6","isRequired":true,"uniqueKey":"data.patientId","typeLabel":"string"},"coverageOrder":{"type":"number","description":"Coverage order of the policy as the EHR holds it, read back after the write — 1 is primary","example":1,"isRequired":true,"uniqueKey":"data.coverageOrder","typeLabel":"number"},"payerId":{"type":"string","description":"The Max AI payer id now on the policy. Returned only after the EHR's own copy of the policy was read back and carries this payer, so it is what the EHR holds, not an echo of the request.","example":"8b9c0a52-3f1e-4c2a-9d7b-2a6f3e1c4b5d","isRequired":true,"uniqueKey":"data.payerId","typeLabel":"string"},"payerName":{"type":"string","description":"The payer's name in the practice's payer list","example":"BCBS of Michigan","isRequired":true,"uniqueKey":"data.payerName","typeLabel":"string"},"policyId":{"type":"string","description":"The EHR's id for the policy","example":"813407","isRequired":true,"uniqueKey":"data.policyId","typeLabel":"string"},"alreadyOnChart":{"type":"boolean","description":"True when this payer and member id were already on the chart: nothing was written, and the other fields describe that existing policy.","example":false,"isRequired":true,"uniqueKey":"data.alreadyOnChart","typeLabel":"boolean"},"policyType":{"oneOf":[{"type":"string","description":"The policy type the EHR holds after the write; null when the EHR has none","example":"MEDICARE","isRequired":true,"uniqueKey":"data.policyType.oneOf.0","typeLabel":"string"},{"type":"null","description":"The policy type the EHR holds after the write; null when the EHR has none","example":"MEDICARE","isRequired":true,"uniqueKey":"data.policyType.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.policyType","typeLabel":"string | null"}},"required":["patientId","coverageOrder","payerId","payerName","policyId","alreadyOnChart","policyType"],"isRequired":true,"uniqueKey":"data","typeLabel":"object"}},"required":["code","data"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"success","data":{"patientId":"pat_c56103bcd39c46d39f3138dd2b5e05f6","coverageOrder":1,"payerId":"8b9c0a52-3f1e-4c2a-9d7b-2a6f3e1c4b5d","payerName":"BCBS of Michigan","policyId":"813407","alreadyOnChart":false,"policyType":"MEDICARE"}}}},"exampleType":"generated"}},"exampleType":"generated"},"6d183597-b1f0-488c-8fd5-05c4e798c733":{"description":"Missing or invalid request parameter","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"bad_request","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"'id' must be a valid UUID","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"bad_request","message":"'id' must be a valid UUID","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"9d9472c1-35da-4eb5-94ea-a64bd45ac72d":{"description":"Invalid or missing API key","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"unauthorized","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Invalid or missing API key","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"unauthorized","message":"Invalid or missing API key","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"0f11ae4d-bdaa-4269-ab46-86ee80408304":{"description":"Insufficient scope","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"forbidden","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Insufficient scope","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"forbidden","message":"Insufficient scope","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"08d4f96f-c4d8-45ea-9f71-c017d83e5bf4":{"description":"Resource not found","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"not_found","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Resource not found","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"not_found","message":"Resource not found","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"f7fd19f5-e578-4cf4-96e4-0058faf13a0c":{"description":"Resource conflict (e.g. editing a signed note)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"conflict","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Cannot edit a signed note","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"conflict","message":"Cannot edit a signed note","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"2baf5d1f-535e-4961-8ee8-7150e233184c":{"description":"Request refused by the EHR's state (named `code`)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"controlled_substance_unsupported","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Controlled substances cannot be prescribed through the API","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"},"data":{"type":"object","description":"Condition-specific detail, when the code defines any","uniqueKey":"data","typeLabel":"object"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"controlled_substance_unsupported","message":"Controlled substances cannot be prescribed through the API","trace_id":"550e8400-e29b-41d4-a716-446655440000","data":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"7a17b815-a38c-439a-9da1-cee9a4f1ebdf":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"rate_limit_exceeded","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"Rate limit exceeded. Maximum 1000 requests per 60 seconds.","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"rate_limit_exceeded","message":"Rate limit exceeded. Maximum 1000 requests per 60 seconds.","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"21495cd2-eda8-4837-8e31-afea29d4987f":{"description":"EHR sync failed","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"unexpected_integration_error","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"EHR sync failed","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"unexpected_integration_error","message":"EHR sync failed","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"},"2f19b84e-5259-4e3a-a177-f40a5f297eeb":{"description":"EHR integration unavailable","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"Error code","example":"server_unresponsive","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","description":"Human-readable error message","example":"EHR integration is not available for this note","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"trace_id":{"type":"string","description":"Trace ID for debugging","example":"550e8400-e29b-41d4-a716-446655440000","isRequired":true,"uniqueKey":"trace_id","typeLabel":"string"}},"required":["code","message","trace_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"server_unresponsive","message":"EHR integration is not available for this note","trace_id":"550e8400-e29b-41d4-a716-446655440000"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"9d505750-7e51-4b0b-9a44-6654a63e4d73":{"api-key":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Marketplace API key","scopes":[],"schemeName":"api-key"}}},"servers":{"bda469ab-e693-49f0-97b1-e1f5f0dcb0ee":{"url":"https://api.maxcare.ai/v2"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"scheme":"bearer","bearerFormat":"JWT","type":"http","description":"Marketplace API key","scopes":[],"schemeName":"api-key"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Marketplace API key","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"api-key","name":"Authorization"}],"title":"api-key"}]},"originalFileLocation":"openapi-v2.json"},"subdomain":"maxaiinc-02a56fd1","siteName":"Max AI Developer Docs","title":"Attach insurance with an exact payer - Max AI Developer Docs","navMaps":{"firstHrefInVersion":{"v4":{"href":"/api-reference/v4/patients/attach-insurance-with-an-exact-payer","matchLevel":1},"v3":{"href":"/api-reference/v3/patients/attach-insurance-with-an-exact-payer","matchLevel":1},"v2":{"href":"/api-reference/v2/patients/attach-insurance-with-an-exact-payer","matchLevel":0},"v1":{"href":"/api-reference/v1/patients/attach-insurance-with-an-exact-payer","matchLevel":1}},"firstHrefInLanguage":{}},"lastModified":"2026-11-06T15:43:53.455Z","originalFileLocation":"api-reference/v2/patients/attach-insurance-with-an-exact-payer.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=\"Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR\u0026#x27;s payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient\u0026#x27;s EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR\u0026#x27;s own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.\">\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=\"Attach insurance with an exact payer - Max AI Developer Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR\u0026#x27;s payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient\u0026#x27;s EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR\u0026#x27;s own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.\">\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/api-reference/v2/patients/attach-insurance-with-an-exact-payer\">\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=Patients\u0026amp;title=Attach+insurance+with+an+exact+payer\u0026amp;description=Attaches+coverage+using+the+exact+practice+payer+picked+from+%60GET+%2Fpayers%60+%28%60payerId%60%29%2C+instead+of+searching+the+EHR%27s+payer+list+by+name+and+taking+the+first+h\u0026amp;theme=02e0b3646d3b285707db65d5\u0026amp;signature=d34f7fb8ea8a58f350ae05bfb9c3ab0315369d1850efb42df3114dfe0057dbfe\">\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=\"Attach insurance with an exact payer - Max AI Developer Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR\u0026#x27;s payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient\u0026#x27;s EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR\u0026#x27;s own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://maxaiinc-02a56fd1.mintlify.site/_mintlify/api/og/v2?division=Patients\u0026amp;title=Attach+insurance+with+an+exact+payer\u0026amp;description=Attaches+coverage+using+the+exact+practice+payer+picked+from+%60GET+%2Fpayers%60+%28%60payerId%60%29%2C+instead+of+searching+the+EHR%27s+payer+list+by+name+and+taking+the+first+h\u0026amp;theme=02e0b3646d3b285707db65d5\u0026amp;signature=d34f7fb8ea8a58f350ae05bfb9c3ab0315369d1850efb42df3114dfe0057dbfe\">\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/api-reference/v2/patients/attach-insurance-with-an-exact-payer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v2/patients/attach-insurance-with-an-exact-payer.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/api-reference/v2/patients/attach-insurance-with-an-exact-payer#webpage\",\"url\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer\",\"name\":\"Attach insurance with an exact payer\",\"description\":\"Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR's payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient's EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR's own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.\",\"dateModified\":\"2026-11-06T15:43:53.455Z\",\"isPartOf\":{\"@id\":\"https://docs.maxcare.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.maxcare.ai/api-reference/v2/appointment-types/list-appointment-types\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Patients\",\"item\":\"https://docs.maxcare.ai/api-reference/v2/patients/where-each-document-category-is-filed\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Attach insurance with an exact payer\",\"item\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer#apireference\",\"headline\":\"Attach insurance with an exact payer\",\"name\":\"Attach insurance with an exact payer\",\"description\":\"Attaches coverage using the exact practice payer picked from GET /payers (payerId), instead of searching the EHR's payer list by name and taking the first hit. The payer is written by its EHR id; there is never a name-search fallback. Refused with 422 payer_not_writable before anything is written when the payer is not in this organization and the patient's EHR instance (data.reason: not_found_in_instance), is inactive (inactive), has no EHR id (no_integration_id), or no longer exists in the EHR (ehr_payer_missing). Refused with 422 coverage_ranks_full when every coverage rank on the chart is taken (nothing written; staff must archive a policy in the EHR, so retrying will not help). Send coverageOrder (1 primary, 2 secondary) to require that rank: refused with 409 coverage_rank_taken when another policy holds it, or 409 coverage_rank_out_of_order when a lower rank is still free; nothing is written either way. Without it the EHR files the policy at its next free rank. coverageOrder is part of the request, so reusing an Idempotency-Key with a different rank is refused. If the chart already has this payer with the same member id, nothing is written and alreadyOnChart is true: the response describes that policy as the EHR holds it, and any change to it is made in the EHR. Otherwise a new policy is added. The response is built from the EHR's own copy of the policy, read back after the write, so payerId confirms the payer the EHR holds — if that read-back does not confirm it the request fails with 409 ehr_write_uncertain. A server without this endpoint answers 404 without writing, so a client never silently falls back to a name search during a deploy. Same Idempotency-Key contract as POST /patients/{id}/insurance.\",\"url\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.maxcare.ai/api-reference/v2/patients/attach-insurance-with-an-exact-payer#webpage\"},\"dateModified\":\"2026-11-06T15:43:53.455Z\",\"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","pages":[{"title":"Guides","href":"/guides"}]},{"tab":"API Reference","versions":[{"version":"v4","tag":"Latest","pages":[{"title":"v4","href":"/api-reference/v4/patients/attach-insurance-with-an-exact-payer"}]},{"version":"v3","pages":[{"title":"v3","href":"/api-reference/v3/patients/attach-insurance-with-an-exact-payer"}]},{"version":"v2","groups":[{"group":"API Reference","pages":[{"group":"Appointment Types","pages":[{"title":"List appointment types","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /appointment-types","href":"/api-reference/v2/appointment-types/list-appointment-types"}]},{"group":"Appointments","pages":[{"title":"List appointments","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /appointments","href":"/api-reference/v2/appointments/list-appointments"},{"title":"Book an appointment","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /appointments","href":"/api-reference/v2/appointments/book-an-appointment"},{"title":"List cancellation reasons","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /appointments/cancel-reasons","href":"/api-reference/v2/appointments/list-cancellation-reasons"},{"title":"List appointment statuses","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /appointments/statuses","href":"/api-reference/v2/appointments/list-appointment-statuses"},{"title":"Get appointment by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /appointments/{id}","href":"/api-reference/v2/appointments/get-appointment-by-id"},{"title":"Reschedule an appointment","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /appointments/{id}","href":"/api-reference/v2/appointments/reschedule-an-appointment"},{"title":"Cancel an appointment","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /appointments/{id}/cancel","href":"/api-reference/v2/appointments/cancel-an-appointment"}]},{"group":"Bills","pages":[{"title":"List bills","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /bills","href":"/api-reference/v2/bills/list-bills"},{"title":"Get bill by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /bills/{id}","href":"/api-reference/v2/bills/get-bill-by-id"}]},{"group":"Cancel Reasons","pages":[{"title":"List appointment cancellation reasons","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /cancel-reasons","href":"/api-reference/v2/cancel-reasons/list-appointment-cancellation-reasons"}]},{"group":"Claims","pages":[{"title":"List claims","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /claims","href":"/api-reference/v2/claims/list-claims"},{"title":"Get claim by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /claims/{id}","href":"/api-reference/v2/claims/get-claim-by-id"}]},{"group":"Patients","pages":[{"title":"Where each document category is filed","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /documents/categories","href":"/api-reference/v2/patients/where-each-document-category-is-filed"},{"title":"List patients","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients","href":"/api-reference/v2/patients/list-patients"},{"title":"Create a patient","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients","href":"/api-reference/v2/patients/create-a-patient"},{"title":"Match a patient by demographics","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/match","href":"/api-reference/v2/patients/match-a-patient-by-demographics"},{"title":"Get patient by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients/{id}","href":"/api-reference/v2/patients/get-patient-by-id"},{"title":"Update a patient","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /patients/{id}","href":"/api-reference/v2/patients/update-a-patient"},{"title":"List a patient's allergies","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients/{id}/allergies","href":"/api-reference/v2/patients/list-a-patients-allergies"},{"title":"List a patient's chart documents","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients/{id}/documents","href":"/api-reference/v2/patients/list-a-patients-chart-documents"},{"title":"File a document on a patient's chart","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/documents","href":"/api-reference/v2/patients/file-a-document-on-a-patients-chart"},{"title":"Refresh a patient's chart-document list","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/documents/refresh","href":"/api-reference/v2/patients/refresh-a-patients-chart-document-list"},{"title":"Download one chart document's bytes","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients/{id}/documents/{documentId}/content","href":"/api-reference/v2/patients/download-one-chart-documents-bytes"},{"title":"Pull one chart document's bytes from the EHR","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/documents/{documentId}/fetch","href":"/api-reference/v2/patients/pull-one-chart-documents-bytes-from-the-ehr"},{"title":"Attach insurance to an existing patient","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/insurance","href":"/api-reference/v2/patients/attach-insurance-to-an-existing-patient"},{"title":"Attach an insurance card image","description":"Multipart upload of one side of an insurance card, filed against the patient's coverage in the EHR. The vendor mechanics differ and are absorbed here: ModMed fills the POLICY's own card slots (so the coverage must exist first — otherwise 404 `insurance_not_found`), while other EHRs file a typed chart document. Accepts PNG, JPEG, WEBP or HEIC up to 10 MB. The declared content type is treated as a hint only — the BYTES are sniffed, and a mismatch is rejected with 415 `unsupported_media_type`. No durable copy is kept on our side: the bytes are held in memory for the request, pushed to the EHR, and dropped. Nothing is written to storage, and the request body is not logged. Because there is no stored copy there is also NO RETRY on our side — if the attachment fails, re-upload. The platform does NOT strip EXIF metadata or run malware scanning — a phone photo can carry GPS coordinates, so do both before uploading.","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/insurance/cards","href":"/api-reference/v2/patients/attach-an-insurance-card-image"},{"title":"Attach insurance with an exact payer","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /patients/{id}/insurance:exact","href":"/api-reference/v2/patients/attach-insurance-with-an-exact-payer"},{"title":"List a patient's lab / pathology results","description":"Returns structured lab and pathology results for the patient — the typed source for a TB-test date and result, reachable without parsing an untyped SOAP note. Filter with `testName`. Requires read:clinical_data scope.","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /patients/{id}/lab-results","href":"/api-reference/v2/patients/list-a-patients-lab-pathology-results"},{"title":"Set a patient's referring provider","deprecated":null,"version":null,"openapi":"/openapi-v2.json put /patients/{id}/referring-provider","href":"/api-reference/v2/patients/set-a-patients-referring-provider"},{"title":"Change an insurance policy's type","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /patients/{patientId}/insurance-policies/{policyId}","href":"/api-reference/v2/patients/change-an-insurance-policys-type"}]},{"group":"Eligibility Checks","pages":[{"title":"List eligibility checks","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /eligibility-checks","href":"/api-reference/v2/eligibility-checks/list-eligibility-checks"},{"title":"Run an eligibility check","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /eligibility-checks","href":"/api-reference/v2/eligibility-checks/run-an-eligibility-check"},{"title":"Get eligibility check by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /eligibility-checks/{id}","href":"/api-reference/v2/eligibility-checks/get-eligibility-check-by-id"}]},{"group":"Emails","pages":[{"title":"List sent emails","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /emails","href":"/api-reference/v2/emails/list-sent-emails"},{"title":"Send emails","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /emails/send","href":"/api-reference/v2/emails/send-emails"},{"title":"Get email by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /emails/{id}","href":"/api-reference/v2/emails/get-email-by-id"}]},{"group":"ERA Service Lines","pages":[{"title":"List ERA service lines","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /era-service-lines","href":"/api-reference/v2/era-service-lines/list-era-service-lines"},{"title":"Get ERA service line by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /era-service-lines/{id}","href":"/api-reference/v2/era-service-lines/get-era-service-line-by-id"}]},{"group":"Facilities","pages":[{"title":"List facilities","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /facilities","href":"/api-reference/v2/facilities/list-facilities"},{"title":"Get facility by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /facilities/{id}","href":"/api-reference/v2/facilities/get-facility-by-id"}]},{"group":"Faxes","pages":[{"title":"List faxes","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /faxes","href":"/api-reference/v2/faxes/list-faxes"},{"title":"Send a fax","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /faxes/send","href":"/api-reference/v2/faxes/send-a-fax"},{"title":"List fax cover-page templates","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /faxes/templates","href":"/api-reference/v2/faxes/list-fax-cover-page-templates"},{"title":"Get fax by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /faxes/{id}","href":"/api-reference/v2/faxes/get-fax-by-id"}]},{"group":"Insurance Policies","pages":[{"title":"List insurance policies","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /insurance-policies","href":"/api-reference/v2/insurance-policies/list-insurance-policies"},{"title":"Get insurance policy by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /insurance-policies/{id}","href":"/api-reference/v2/insurance-policies/get-insurance-policy-by-id"},{"title":"List a policy's insurance card images","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /insurance-policies/{id}/attachments","href":"/api-reference/v2/insurance-policies/list-a-policys-insurance-card-images"}]},{"group":"Inventory","pages":[{"title":"List inventory changes","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/changes","href":"/api-reference/v2/inventory/list-inventory-changes"},{"title":"Get inventory change by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/changes/{id}","href":"/api-reference/v2/inventory/get-inventory-change-by-id"},{"title":"List products in an inventory change","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/changes/{id}/products","href":"/api-reference/v2/inventory/list-products-in-an-inventory-change"},{"title":"List products","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/products","href":"/api-reference/v2/inventory/list-products"},{"title":"Get product by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/products/{id}","href":"/api-reference/v2/inventory/get-product-by-id"},{"title":"Get stock levels","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/stock-levels","href":"/api-reference/v2/inventory/get-stock-levels"},{"title":"Get stock levels with per-lot breakdown","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /inventory/stock-levels/detail","href":"/api-reference/v2/inventory/get-stock-levels-with-per-lot-breakdown"}]},{"group":"Marketplace","pages":[{"title":"List this app's installations","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /marketplace/installations","href":"/api-reference/v2/marketplace/list-this-apps-installations"},{"title":"Get current app context","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /marketplace/me","href":"/api-reference/v2/marketplace/get-current-app-context"},{"title":"List the organization's members","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /marketplace/members","href":"/api-reference/v2/marketplace/list-the-organizations-members"},{"title":"Verify a session token and resolve its organization","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /marketplace/verify-session","href":"/api-reference/v2/marketplace/verify-a-session-token-and-resolve-its-organization"}]},{"group":"Notes","pages":[{"title":"List patient notes","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /notes","href":"/api-reference/v2/notes/list-patient-notes"},{"title":"Get note by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /notes/{id}","href":"/api-reference/v2/notes/get-note-by-id"},{"title":"Edit SOAP note fields","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /notes/{noteId}","href":"/api-reference/v2/notes/edit-soap-note-fields"},{"title":"Upload image to note","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /notes/{noteId}/images","href":"/api-reference/v2/notes/upload-image-to-note"},{"title":"Delete image from note","deprecated":null,"version":null,"openapi":"/openapi-v2.json delete /notes/{noteId}/images/{imageId}","href":"/api-reference/v2/notes/delete-image-from-note"},{"title":"Get signed URL for a note image","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /notes/{noteId}/images/{imageId}/url","href":"/api-reference/v2/notes/get-signed-url-for-a-note-image"},{"title":"Edit impression fields","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /notes/{noteId}/impressions/{impressionId}","href":"/api-reference/v2/notes/edit-impression-fields"}]},{"group":"OAuth","pages":[{"title":"Exchange authorization code for user info","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /oauth/token","href":"/api-reference/v2/oauth/exchange-authorization-code-for-user-info"}]},{"group":"Organization","pages":[{"title":"List the organization's members","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /org/members","href":"/api-reference/v2/organization/list-the-organizations-members"}]},{"group":"Payers","pages":[{"title":"Search payers","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /payers","href":"/api-reference/v2/payers/search-payers"},{"title":"Add a directory payer to the practice","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /payers","href":"/api-reference/v2/payers/add-a-directory-payer-to-the-practice"},{"title":"Payer capabilities","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /payers/capabilities","href":"/api-reference/v2/payers/payer-capabilities"},{"title":"Search the EHR's national payer directory","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /payers/directory","href":"/api-reference/v2/payers/search-the-ehrs-national-payer-directory"},{"title":"Get payer by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /payers/{id}","href":"/api-reference/v2/payers/get-payer-by-id"}]},{"group":"Phone Numbers","pages":[{"title":"List organization phone numbers","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /phone-numbers","href":"/api-reference/v2/phone-numbers/list-organization-phone-numbers"}]},{"group":"Prior Authorizations","pages":[{"title":"List prior authorizations","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /prior-authorizations","href":"/api-reference/v2/prior-authorizations/list-prior-authorizations"},{"title":"Get prior authorization by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /prior-authorizations/{id}","href":"/api-reference/v2/prior-authorizations/get-prior-authorization-by-id"},{"title":"List source documents for a prior authorization","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /prior-authorizations/{id}/documents","href":"/api-reference/v2/prior-authorizations/list-source-documents-for-a-prior-authorization"}]},{"group":"Providers","pages":[{"title":"List providers","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /providers","href":"/api-reference/v2/providers/list-providers"},{"title":"Get provider by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /providers/{id}","href":"/api-reference/v2/providers/get-provider-by-id"}]},{"group":"Schedule","pages":[{"title":"List appointment types","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/appointment-types","href":"/api-reference/v2/schedule/list-appointment-types"},{"title":"List availability templates","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/availability-templates","href":"/api-reference/v2/schedule/list-availability-templates"},{"title":"List calendar events","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/calendar-events","href":"/api-reference/v2/schedule/list-calendar-events"},{"title":"What this organization's EHR supports","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/capabilities","href":"/api-reference/v2/schedule/what-this-organizations-ehr-supports"},{"title":"Search the EHR's appointment finder","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/finder","href":"/api-reference/v2/schedule/search-the-ehrs-appointment-finder"},{"title":"Providers and facilities that take an appointment type","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/finder/provider-locations","href":"/api-reference/v2/schedule/providers-and-facilities-that-take-an-appointment-type"},{"title":"Hold a slot","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /schedule/holds","href":"/api-reference/v2/schedule/hold-a-slot"},{"title":"Release a slot hold","deprecated":null,"version":null,"openapi":"/openapi-v2.json delete /schedule/holds/{holdId}","href":"/api-reference/v2/schedule/release-a-slot-hold"},{"title":"Find bookable slots","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /schedule/slots","href":"/api-reference/v2/schedule/find-bookable-slots"},{"title":"List visit reasons","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /visit-reasons","href":"/api-reference/v2/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-v2.json post /sync-requests","href":"/api-reference/v2/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-v2.json post /sync-requests/batch","href":"/api-reference/v2/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-v2.json get /sync-requests/{id}","href":"/api-reference/v2/sync-requests/get-a-sync-request-by-id"}]},{"group":"Tasks","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /tasks","href":"/api-reference/v2/tasks/list-tasks"},{"title":"Create a task","deprecated":null,"version":null,"openapi":"/openapi-v2.json post /tasks","href":"/api-reference/v2/tasks/create-a-task"},{"title":"List task assignee groups","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /tasks/assignee-groups","href":"/api-reference/v2/tasks/list-task-assignee-groups"},{"title":"List task assignees","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /tasks/assignees","href":"/api-reference/v2/tasks/list-task-assignees"},{"title":"Task capabilities","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /tasks/capabilities","href":"/api-reference/v2/tasks/task-capabilities"},{"title":"Get task by ID","deprecated":null,"version":null,"openapi":"/openapi-v2.json get /tasks/{id}","href":"/api-reference/v2/tasks/get-task-by-id"},{"title":"Update task status","deprecated":null,"version":null,"openapi":"/openapi-v2.json patch /tasks/{id}","href":"/api-reference/v2/tasks/update-task-status"}]}]}]},{"version":"v1","pages":[{"title":"v1","href":"/api-reference/v1/patients/attach-insurance-with-an-exact-payer"}]}]}]},"basePath":"","title":"Attach insurance with an exact payer - Max AI Developer Docs","buildId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","deploymentId":"dpl_8LJbrAiZvr1K98WQNZXCyY5AvT34","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-i2a3QZ8E.js","utils-ChLwp8m0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DRktVTDc.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CA2pEs4T.js","snippetPresets-ClQ6XrKD.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-Ct_Lv36y.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-Cn2PYw9e.js","shallow-rkyymjXQ.js","getApiPlaygroundDisplay-BB9vkXtE.js","CodeSnippet-Bm5RU7m1.js","CodeSnippets-BgU9Deuz.js","Page-BUDYNlhG.js","getPastedJson-BD-6NNum.js","icon-8Z6tud2e.js","MethodPill-Tuzr4g3V.js","DuplicateIcon-0ceWFYhN.js","createIcon-FBXow_ST.js","DynamicMarkdown-CD8713Yy.js","SectionHeading-7zgzQbH-.js","axios-vUo_bRtp.js","Markdown-D7Ofw1oz.js","clsx-eKJ4rcii.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CwjSCXIK.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-9EK5IAXV.js"]}