{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":[]},"type":"markdown"},"seo":{"title":"Getting Started","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"getting-started","__idx":0},"children":["Getting Started"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#1-confirm-youre-using-the-right-api"},"children":["Confirm you're on the right API (XMS)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#2-confirm-account--api-key-setup"},"children":["Get an account and API key (one per installer)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#3-request-sandbox--uat-access"},"children":["Request sandbox/UAT access (send email + IP addresses)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#4-identify-your-point-of-contact"},"children":["Get your assigned technical point of contact."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#5-build-against-the-standard-registration-flow"},"children":["Build the 4-step registration flow (create → check eligibility → upload docs → complete)."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"a","attributes":{"href":"#6-know-before-you-build"},"children":["Test in sandbox, then go live."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"1-confirm-youre-using-the-right-api","__idx":1},"children":["1. Confirm You're Using the Right API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["SREC facility registration integrations use the Xpansiv Managed Solutions (XMS) API."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Base URL: ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"https://www.ms.xpansiv.com/app/api/v1"},"children":["https://www.ms.xpansiv.com/app/api/v1"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Auth: HTTP Bearer — see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-portal/xpansiv-managed-solutions/authorization"},"children":["Authentication"]}," page for how to generate and use your API key"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"2-confirm-account--api-key-setup","__idx":2},"children":["2. Confirm Account & API Key Setup"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Each installer/account needs its own Xpansiv Managed Solutions account; there is no shared or platform-wide key across installers."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Generate your API key from the API Access page under \"Xpansiv Managed Solutions Internal API\" — see the ",{"$$mdtype":"Tag","name":"a","attributes":{"href":"/developer-portal/xpansiv-managed-solutions/authorization"},"children":["Authentication"]}," page for step-by-step instructions."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you're building on behalf of multiple installers, plan for each installer to have its own account and key; this is by design, not a limitation to work around."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"3-request-sandbox--uat-access","__idx":3},"children":["3. Request Sandbox / UAT Access"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Before testing can begin, Xpansiv needs to provision a sandbox/UAT environment for you. To request this, provide:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Email address(es) that should have access to the sandbox (e.g., a shared team credential like credentials@yourdomain.com)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The IP address(es) your systems will connect from, so they can be allow-listed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"4-identify-your-point-of-contact","__idx":4},"children":["4. Identify Your Point of Contact"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Xpansiv assigns a lead developer as the key point of contact for API questions during UAT/sandbox testing. Confirm who this is for your engagement before you start building, and route technical/API questions to them directly rather than the broader account team."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"5-build-against-the-standard-registration-flow","__idx":5},"children":["5. Build Against the Standard Registration Flow"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Register a facility — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /facilities"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Get eligibility and required documents — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GET /facilities/{facility_id}/state_eligibilities"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Upload required documents — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /facilities/{facility_id}/documents"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Complete the facility application — ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["POST /facilities/{facility_id}/complete"]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["See the OpenAPI Specs for field-level details on each step."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"6-know-before-you-build","__idx":6},"children":["6. Know Before You Build"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Required document lists are state-specific — always pull the live list from the State Eligibilities endpoint rather than relying on any single example in the docs."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Some fields marked \"not required\" become conditionally required depending on other field values or the facility's state (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["hostname"]}," is required only if ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["system_leased"]}," is true and the facility is in DC or MD). Always validate against the specific facility's conditions rather than a field's default \"required\" status."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Some required fields (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["system_cost"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["utility_name"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["utility_account_number"]},") may need to be sourced from a third-party design tool; if not already in your own system, plan for this data-mapping step early."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Only zero-fee or fee-waived states can be completed automatically via the Complete Facility Application endpoint. Confirm the current list with the Xpansiv team and plan a manual/semi-automated fallback for other states."]}]}]},"headings":[{"value":"Getting Started","id":"getting-started","depth":1},{"value":"1. Confirm You're Using the Right API","id":"1-confirm-youre-using-the-right-api","depth":2},{"value":"2. Confirm Account & API Key Setup","id":"2-confirm-account--api-key-setup","depth":2},{"value":"3. Request Sandbox / UAT Access","id":"3-request-sandbox--uat-access","depth":2},{"value":"4. Identify Your Point of Contact","id":"4-identify-your-point-of-contact","depth":2},{"value":"5. Build Against the Standard Registration Flow","id":"5-build-against-the-standard-registration-flow","depth":2},{"value":"6. Know Before You Build","id":"6-know-before-you-build","depth":2}],"frontmatter":{"seo":{"title":"Getting Started"}},"lastModified":"2026-09-24T11:19:20.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/developer-portal/xpansiv-managed-solutions/getting-started","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}