Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id
is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and
prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele
clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite.
The response id is the VitaRelay id to store in your CRM.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"VitaRelay","colors":{"primary":"#2266E6","light":"#4DA6FF","dark":"#071B3A"},"logo":{"light":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047","dark":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo-light.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=840ddd8ffac0c531b6eeff031de0f833"},"favicon":"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047","api":{"openapi":"openapi.yaml","playground":{"display":"interactive"},"mdx":{"auth":{"method":"bearer","name":"Authorization"},"server":"https://vitarelay.com/api/public/v1"}},"navbar":{"links":[],"primary":{"type":"button","label":"Book a Call","href":"https://vitarelay.com/contact"}},"footer":{"socials":{"website":"https://vitarelay.com"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vitarelay","hasAudioNarration":false,"actualSubdomain":"vitarelay","customDomains":["api.vitarelay.com"],"gitSource":{"type":"github","owner":"pet3r96","repo":"vr-main","deployBranch":"main","contentDirectory":"docs/vitarelay-docs","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6af62992fc4ef25324e97a40","clientVersion":"0.0.4117","searchFilterCounts":[{"language":"default","tag":"Documentation","count":127},{"language":"default","tag":"API Reference","count":97},{"language":"default","tag":"VitaClinic API","count":77},{"language":"default","tag":"Pharmacy API","count":25},{"language":"default","tag":"Partner API","count":20},{"language":"default","tag":"Getting Started","count":17},{"language":"default","tag":"Patients","count":13},{"language":"default","tag":"Customers API Reference","count":10},{"language":"default","tag":"Inventory API Reference","count":10},{"language":"default","tag":"Orders","count":8}]},"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":"custom-rbac-roles","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":"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":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/create-or-update-a-provider","slug":"/api-reference/create-or-update-a-provider","pageMetadata":{"title":"Create or update a provider","description":"Scope `customers:write`. Creates the provider (201) with its portal invite, or updates it (200) when `external_id`\nis already known. The provider is validated like one added by hand: a valid address, phone and contact email, and\nprescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele\nclinic that uses the doctor network. Set `send_invite` to `false` to create it without emailing the invite.\nThe response `id` is the VitaRelay id to store in your CRM.\n","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml post /customers","href":"/api-reference/create-or-update-a-provider","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: [\"Scope \", _jsx(_components.code, {\n children: \"customers:write\"\n }), \". Creates the provider (201) with its portal invite, or updates it (200) when \", _jsx(_components.code, {\n children: \"external_id\"\n }), \"\\nis already known. The provider is validated like one added by hand: a valid address, phone and contact email, and\\nprescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele\\nclinic that uses the doctor network. Set \", _jsx(_components.code, {\n children: \"send_invite\"\n }), \" to \", _jsx(_components.code, {\n children: \"false\"\n }), \" to create it without emailing the invite.\\nThe response \", _jsx(_components.code, {\n children: \"id\"\n }), \" is the VitaRelay id to store in your CRM.\"]\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":"Create or update a provider","description":"Scope `customers:write`. Creates the provider (201) with its portal invite, or updates it (200) when `external_id`\nis already known. The provider is validated like one added by hand: a valid address, phone and contact email, and\nprescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele\nclinic that uses the doctor network. Set `send_invite` to `false` to create it without emailing the invite.\nThe response `id` is the VitaRelay id to store in your CRM.\n","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml post /customers","href":"/api-reference/create-or-update-a-provider","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"summary":"Create or update a provider","description":"Scope `customers:write`. Creates the provider (201) with its portal invite, or updates it (200) when `external_id`\nis already known. The provider is validated like one added by hand: a valid address, phone and contact email, and\nprescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele\nclinic that uses the doctor network. Set `send_invite` to `false` to create it without emailing the invite.\nThe response `id` is the VitaRelay id to store in your CRM.\n","requestBody":"ed7ba92f-2386-41ec-8107-9580b724a7d8","responses":{"200":"789f86db-1b68-4ac0-bf9e-baf17f1c2d95","201":"df707275-8add-4082-a471-b89e2ce49d50","409":"355398c0-80c4-489e-b91f-462f9e567a6b","422":"6fce64d8-a30f-4a04-a62f-2790a42be3e8"},"method":"post","type":"path","servers":["58f805dd-eece-4dfd-95c4-5ab06fd9d656"],"security":["36a0a2df-1c48-4099-ac68-cd0cd087d25a"],"path":"/customers","baseUrlOptions":["https://vitarelay.com/api/public/v1"],"title":"Create or update a provider","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["external_id","name","contact","address"],"properties":{"external_id":{"type":"string","description":"Your CRM's id for the provider (the GoHighLevel contact id).","isRequired":true,"uniqueKey":"external_id","typeLabel":"string"},"name":{"type":"string","description":"The clinic or practice name.","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"contact":{"type":"object","required":["email"],"properties":{"email":{"type":"string","format":"email","isRequired":true,"uniqueKey":"contact.email","typeLabel":"string\u003cemail>"},"first_name":{"type":"string","uniqueKey":"contact.first_name","typeLabel":"string"},"last_name":{"type":"string","uniqueKey":"contact.last_name","typeLabel":"string"},"phone":{"type":"string","uniqueKey":"contact.phone","typeLabel":"string"}},"isRequired":true,"uniqueKey":"contact","typeLabel":"object"},"address":{"type":"object","required":["line1","city","state","zip"],"properties":{"line1":{"type":"string","isRequired":true,"uniqueKey":"address.line1","typeLabel":"string"},"city":{"type":"string","isRequired":true,"uniqueKey":"address.city","typeLabel":"string"},"state":{"type":"string","description":"Two-letter state.","isRequired":true,"uniqueKey":"address.state","typeLabel":"string"},"zip":{"type":"string","isRequired":true,"uniqueKey":"address.zip","typeLabel":"string"},"line2":{"type":"string","uniqueKey":"address.line2","typeLabel":"string"}},"isRequired":true,"uniqueKey":"address","typeLabel":"object"},"phone":{"type":"string","description":"The clinic's phone. Defaults to the contact's phone.","uniqueKey":"phone","typeLabel":"string"},"prescribers":{"type":"array","items":{"type":"object","required":["full_name","specialty","npi_number","license_state","license_number"],"properties":{"full_name":{"type":"string","isRequired":true,"uniqueKey":"prescribers.items.[INDEX].full_name","typeLabel":"string"},"specialty":{"type":"string","isRequired":true,"uniqueKey":"prescribers.items.[INDEX].specialty","typeLabel":"string"},"npi_number":{"type":"string","isRequired":true,"uniqueKey":"prescribers.items.[INDEX].npi_number","typeLabel":"string"},"license_state":{"type":"string","isRequired":true,"uniqueKey":"prescribers.items.[INDEX].license_state","typeLabel":"string"},"license_number":{"type":"string","isRequired":true,"uniqueKey":"prescribers.items.[INDEX].license_number","typeLabel":"string"},"can_prescribe_controlled":{"type":"boolean","uniqueKey":"prescribers.items.[INDEX].can_prescribe_controlled","typeLabel":"boolean"},"dea_number":{"type":"string","uniqueKey":"prescribers.items.[INDEX].dea_number","typeLabel":"string"}},"uniqueKey":"prescribers.items.[INDEX]","typeLabel":"object"},"uniqueKey":"prescribers","typeLabel":"object[]"},"consent":{"type":"object","properties":{"sms":{"type":"object","required":["granted"],"properties":{"granted":{"type":"boolean","isRequired":true,"uniqueKey":"consent.sms.granted","typeLabel":"boolean"},"at":{"type":"string","format":"date-time","description":"When consent was given. Defaults to now.","uniqueKey":"consent.sms.at","typeLabel":"string\u003cdate-time>"},"source":{"type":"string","uniqueKey":"consent.sms.source","typeLabel":"string"}},"uniqueKey":"consent.sms","typeLabel":"object"},"email":{"type":"object","required":["granted"],"properties":{"granted":{"type":"boolean","isRequired":true,"uniqueKey":"consent.email.granted","typeLabel":"boolean"},"at":{"type":"string","format":"date-time","description":"When consent was given. Defaults to now.","uniqueKey":"consent.email.at","typeLabel":"string\u003cdate-time>"},"source":{"type":"string","uniqueKey":"consent.email.source","typeLabel":"string"}},"uniqueKey":"consent.email","typeLabel":"object"}},"uniqueKey":"consent","typeLabel":"object"},"attribution":{"type":"object","additionalProperties":{"type":"string","uniqueKey":"attribution.additionalProperties","typeLabel":"string"},"description":"Free-form source details","up to 20 fields.":null,"uniqueKey":"attribution","typeLabel":"object"},"booking_ref":{"type":"string","uniqueKey":"booking_ref","typeLabel":"string"},"send_invite":{"type":"boolean","default":true,"uniqueKey":"send_invite","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"example":{"external_id":"ghl-contact-4471","name":"Jason Meds","contact":{"first_name":"Jason","last_name":"Tests","email":"owner@jasonmeds.com","phone":"(229) 719-4222"},"address":{"line1":"12 Main St","city":"Albany","state":"GA","zip":"31701"},"consent":{"sms":{"granted":true,"at":"2026-10-19T14:02:00Z","source":"ghl-form"},"email":{"granted":true}},"attribution":{"source":"facebook","campaign":"oct-launch"},"booking_ref":"bk_90812"},"examples":{"Example":{"title":"Example","value":{"external_id":"ghl-contact-4471","name":"Jason Meds","contact":{"first_name":"Jason","last_name":"Tests","email":"owner@jasonmeds.com","phone":"(229) 719-4222"},"address":{"line1":"12 Main St","city":"Albany","state":"GA","zip":"31701"},"consent":{"sms":{"granted":true,"at":"2026-10-19T14:02:00Z","source":"ghl-form"},"email":{"granted":true}},"attribution":{"source":"facebook","campaign":"oct-launch"},"booking_ref":"bk_90812"}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"789f86db-1b68-4ac0-bf9e-baf17f1c2d95":{"description":"Updated (the external_id was already known)","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"external_id":{"oneOf":[{"type":"string","uniqueKey":"data.external_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.external_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.external_id","typeLabel":"string | null"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"kind":{"type":"string","enum":["practice","tele_clinic"],"uniqueKey":"data.kind","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["invited","active","archived"],"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"signup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","accepted"],"uniqueKey":"data.signup.status","typeLabel":"enum\u003cstring>"},"invite_emailed":{"type":"boolean","uniqueKey":"data.signup.invite_emailed","typeLabel":"boolean"}},"uniqueKey":"data.signup","typeLabel":"object"},"contact":{"type":"object","uniqueKey":"data.contact","typeLabel":"object"},"address":{"type":"object","uniqueKey":"data.address","typeLabel":"object"},"prescribers":{"type":"integer","uniqueKey":"data.prescribers","typeLabel":"integer"},"consent":{"type":"object","uniqueKey":"data.consent","typeLabel":"object"},"attribution":{"oneOf":[{"type":"object","uniqueKey":"data.attribution.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.attribution","typeLabel":"object | null"},"booking_ref":{"oneOf":[{"type":"string","uniqueKey":"data.booking_ref.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.booking_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booking_ref","typeLabel":"string | null"},"orders":{"type":"object","description":"count, last_order_id, last_order_number, last_order_at, last_order_total_cents","uniqueKey":"data.orders","typeLabel":"object"},"days_since_last_order":{"oneOf":[{"type":"integer","uniqueKey":"data.days_since_last_order.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.days_since_last_order.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.days_since_last_order","typeLabel":"integer | null"},"lifecycle_status":{"type":"string","enum":["never_ordered","active","reorder_due","lapsed"],"uniqueKey":"data.lifecycle_status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data","typeLabel":"object"},"created":{"type":"boolean","uniqueKey":"created","typeLabel":"boolean"},"invite_emailed":{"type":"boolean","uniqueKey":"invite_emailed","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","external_id":"\u003cstring>","name":"\u003cstring>","kind":"practice","status":"invited","signup":{"status":"pending","invite_emailed":true},"contact":{},"address":{},"prescribers":123,"consent":{},"attribution":{},"booking_ref":"\u003cstring>","orders":{},"days_since_last_order":123,"lifecycle_status":"never_ordered","created_at":"2023-11-07T05:31:56Z"},"created":true,"invite_emailed":true}}},"exampleType":"generated"}},"exampleType":"generated"},"df707275-8add-4082-a471-b89e2ce49d50":{"description":"Created","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"string","format":"uuid","uniqueKey":"data.id","typeLabel":"string\u003cuuid>"},"external_id":{"oneOf":[{"type":"string","uniqueKey":"data.external_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.external_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.external_id","typeLabel":"string | null"},"name":{"type":"string","uniqueKey":"data.name","typeLabel":"string"},"kind":{"type":"string","enum":["practice","tele_clinic"],"uniqueKey":"data.kind","typeLabel":"enum\u003cstring>"},"status":{"type":"string","enum":["invited","active","archived"],"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"},"signup":{"type":"object","properties":{"status":{"type":"string","enum":["pending","accepted"],"uniqueKey":"data.signup.status","typeLabel":"enum\u003cstring>"},"invite_emailed":{"type":"boolean","uniqueKey":"data.signup.invite_emailed","typeLabel":"boolean"}},"uniqueKey":"data.signup","typeLabel":"object"},"contact":{"type":"object","uniqueKey":"data.contact","typeLabel":"object"},"address":{"type":"object","uniqueKey":"data.address","typeLabel":"object"},"prescribers":{"type":"integer","uniqueKey":"data.prescribers","typeLabel":"integer"},"consent":{"type":"object","uniqueKey":"data.consent","typeLabel":"object"},"attribution":{"oneOf":[{"type":"object","uniqueKey":"data.attribution.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"data.attribution.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.attribution","typeLabel":"object | null"},"booking_ref":{"oneOf":[{"type":"string","uniqueKey":"data.booking_ref.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"data.booking_ref.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.booking_ref","typeLabel":"string | null"},"orders":{"type":"object","description":"count, last_order_id, last_order_number, last_order_at, last_order_total_cents","uniqueKey":"data.orders","typeLabel":"object"},"days_since_last_order":{"oneOf":[{"type":"integer","uniqueKey":"data.days_since_last_order.oneOf.0","typeLabel":"integer"},{"type":"null","uniqueKey":"data.days_since_last_order.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.days_since_last_order","typeLabel":"integer | null"},"lifecycle_status":{"type":"string","enum":["never_ordered","active","reorder_due","lapsed"],"uniqueKey":"data.lifecycle_status","typeLabel":"enum\u003cstring>"},"created_at":{"type":"string","format":"date-time","uniqueKey":"data.created_at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"data","typeLabel":"object"},"created":{"type":"boolean","uniqueKey":"created","typeLabel":"boolean"},"invite_emailed":{"type":"boolean","uniqueKey":"invite_emailed","typeLabel":"boolean"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"data":{"id":"3c90c3cc-0d44-4b50-8888-8dd25736052a","external_id":"\u003cstring>","name":"\u003cstring>","kind":"practice","status":"invited","signup":{"status":"pending","invite_emailed":true},"contact":{},"address":{},"prescribers":123,"consent":{},"attribution":{},"booking_ref":"\u003cstring>","orders":{},"days_since_last_order":123,"lifecycle_status":"never_ordered","created_at":"2023-11-07T05:31:56Z"},"created":true,"invite_emailed":true}}},"exampleType":"generated"}},"exampleType":"generated"},"355398c0-80c4-489e-b91f-462f9e567a6b":{"description":"The contact email already has an account or a pending invitation (`duplicate_request`)","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"6fce64d8-a30f-4a04-a62f-2790a42be3e8":{"description":"A field failed validation (`validation_failed`)","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"36a0a2df-1c48-4099-ac68-cd0cd087d25a":{"bearer":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearer"}}},"servers":{"58f805dd-eece-4dfd-95c4-5ab06fd9d656":{"url":"https://vitarelay.com/api/public/v1","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","scopes":[],"schemeName":"bearer"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer","name":"Authorization"}],"title":"bearer"}]},"originalFileLocation":"pharmacy-api/customers-openapi.yaml"},"subdomain":"vitarelay","siteName":"VitaRelay","title":"Create or update a provider - VitaRelay","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T21:03:24.040Z","originalFileLocation":"api-reference/create-or-update-a-provider.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=\"Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite. The response id is the VitaRelay id to store in your CRM.\">\u003cmeta data-mint-head name=\"application-name\" content=\"VitaRelay\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/png\" href=\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026amp;auto=format\u0026amp;n=WXEmFrJi4K7tSXcf\u0026amp;q=85\u0026amp;s=dad2bdd7a33cbbcf4acf3c514efe4047\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create or update a provider - VitaRelay\">\u003cmeta data-mint-head property=\"og:description\" content=\"Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite. The response id is the VitaRelay id to store in your CRM.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"VitaRelay\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://api.vitarelay.com/api-reference/create-or-update-a-provider\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://vitarelay.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Create+or+update+a+provider\u0026amp;description=Scope+%60customers%3Awrite%60.+Creates+the+provider+%28201%29+with+its+portal+invite%2C+or+updates+it+%28200%29+when+%60external_id%60%0Ais+already+known.+The+provider+is+validated+l\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=40d541304e01418a750f8a0a6f4714991367d5286502f61acfb35ea3377f5c15\">\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=\"Create or update a provider - VitaRelay\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite. The response id is the VitaRelay id to store in your CRM.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://vitarelay.mintlify.site/_mintlify/api/og/v2?division=API+Reference\u0026amp;title=Create+or+update+a+provider\u0026amp;description=Scope+%60customers%3Awrite%60.+Creates+the+provider+%28201%29+with+its+portal+invite%2C+or+updates+it+%28200%29+when+%60external_id%60%0Ais+already+known.+The+provider+is+validated+l\u0026amp;theme=8c0b6cf4340b31a0a73d3428\u0026amp;signature=40d541304e01418a750f8a0a6f4714991367d5286502f61acfb35ea3377f5c15\">\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=\"https://mintlify.s3.us-west-1.amazonaws.com/vitarelay/_generated/favicon/browserconfig.xml?v=3\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"VitaRelay\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2266E6\">\u003clink data-mint-head rel=\"canonical\" href=\"https://api.vitarelay.com/api-reference/create-or-update-a-provider\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/create-or-update-a-provider.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://api.vitarelay.com/#organization\",\"name\":\"VitaRelay\",\"url\":\"https://api.vitarelay.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vitarelay/WXEmFrJi4K7tSXcf/logo/vitarelay-logo.png?fit=max\u0026auto=format\u0026n=WXEmFrJi4K7tSXcf\u0026q=85\u0026s=dad2bdd7a33cbbcf4acf3c514efe4047\"}},{\"@type\":\"WebSite\",\"@id\":\"https://api.vitarelay.com#website\",\"name\":\"VitaRelay\",\"url\":\"https://api.vitarelay.com\",\"publisher\":{\"@id\":\"https://api.vitarelay.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider#webpage\",\"url\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider\",\"name\":\"Create or update a provider\",\"description\":\"Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite. The response id is the VitaRelay id to store in your CRM.\",\"dateModified\":\"2026-11-12T21:03:24.040Z\",\"isPartOf\":{\"@id\":\"https://api.vitarelay.com#website\"},\"breadcrumb\":{\"@id\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Customers API Reference\",\"item\":\"https://api.vitarelay.com/api-reference/list-your-providers\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"API Reference\",\"item\":\"https://api.vitarelay.com/api-reference/list-your-providers\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create or update a provider\",\"item\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider#apireference\",\"headline\":\"Create or update a provider\",\"name\":\"Create or update a provider\",\"description\":\"Scope customers:write. Creates the provider (201) with its portal invite, or updates it (200) when external_id is already known. The provider is validated like one added by hand: a valid address, phone and contact email, and prescribers (NPI, state license, DEA for controlled substances) when it has any. Without prescribers it is a tele clinic that uses the doctor network. Set send_invite to false to create it without emailing the invite. The response id is the VitaRelay id to store in your CRM.\",\"url\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider\",\"mainEntityOfPage\":{\"@id\":\"https://api.vitarelay.com/api-reference/create-or-update-a-provider#webpage\"},\"dateModified\":\"2026-11-12T21:03:24.040Z\",\"publisher\":{\"@id\":\"https://api.vitarelay.com/#organization\"},\"isPartOf\":{\"@id\":\"https://api.vitarelay.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"VitaRelay\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"VitaRelay\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/create-or-update-a-provider.md","siteName":"VitaRelay","nav":{"global":null,"anchors":[{"anchor":"Documentation","icon":"book-open","tabs":[{"tab":"VitaClinic API","icon":"hospital","pages":[{"title":"VitaClinic API","href":"/getting-started/overview"}]},{"tab":"Pharmacy API","icon":"prescription-bottle-medical","groups":[{"group":"Getting Started","pages":[{"title":"Pharmacy API overview","href":"/pharmacy-api/overview"}]},{"group":"Pharmacy Integration","pages":[{"title":"Pharmacy Integration","href":"/guides/pharmacy-integration"}]},{"group":"API Reference","pages":[{"group":"Fulfillment","pages":[{"title":"Push a status or inventory update","deprecated":null,"version":null,"openapi":"/pharmacy-api/openapi.yaml post /pharmacy-webhook/{orgId}","href":"/api-reference/fulfillment/push-a-status-or-inventory-update"}]}]},{"group":"Inventory API","pages":[{"title":"Inventory API","href":"/pharmacy-api/inventory"}]},{"group":"Inventory API Reference","pages":[{"group":"API Reference","pages":[{"title":"List SKUs","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml get /inventory/skus","href":"/api-reference/list-skus"},{"title":"On hand and available by SKU","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml get /inventory/stock","href":"/api-reference/on-hand-and-available-by-sku"},{"title":"Resolve a scanned string","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml post /inventory/scan/resolve","href":"/api-reference/resolve-a-scanned-string"},{"title":"Post a movement","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml post /inventory/movements","href":"/api-reference/post-a-movement"},{"title":"Reserve stock for an order","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml post /inventory/allocations","href":"/api-reference/reserve-stock-for-an-order"},{"title":"Release a reservation","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml delete /inventory/allocations","href":"/api-reference/release-a-reservation"},{"title":"The ledger","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml get /inventory/transactions","href":"/api-reference/the-ledger"},{"title":"List webhook endpoints","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml get /inventory/webhooks","href":"/api-reference/list-webhook-endpoints"},{"title":"Create a webhook endpoint","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml post /inventory/webhooks","href":"/api-reference/create-a-webhook-endpoint"},{"title":"Delete a webhook endpoint","deprecated":null,"version":null,"openapi":"/pharmacy-api/inventory-openapi.yaml delete /inventory/webhooks","href":"/api-reference/delete-a-webhook-endpoint"}]}]},{"group":"Customers API (CRM)","pages":[{"title":"Customers API (CRM)","href":"/pharmacy-api/customers"}]},{"group":"Customers API Reference","pages":[{"group":"API Reference","pages":[{"title":"List your providers","description":"Scope `customers:read`. Filter with `external_id` or `email`; page with `limit` (up to 100) and `cursor`.\nEach provider carries its signup state, contact, address, consent, attribution, booking reference, last order and\n`lifecycle_status` (`never_ordered`, `active`, `reorder_due`, `lapsed`).\n","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml get /customers","href":"/api-reference/list-your-providers"},{"title":"Create or update a provider","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml post /customers","href":"/api-reference/create-or-update-a-provider"},{"title":"One provider","description":"Scope `customers:read`. `id` is the VitaRelay organization id returned when it was created.","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml get /customers/{id}","href":"/api-reference/one-provider"},{"title":"Update the CRM facts","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml patch /customers/{id}","href":"/api-reference/update-the-crm-facts"},{"title":"List your CRM webhooks","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml get /customers/webhooks","href":"/api-reference/list-your-crm-webhooks"},{"title":"Subscribe an endpoint","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml post /customers/webhooks","href":"/api-reference/subscribe-an-endpoint"},{"title":"Remove an endpoint","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml delete /customers/webhooks","href":"/api-reference/remove-an-endpoint"},{"title":"Send a test event","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml post /customers/webhooks/ping","href":"/api-reference/send-a-test-event"},{"title":"Lifecycle windows","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml get /customers/settings","href":"/api-reference/lifecycle-windows"},{"title":"Change the lifecycle windows","deprecated":null,"version":null,"openapi":"/pharmacy-api/customers-openapi.yaml put /customers/settings","href":"/api-reference/change-the-lifecycle-windows"}]}]}]},{"tab":"Practice API","icon":"hospital-user","pages":[{"title":"Practice API","href":"/practice-api/overview"}]},{"tab":"Partner API","icon":"user-plus","pages":[{"title":"Partner API","href":"/partner-api/overview"}]}]},{"anchor":"Status","icon":"circle-check","hidden":true,"href":"https://status.vitarelay.com"},{"anchor":"Support","icon":"envelope","href":"mailto:info@vitarelay.com"}]},"basePath":"","title":"Create or update a provider - VitaRelay","buildId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","deploymentId":"dpl_41S5Z2jG9QnfDRwN1KZrLdBwj7DM","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DDP9JXtj.js","utils-8yQyvEtx.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CBCFR8Sn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-rQaXkUHa.js","snippetPresets-J5KpBTgV.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BVxVH4Cj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BxdQ2vIi.js","shallow-BjV2tFiD.js","getApiPlaygroundDisplay-C_55tL4O.js","CodeSnippet-C0JpiCOC.js","CodeSnippets-w9Ps7djG.js","Page-DTNSD-0M.js","getPastedJson-BDfB-H8d.js","icon-g-kUkkO9.js","MethodPill-v4l6fq0h.js","DuplicateIcon-CvLo-CfU.js","createIcon-165clrrV.js","DynamicMarkdown-D3RQ-fEj.js","SectionHeading-vvo-3yLf.js","axios-vUo_bRtp.js","Markdown-CMT1uFWQ.js","clsx-C8f2yC9R.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CI2D8R2Y.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-k78Wrw_e.js"]}