- Confirm you're on the right API (XMS).
- Get an account and API key (one per installer).
- Request sandbox/UAT access (send email + IP addresses).
- Get your assigned technical point of contact.
- Build the 4-step registration flow (create → check eligibility → upload docs → complete).
- Test in sandbox, then go live.
SREC facility registration integrations use the Xpansiv Managed Solutions (XMS) API.
- Base URL: https://www.ms.xpansiv.com/app/api/v1
- Auth: HTTP Bearer — see the Authentication page for how to generate and use your API key
- Each installer/account needs its own Xpansiv Managed Solutions account; there is no shared or platform-wide key across installers.
- Generate your API key from the API Access page under "Xpansiv Managed Solutions Internal API" — see the Authentication page for step-by-step instructions.
- 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.
Before testing can begin, Xpansiv needs to provision a sandbox/UAT environment for you. To request this, provide:
- Email address(es) that should have access to the sandbox (e.g., a shared team credential like credentials@yourdomain.com).
- The IP address(es) your systems will connect from, so they can be allow-listed.
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.
- Register a facility —
POST /facilities - Get eligibility and required documents —
GET /facilities/{facility_id}/state_eligibilities - Upload required documents —
POST /facilities/{facility_id}/documents - Complete the facility application —
POST /facilities/{facility_id}/complete
See the OpenAPI Specs for field-level details on each step.
- 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.
- Some fields marked "not required" become conditionally required depending on other field values or the facility's state (e.g.,
hostnameis required only ifsystem_leasedis 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. - Some required fields (
system_cost,utility_name,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. - 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.