---
title: "Unenrol Site"
method: POST
path: "/entities/site/{site_id}/unenrol"
tags: ["3. Sites"]
---

# Unenrol Site

`POST /entities/site/{site_id}/unenrol`

## Request

- Base URL: `https://api-sandbox.axle.energy`
- URL: `https://api-sandbox.axle.energy/entities/site/{site_id}/unenrol`
- Auth: OAuth 2
  - Password
  - Token URL: `auth/token-form`

Unenrol a site from a proposition.

Withdraws the site from the proposition and prevents further scheduling. Does not delete the site or its assets.

Use when the user is opting out of this proposition specifically — for example, they toggled it off in your app. The site and assets are kept, any other propositions they're enrolled in (such as Capacity Market) are unaffected, and the user can re-enrol later and still access their payments.

If the user is leaving entirely (moving house, support-led removal, etc.), use `offboard-site-and-assets` instead.

Idempotent: if the site is already unenrolled, returns `already_unenrolled` without making changes.

## Path parameters

- `site_id` string, uuid, required

## Request body

- UnenrolRequest: Request model for unenrolling a site from a proposition.
  - `proposition` union, required: Proposition to unenrol from
    - 'limited_pause' | 'full_asset_schedule_control' | 'price_curve'
    - 'mileage_subscription' | 'supplier_ev_tariff': Commercial propositions a site can be enrolled in (org-scoped; see `PropositionConfig`). Deliberately separate from `DispatchMethodResponse`: propositions are single-choice and mutually exclusive per site, unlike dispatch consents which are set-based.

## Response `200`

Successfully unenrolled or already unenrolled

- UnenrolResponse: Response model for the unenrol endpoint.
  - `site_id` string, uuid, required: ID of the unenrolled site
  - `status` 'unenrolled' | 'already_unenrolled', required

## Other responses

- `404`: Site not found or not authorized
- `422`: Validation Error
- `500`: Internal server error

## Changes

- **2026-11-03** `b0b07b1dbf12`: 3 breaking, 1 info
  - removed the enum value `full_asset_schedule_control` of the request property `proposition`
  - removed the enum value `limited_pause` of the request property `proposition`
  - the `proposition` request property type changed from `string` to no type
  - added `#/components/schemas/PropositionRequest, subschema #1` to the `proposition` request property `anyOf` list

[Operation history](https://skmtc.dev/axle/apis/axle-api-docs/changes/entities/site/:site_id/unenrol/post.md)

---

[API](https://skmtc.dev/axle/apis/axle-api-docs.md) - [All operations](https://skmtc.dev/axle/apis/axle-api-docs/llms.txt) - [OpenAPI document](https://skmtc.dev/axle/apis/axle-api-docs/revisions/b0b07b1dbf12?raw)
