Photon Website API

Photon's public website API, covering the onboarding funnel and newsletter signup: create or resume an onboarding session, save path-specific onboarding answers, submit a completed onboarding flow, and create Ghost newsletter signups. A companion onboarding schema endpoint returns the current path definitions, steps and fields, which is the machine-readable contract behind the browser funnel. Discovered 2026-08-14 via Photon's RFC 9727 API catalog; the OpenAPI 3.1.0 description is served first-party at photonhealth.com/openapi.json and mirrored at /.well-known/openapi.json. Distinct from the GraphQL Clinical API - this surface never touches prescriptions or PHI.

OpenAPI Specification

photon-website-api-openapi.json Raw ↑
{"openapi":"3.1.0","info":{"title":"Photon website API","summary":"Public website API used by the Photon onboarding funnel and newsletter signup.","description":"Create or resume an onboarding session, save path-specific onboarding answers, submit a completed onboarding flow, and create Ghost newsletter signups. The companion onboarding schema endpoint returns the current path definitions, steps, and fields.","version":"2026-05-13","contact":{"name":"Photon Health","url":"https://photonhealth.com"}},"jsonSchemaDialect":"https://json-schema.org/draft/2020-12/schema","servers":[{"url":"https://photonhealth.com"}],"tags":[{"name":"Onboarding","description":"First-party onboarding endpoints for prescriber, developer, clinic, enterprise, platform, and other paths."},{"name":"Newsletter","description":"First-party endpoint for adding newsletter signups to Ghost Members."},{"name":"Agent discovery","description":"Machine-readable discovery resources for agents and integrations."}],"externalDocs":{"description":"Photon developer documentation","url":"https://docs.photon.health/docs"},"paths":{"/api/onboarding/schema":{"get":{"tags":["Onboarding"],"operationId":"getOnboardingSchema","summary":"Get onboarding paths, steps, and fields","description":"Returns every onboarding path in `allPaths`, plus the active path-specific step list when the optional `path` query parameter is supplied.","parameters":[{"name":"path","in":"query","required":false,"description":"Optional onboarding path id used to return the currently active step list.","schema":{"$ref":"#/components/schemas/OnboardingPathId"}}],"responses":{"200":{"description":"Onboarding schema payload.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/OnboardingSchema"}}},"example":{"data":{"paths":[{"id":"prescriber","label":"Prescriber","description":"Start prescribing in the app","cta":"Start Prescribing","mode":"verification_required"},{"id":"developer","label":"Developer","description":"Build and test in a sandbox","cta":"Start Building","mode":"self_serve"},{"id":"clinic","label":"Clinic","description":"Launch prescribing in production","cta":"Create Account","mode":"sales_led"},{"id":"enterprise","label":"Enterprise","description":"Large medical group or health system","cta":"Talk to Sales","mode":"sales_led"},{"id":"platform","label":"Platform","description":"EHR or clinical platform","cta":"Let's Partner","mode":"sales_led"},{"id":"other","label":"Other","description":"Tell us what you are looking for","cta":"Get in Touch","mode":"sales_led"}],"allPaths":[{"id":"prescriber","label":"Prescriber","description":"Start prescribing in the app","cta":"Start Prescribing","mode":"verification_required","provisioningMode":"prescriber","entryPath":"/onboard?type=prescriber","steps":[{"id":"contact","title":"Prescriber account details","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"npi","label":"Individual NPI","type":"text","required":true,"placeholder":"10-digit NPI","inputMode":"numeric","autoComplete":"off"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"company","label":"Practice name","type":"text","required":false,"autoComplete":"organization"},{"name":"phone_number","label":"Phone","type":"tel","required":true,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"},{"name":"fax_number","label":"Fax","type":"tel","required":false,"inputMode":"tel","autoComplete":"off","placeholder":"(555) 555-1234"}]},{"id":"prescriber-details","title":"Verify your details","fields":[{"name":"specialty","label":"Specialty","type":"text","required":true,"placeholder":"Psychiatry, Primary Care, Dermatology"},{"name":"prescription_volume","label":"Typical prescription volume","type":"select","required":true,"options":["1-5 / month","6-25 / month","26-100 / month","101-500 / month","500+ / month","Not sure"]},{"name":"practice_type","label":"Practice type","type":"select","required":true,"options":["Solo practice","Small clinic","Group practice","Urgent care","Other"]},{"name":"use_case","label":"What is your desired prescribing workflow?","type":"textarea","required":true,"placeholder":"How do you expect to use Photon?"},{"name":"prescribing_interface","label":"How do you send prescriptions now?","type":"select","required":false,"options":["DoseSpot","MD Toolbox","Dr. First","RXNT","athena","Epic","Cerner","Surescripts","Phone","Fax","Paper","No Existing Solution","Other"]},{"name":"prescribing_interface_other","label":"Which prescribing interface?","type":"text","required":true,"placeholder":"Tell us what you use today","showWhen":{"field":"prescribing_interface","value":"Other"}}]},{"id":"prescriber-address","title":"Practice address","fields":[{"name":"address_street1","label":"Practice street address","type":"text","required":true,"autoComplete":"address-line1","fullWidth":true},{"name":"address_street2","label":"Suite or unit","type":"text","required":false,"autoComplete":"address-line2"},{"name":"address_city","label":"City","type":"text","required":true,"autoComplete":"address-level2"},{"name":"address_state","label":"State","type":"select","required":true,"autoComplete":"address-level1","options":[{"id":"AL","label":"Alabama"},{"id":"AK","label":"Alaska"},{"id":"AZ","label":"Arizona"},{"id":"AR","label":"Arkansas"},{"id":"CA","label":"California"},{"id":"CO","label":"Colorado"},{"id":"CT","label":"Connecticut"},{"id":"DE","label":"Delaware"},{"id":"DC","label":"District of Columbia"},{"id":"FL","label":"Florida"},{"id":"GA","label":"Georgia"},{"id":"HI","label":"Hawaii"},{"id":"ID","label":"Idaho"},{"id":"IL","label":"Illinois"},{"id":"IN","label":"Indiana"},{"id":"IA","label":"Iowa"},{"id":"KS","label":"Kansas"},{"id":"KY","label":"Kentucky"},{"id":"LA","label":"Louisiana"},{"id":"ME","label":"Maine"},{"id":"MD","label":"Maryland"},{"id":"MA","label":"Massachusetts"},{"id":"MI","label":"Michigan"},{"id":"MN","label":"Minnesota"},{"id":"MS","label":"Mississippi"},{"id":"MO","label":"Missouri"},{"id":"MT","label":"Montana"},{"id":"NE","label":"Nebraska"},{"id":"NV","label":"Nevada"},{"id":"NH","label":"New Hampshire"},{"id":"NJ","label":"New Jersey"},{"id":"NM","label":"New Mexico"},{"id":"NY","label":"New York"},{"id":"NC","label":"North Carolina"},{"id":"ND","label":"North Dakota"},{"id":"OH","label":"Ohio"},{"id":"OK","label":"Oklahoma"},{"id":"OR","label":"Oregon"},{"id":"PA","label":"Pennsylvania"},{"id":"RI","label":"Rhode Island"},{"id":"SC","label":"South Carolina"},{"id":"SD","label":"South Dakota"},{"id":"TN","label":"Tennessee"},{"id":"TX","label":"Texas"},{"id":"UT","label":"Utah"},{"id":"VT","label":"Vermont"},{"id":"VA","label":"Virginia"},{"id":"WA","label":"Washington"},{"id":"WV","label":"West Virginia"},{"id":"WI","label":"Wisconsin"},{"id":"WY","label":"Wyoming"},{"id":"AS","label":"American Samoa"},{"id":"GU","label":"Guam"},{"id":"MP","label":"Northern Mariana Islands"},{"id":"PR","label":"Puerto Rico"},{"id":"VI","label":"U.S. Virgin Islands"}]},{"name":"address_postal_code","label":"ZIP code","type":"text","required":true,"autoComplete":"postal-code","inputMode":"numeric"}]}]},{"id":"developer","label":"Developer","description":"Build and test in a sandbox","cta":"Start Building","mode":"self_serve","provisioningMode":"developer","entryPath":"/onboard?type=developer","steps":[{"id":"contact","title":"Sandbox admin details","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"company","label":"Company","type":"text","required":false,"autoComplete":"organization"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"job_title","label":"Role or title","type":"text","required":false,"autoComplete":"organization-title"},{"name":"phone_number","label":"Phone","type":"tel","required":false,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"}]},{"id":"developer-details","title":"Tell us about your integration","fields":[{"name":"app_domain","label":"Clinical web app URL (auth whitelist)","type":"url","required":false,"placeholder":"app.example.com","autoComplete":"url","inputMode":"url"},{"name":"integration_type","label":"Integration type","type":"multi-select","required":false,"options":["app","embed","api","mcp"]},{"name":"tech_stack","label":"Tech stack","type":"text","required":false,"placeholder":"e.g. React, Node, Postgres"},{"name":"implementation_timeline","label":"When do you plan to begin development?","type":"select","required":true,"options":["Today","This week","This month","This quarter","Exploring"]},{"name":"use_case","label":"What are you building?","type":"textarea","required":true,"placeholder":"Describe your workflow, users, and how Photon will fit into the product"},{"name":"prescribing_interface","label":"Existing prescription interface?","type":"select","required":false,"options":["DoseSpot","MD Toolbox","Dr. First","RXNT","athena","Epic","Cerner","Surescripts","Phone","Fax","Paper","No Existing Solution","Other"]},{"name":"prescribing_interface_other","label":"Which prescribing interface?","type":"text","required":true,"placeholder":"Tell us what you use today","showWhen":{"field":"prescribing_interface","value":"Other"}}]}]},{"id":"clinic","label":"Clinic","description":"Launch prescribing in production","cta":"Create Account","mode":"sales_led","provisioningMode":"handoff","entryPath":"/onboard?type=clinic","steps":[{"id":"contact","title":"Clinic admin details","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"npi","label":"Organization NPI","type":"text","required":false,"placeholder":"10-digit NPI","inputMode":"numeric","autoComplete":"off"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"company","label":"Clinic or medical group","type":"text","required":true,"autoComplete":"organization"},{"name":"job_title","label":"Role or title","type":"text","required":false,"autoComplete":"organization-title"},{"name":"phone_number","label":"Phone","type":"tel","required":true,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"},{"name":"fax_number","label":"Fax","type":"tel","required":false,"inputMode":"tel","autoComplete":"off","placeholder":"(555) 555-1234"}]},{"id":"clinic-details","title":"Tell us about your clinic","fields":[{"name":"care_model","label":"Primary specialty","type":"text","required":true,"placeholder":"Urgent care, pediatrics, weight loss, etc."},{"name":"provider_count","label":"Provider count","type":"select","required":true,"options":["1-5","6-20","21-100","100+"]},{"name":"prescription_volume","label":"Clinic prescription volume","type":"select","required":true,"options":["<100 / month","100-1k / month","1k-10k / month","10k+ / month"]},{"name":"implementation_timeline","label":"When do you want to go live?","type":"select","required":true,"options":["This month","This quarter","Next quarter","Planning"]},{"name":"use_case","label":"What is your desired prescribing workflow?","type":"textarea","required":true,"placeholder":"Describe your care model, who will prescribe, and where Photon will fit in your workflow."},{"name":"prescribing_interface","label":"How do you prescribe today?","type":"select","required":false,"options":["DoseSpot","MD Toolbox","Dr. First","RXNT","athena","Epic","Cerner","Surescripts","Phone","Fax","Paper","No Existing Solution","Other"]},{"name":"prescribing_interface_other","label":"Which prescribing interface?","type":"text","required":true,"placeholder":"Tell us what you use today","showWhen":{"field":"prescribing_interface","value":"Other"}}]},{"id":"clinic-address","title":"Clinic address","fields":[{"name":"address_street1","label":"Clinic street address","type":"text","required":true,"autoComplete":"address-line1","fullWidth":true},{"name":"address_street2","label":"Suite or unit","type":"text","required":false,"autoComplete":"address-line2"},{"name":"address_city","label":"City","type":"text","required":true,"autoComplete":"address-level2"},{"name":"address_state","label":"State","type":"select","required":true,"autoComplete":"address-level1","options":[{"id":"AL","label":"Alabama"},{"id":"AK","label":"Alaska"},{"id":"AZ","label":"Arizona"},{"id":"AR","label":"Arkansas"},{"id":"CA","label":"California"},{"id":"CO","label":"Colorado"},{"id":"CT","label":"Connecticut"},{"id":"DE","label":"Delaware"},{"id":"DC","label":"District of Columbia"},{"id":"FL","label":"Florida"},{"id":"GA","label":"Georgia"},{"id":"HI","label":"Hawaii"},{"id":"ID","label":"Idaho"},{"id":"IL","label":"Illinois"},{"id":"IN","label":"Indiana"},{"id":"IA","label":"Iowa"},{"id":"KS","label":"Kansas"},{"id":"KY","label":"Kentucky"},{"id":"LA","label":"Louisiana"},{"id":"ME","label":"Maine"},{"id":"MD","label":"Maryland"},{"id":"MA","label":"Massachusetts"},{"id":"MI","label":"Michigan"},{"id":"MN","label":"Minnesota"},{"id":"MS","label":"Mississippi"},{"id":"MO","label":"Missouri"},{"id":"MT","label":"Montana"},{"id":"NE","label":"Nebraska"},{"id":"NV","label":"Nevada"},{"id":"NH","label":"New Hampshire"},{"id":"NJ","label":"New Jersey"},{"id":"NM","label":"New Mexico"},{"id":"NY","label":"New York"},{"id":"NC","label":"North Carolina"},{"id":"ND","label":"North Dakota"},{"id":"OH","label":"Ohio"},{"id":"OK","label":"Oklahoma"},{"id":"OR","label":"Oregon"},{"id":"PA","label":"Pennsylvania"},{"id":"RI","label":"Rhode Island"},{"id":"SC","label":"South Carolina"},{"id":"SD","label":"South Dakota"},{"id":"TN","label":"Tennessee"},{"id":"TX","label":"Texas"},{"id":"UT","label":"Utah"},{"id":"VT","label":"Vermont"},{"id":"VA","label":"Virginia"},{"id":"WA","label":"Washington"},{"id":"WV","label":"West Virginia"},{"id":"WI","label":"Wisconsin"},{"id":"WY","label":"Wyoming"},{"id":"AS","label":"American Samoa"},{"id":"GU","label":"Guam"},{"id":"MP","label":"Northern Mariana Islands"},{"id":"PR","label":"Puerto Rico"},{"id":"VI","label":"U.S. Virgin Islands"}]},{"name":"address_postal_code","label":"ZIP code","type":"text","required":true,"autoComplete":"postal-code","inputMode":"numeric"}]}]},{"id":"enterprise","label":"Enterprise","description":"Large medical group or health system","cta":"Talk to Sales","mode":"sales_led","provisioningMode":"handoff","entryPath":"/onboard?type=enterprise","steps":[{"id":"contact","title":"Enterprise account contact","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"company","label":"Health system or organization","type":"text","required":false,"autoComplete":"organization"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"job_title","label":"Role or title","type":"text","required":false,"autoComplete":"organization-title"},{"name":"phone_number","label":"Phone","type":"tel","required":true,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"}]},{"id":"enterprise-details","title":"Tell us about your organization","fields":[{"name":"prescribing_interface","label":"What EHR do you use today?","type":"select","required":true,"options":["Epic","Cerner","athena","Other"]},{"name":"prescribing_interface_other","label":"Which prescribing interface?","type":"text","required":true,"placeholder":"Tell us what you use today","showWhen":{"field":"prescribing_interface","value":"Other"}},{"name":"site_count","label":"Number of sites","type":"select","required":true,"options":["1-10","10-50","51-100","100+"]},{"name":"prescriber_count","label":"Number of prescribers","type":"select","required":true,"options":["1-100","101-500","501-1k","1k+"]},{"name":"pharmacy_services","label":"Pharmacy services","type":"multi-select","required":false,"options":["On-Site","Retail","Delivery","Bedside","Specialty"]},{"name":"use_case","label":"How can we help your organization?","type":"textarea","required":true,"placeholder":"Describe your use case and any opportunities"},{"name":"implementation_timeline","label":"Implementation timeline","type":"select","required":true,"options":["This quarter","Next quarter","This year","Exploring"]}]}]},{"id":"platform","label":"Platform","description":"EHR or clinical platform","cta":"Let's Partner","mode":"sales_led","provisioningMode":"handoff","entryPath":"/onboard?type=platform","steps":[{"id":"contact","title":"Platform account contact","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"company","label":"Company","type":"text","required":false,"autoComplete":"organization"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"job_title","label":"Role or title","type":"text","required":false,"autoComplete":"organization-title"},{"name":"phone_number","label":"Phone","type":"tel","required":true,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"}]},{"id":"platform-details","title":"Tell us about your platform","fields":[{"name":"product_category","label":"Product category","type":"text","required":true,"placeholder":"EHR, clinical workflow tool, care delivery platform"},{"name":"customer_org_count","label":"Number of customers","type":"select","required":true,"options":["1-10","11-50","51-250","250+"]},{"name":"prescribing_interface","label":"Current prescription solution?","type":"select","required":false,"options":["Surescripts","DoseSpot","Dr. First","Other","No Existing Solution"]},{"name":"prescribing_interface_other","label":"Which prescribing interface?","type":"text","required":true,"placeholder":"Tell us what you use today","showWhen":{"field":"prescribing_interface","value":"Other"}},{"name":"use_case","label":"How do you plan to integrate?","type":"textarea","required":true,"placeholder":"Describe the experience you want to enable"},{"name":"implementation_timeline","label":"Implementation timeline","type":"select","required":true,"options":["This quarter","Next quarter","This year","Exploring"]}]}]},{"id":"other","label":"Other","description":"Tell us what you are looking for","cta":"Get in Touch","mode":"sales_led","provisioningMode":"handoff","entryPath":"/onboard?type=other","steps":[{"id":"contact","title":"Tell us about yourself","fields":[{"name":"email","label":"Email","type":"email","required":true,"autoComplete":"email","placeholder":"name@company.com"},{"name":"company","label":"Company","type":"text","required":false,"autoComplete":"organization"},{"name":"first_name","label":"First name","type":"text","required":true,"autoComplete":"given-name"},{"name":"last_name","label":"Last name","type":"text","required":true,"autoComplete":"family-name"},{"name":"job_title","label":"Role or title","type":"text","required":false,"autoComplete":"organization-title"},{"name":"phone_number","label":"Phone","type":"tel","required":true,"autoComplete":"tel","inputMode":"tel","placeholder":"(555) 555-1234"}]},{"id":"other-details","title":"How can we work together?","fields":[{"name":"use_case","label":"What use case do you have in mind?","type":"textarea","required":true,"placeholder":"Tell us what you are looking for"}]}]}],"path":null,"steps":[{"id":"path","title":"Choose the best path","fields":[{"name":"path","label":"Path","type":"radio-cards","required":true}]}]}}}}}}}},"/api/onboarding/sessions":{"post":{"tags":["Onboarding"],"operationId":"createOrResumeOnboardingSession","summary":"Create or resume an onboarding session","description":"Creates a local-only session until valid contact details identify the lead. A prior lead token may be supplied in the `x-onboarding-lead-token` header, cookie, or request body. A submitted session can also be resumed from Attio with `resumeSessionId`.","security":[{},{"leadTokenHeader":[]},{"leadTokenCookie":[]}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"properties":{"path":{"anyOf":[{"$ref":"#/components/schemas/OnboardingPathId"},{"type":"null"}]},"trackingSummary":{"anyOf":[{"$ref":"#/components/schemas/TrackingSummary"},{"type":"null"}]},"flowId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Browser-local flow id used before the server issues a session id."},"draftState":{"anyOf":[{"$ref":"#/components/schemas/OnboardingSession"},{"type":"null"}]},"resumeSessionId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Submitted onboarding session id to resume from Attio when no lead token is present."},"paymentPlanTier":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional Stripe pricing-plan lookup key to assign to the onboarding session."},"email":{"anyOf":[{"type":"string","format":"email"},{"type":"null"}],"description":"Optional email seed for URL-driven onboarding links. Browser `/onboard?email=` links start a fresh local session unless `session` is also present."},"orgId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional prefixed provisioning org id, such as `photon:org_...`, used to link checkout/provisioning to an existing account."},"stripeCustomerId":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Optional Stripe customer id seed, such as `cus_...`, stored as `stripe_customer_id` when the session is identified."},"leadToken":{"type":"string","description":"Optional serialized lead token. Prefer the `x-onboarding-lead-token` header when available."}}},"example":{"path":"clinic","paymentPlanTier":"launch","email":"lead@example.com","orgId":"photon:org_abc123","stripeCustomerId":"cus_abc123","flowId":"local-flow-id","trackingSummary":{"source":"agent"}}}}},"responses":{"200":{"$ref":"#/components/responses/OnboardingStateResponse"}}}},"/api/onboarding/sessions/{sessionId}":{"patch":{"tags":["Onboarding"],"operationId":"saveOnboardingStep","summary":"Save or advance an onboarding step","description":"Persists step answers and, when advancing from contact details with a valid email, identifies the lead and syncs the Attio list item.","security":[{},{"leadTokenHeader":[]},{"leadTokenCookie":[]}],"parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SaveStepRequest"},"example":{"stepId":"contact","action":"advance","values":{"email":"admin@example.com","first_name":"Ada","last_name":"Lovelace","company":"Example Health","job_title":"CTO"},"existingAnswers":{}}}}},"responses":{"200":{"$ref":"#/components/responses/OnboardingStateResponse"},"400":{"$ref":"#/components/responses/ErrorResponse"},"401":{"$ref":"#/components/responses/ErrorResponse"}}}},"/api/onboarding/sessions/{sessionId}/submit":{"post":{"tags":["Onboarding"],"operationId":"submitOnboardingSession","summary":"Submit a completed onboarding session","description":"Validates all required path fields, marks the onboarding session submitted, syncs Attio, and returns a hosted Stripe Checkout URL for paid self-serve offers. Account provisioning happens from the Stripe webhook after payment.","security":[{},{"leadTokenHeader":[]},{"leadTokenCookie":[]}],"parameters":[{"name":"sessionId","in":"path","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmitRequest"},"example":{"answers":{"email":"admin@example.com","first_name":"Ada","last_name":"Lovelace","company":"Example Health","app_domain":"https://app.example.com","integration_type":["api","embed"],"tech_stack":"React, Node, Postgres","implementation_timeline":"This quarter","use_case":"Embedded prescribing for a care team workflow."}}}}},"responses":{"200":{"description":"Submitted onboarding session.","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["flow","session","leadToken","answers"],"properties":{"flow":{"$ref":"#/components/schemas/OnboardingSession"},"session":{"$ref":"#/components/schemas/OnboardingSession"},"leadToken":{"type":"string"},"answers":{"$ref":"#/components/schemas/Answers"},"checkoutUrl":{"anyOf":[{"type":"string","format":"uri"},{"type":"null"}]},"result":{"anyOf":[{"$ref":"#/components/schemas/ProvisioningResult"},{"type":"null"}]}}}}}}}},"401":{"$ref":"#/components/responses/ErrorResponse"},"422":{"description":"Validation failed. The response includes inline field errors and the step that needs attention.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorEnvelope"}}}}}}},"/api/newsletter":{"post":{"tags":["Newsletter"],"operationId":"createNewsletterSignup","summary":"Create a newsletter signup","description":"Accepts an email and optional name, then creates a free Ghost member for the Photon newsletter.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSignupRequest"},"example":{"email":"ada@example.com","name":"Ada Lovelace"}}}},"responses":{"200":{"description":"The email already existed as a Ghost member and can be treated as signed up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSignupEnvelope"}}}},"201":{"description":"Newsletter member created in Ghost.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSignupEnvelope"}}}},"400":{"description":"The submitted email or name is invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FieldErrorEnvelope"}}}},"502":{"$ref":"#/components/responses/ErrorResponse"},"503":{"$ref":"#/components/responses/ErrorResponse"}}}},"/openapi.json":{"get":{"tags":["Agent discovery"],"operationId":"getOpenApiSpec","summary":"Get this OpenAPI document","responses":{"200":{"description":"OpenAPI 3.1 document for Photon website APIs.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/openapi.json":{"get":{"tags":["Agent discovery"],"operationId":"getWellKnownOpenApiSpec","summary":"Get this OpenAPI document from the well-known path","responses":{"200":{"description":"OpenAPI 3.1 document for Photon website APIs.","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/.well-known/api-catalog":{"get":{"tags":["Agent discovery"],"operationId":"getApiCatalog","summary":"Get the API catalog linkset","responses":{"200":{"description":"RFC 9727 linkset pointing to OpenAPI, docs, schema, and llms.txt.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"leadTokenHeader":{"type":"apiKey","in":"header","name":"x-onboarding-lead-token"},"leadTokenCookie":{"type":"apiKey","in":"cookie","name":"photon_onboarding_lead"}},"responses":{"OnboardingStateResponse":{"description":"Current onboarding session state.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStateEnvelope"}}}},"ErrorResponse":{"description":"Request failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}},"schemas":{"OnboardingPathId":{"type":"string","enum":["prescriber","developer","clinic","enterprise","platform","other"],"description":"Public onboarding path id. Prefer `/onboard?type={id}` for new human links. Legacy `/onboard#{id}` and `/onboard#{id}-{payment_plan_tier}` links remain supported."},"OnboardingMode":{"type":"string","enum":["self_serve","verification_required","sales_led"]},"OnboardingPathChoice":{"type":"object","required":["id","label","description","cta","mode"],"properties":{"id":{"$ref":"#/components/schemas/OnboardingPathId"},"label":{"type":"string"},"description":{"type":"string"},"cta":{"type":"string"},"mode":{"$ref":"#/components/schemas/OnboardingMode"}}},"OnboardingFullPath":{"type":"object","required":["id","label","description","cta","mode","provisioningMode","entryPath","steps"],"properties":{"id":{"$ref":"#/components/schemas/OnboardingPathId"},"label":{"type":"string"},"description":{"type":"string"},"cta":{"type":"string"},"mode":{"$ref":"#/components/schemas/OnboardingMode"},"provisioningMode":{"type":"string","enum":["developer","prescriber","handoff"]},"entryPath":{"type":"string"},"steps":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingStep"}}}},"OnboardingSchema":{"type":"object","required":["paths","allPaths","path","steps"],"properties":{"paths":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingPathChoice"}},"allPaths":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingFullPath"}},"path":{"anyOf":[{"$ref":"#/components/schemas/OnboardingPathId"},{"type":"null"}]},"steps":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingStep"}}}},"OnboardingStep":{"type":"object","required":["id","title","fields"],"properties":{"id":{"type":"string"},"title":{"type":"string"},"fields":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingField"}}}},"OnboardingField":{"type":"object","required":["name","label","type"],"properties":{"name":{"type":"string"},"label":{"type":"string"},"type":{"type":"string","enum":["email","multi-select","radio-cards","select","tel","text","textarea","url"]},"required":{"type":"boolean"},"options":{"type":"array","items":{"anyOf":[{"type":"string"},{"$ref":"#/components/schemas/OnboardingPathChoice"}]}},"placeholder":{"type":"string"},"autoComplete":{"type":"string"},"inputMode":{"type":"string"},"showWhen":{"type":"object","additionalProperties":true,"properties":{"field":{"type":"string"},"value":{"type":"string"}}}}},"OnboardingSession":{"type":"object","additionalProperties":true,"required":["sessionId","path","status","lastStep"],"properties":{"sessionId":{"type":"string"},"path":{"anyOf":[{"$ref":"#/components/schemas/OnboardingPathId"},{"type":"null"}]},"status":{"type":"string","enum":["draft","identified","submitted"]},"lastStep":{"type":"string"},"identifiedEmail":{"type":"string","format":"email"},"submittedAt":{"type":"string","format":"date-time"},"provisioningStatus":{"type":"string","enum":["pending","completed","failed","not_applicable"]},"paymentStatus":{"type":"string","enum":["not_required","payment_required","checkout_open","paid","failed","expired"]},"provisioningInviteUrl":{"type":"string","format":"uri"},"provisioningFailureReason":{"oneOf":[{"type":"string"},{"type":"object","properties":{"message":{"type":"string"},"debugMessage":{"type":"string"}}}]},"paymentPlanTier":{"type":"string","description":"Business tier / Stripe pricing plan lookup key."},"paymentPlanName":{"type":"string","description":"Display name returned by the billing catalog."},"paymentPlanDescription":{"type":"string","description":"Short display description returned by the billing catalog."},"paymentPrice":{"type":"number","description":"Monthly Checkout price in USD dollars."},"paymentIncludedMonthlyOrders":{"type":"number","description":"Included monthly order volume for the plan."},"paymentOveragePrice":{"type":"number","description":"Per-order overage price in USD dollars."},"stripeCustomerId":{"type":"string"},"stripeSubscriptionId":{"type":"string"},"attioEntryId":{"type":"string"},"attioPersonRecordId":{"type":"string"}}},"Answers":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"array","items":{"type":"string"}},{"type":"null"}]},"example":{"email":"name@example.com","npi":"10-digit NPI","first_name":"First name","last_name":"Last name","company":"Practice name","phone_number":"(555) 555-1234","fax_number":"(555) 555-1234","specialty":"Psychiatry, Primary Care, Dermatology","prescription_volume":"1-5 / month","practice_type":"Solo practice","use_case":"How do you expect to use Photon?","prescribing_interface":"DoseSpot","prescribing_interface_other":"Tell us what you use today","address_street1":"Practice street address","address_street2":"Suite or unit","address_c

# --- truncated at 32 KB (36 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/photon/refs/heads/main/openapi/photon-website-api-openapi.json