---
title: "Onboard Site And Asset"
method: POST
path: "/entities/site/onboard-site-and-asset"
tags: ["3. Sites"]
deprecated: true
---

# Onboard Site And Asset

`POST /entities/site/onboard-site-and-asset`

## Request

- Base URL: `https://api-sandbox.axle.energy`
- URL: `https://api-sandbox.axle.energy/entities/site/onboard-site-and-asset`
- Auth: OAuth 2
  - Password
  - Token URL: `auth/token-form`

> **Deprecated.**

**Deprecated** — prefer [`/onboard`](/api-reference/entities/site/onboard) instead.

The new `/onboard` endpoint supports multiple assets per site in a single call and includes improvements in idempotency, resilience and response details.

---

Register a site, asset, and dispatch consent in a single call.

Creates the site and asset, grants consent, and enrols in the relevant flex proposition.

This endpoint will:
1. Create the site
2. Create the asset associated with the site
3. Enrol in the relevant flex proposition

Returns the created site and asset, including their IDs. Fails if the site or asset already exists.

## Request body

- OnboardingRequest: Request model for onboarding a site with an asset and dispatch consent in a single call.
  - `site` SiteRequest, required: Request model for creating a new site.
    - `street_address` string: Street address for the site
    - `email` string: Email address for the site. Include to enable 2FA for payment withdrawals.
    - `gave_boundary_meter_consent_at` string, date-time: Timezone-aware ISO 8601 timestamp (e.g. '2026-01-01T12:34:56Z') indicating when the household gave consent for Axle to access readings from their boundary meter, if consent was given.
    - `mpan` string, required: Meter Point Administration Number
    - `postcode` string, required: UK postcode for the site
  - `asset` OnboardingAssetRequest, required: Request model for creating an asset during onboarding (without site_id).
    - `external_id` string, required: Vendor-specific identifier for the asset
    - `type` 'charger' | 'battery' | 'heat pump' | 'electric_vehicle' | 'hot water tank', required: Asset types that can be created through the API.
    - `properties` AssetProperties: Optional properties for an asset.
      - `power_kw` number: Power rating in kW
      - `capacity_kwh` number: Capacity in kWh
    - `asset_model` string: Your configured asset model name; charger-model is a placeholder. Required for CoP11 eligibility.
    - `installation_date` string, date: Date when the asset was installed. Required alongside asset_model for CoP11 eligibility.
  - `dispatch_consent` SiteDispatchConsentRequest, required: Request model for updating dispatch consent for a site.
    - `dispatch_methods` DispatchMethodResponse[], required: Dispatch methods to consent to or remove consent from. Leave empty to not consent to any dispatch methods.

## Response `200`

Successfully onboarded site and asset

- OnboardingResponse: Response model for onboarding operation.
  - `site` SiteResponse, required: Response model for site information.
    - `id` string, uuid, required: Axle's internal UUID for the site
    - `mpan` string: Meter Point Administration Number for the site
    - `postcode` string: UK postcode for the site
    - `address` string: Full address for the site
    - `asset_ids` string[]: List of asset IDs associated with this site
    - `markets` MarketResponse[]: Markets the site is participating in
    - `dispatch_methods` DispatchMethodResponse[]: Dispatch methods allowed for the site
    - `tariff` TariffResponse: Response model for tariff information.
      - `tariff_type` 'single_rate' | 'dual_rate' | 'dynamic' | 'smart' | 'unknown'
      - `tariff_cheap_start_time` string, time: Start time for off-peak/cheap rate period
      - `tariff_cheap_end_time` string, time: End time for off-peak/cheap rate period
    - `gave_boundary_meter_consent_at` string, date-time: Timestamp when boundary meter consent was given
  - `asset` AssetResponse, required: Response model for asset information.
    - `id` string, uuid, required: Axle's internal UUID for the asset
    - `external_id` string, required: Vendor-specific identifier for the asset
    - `type` 'boundary meter' | 'charger' | 'battery' | 'heat pump' | 'hot water tank' | 'frequency meter' | 'electric_vehicle' | 'pv inverter', required
    - `site_id` string, uuid, required: ID of the site where the asset is located
    - `properties` AssetPropertiesResponse: Asset properties as returned in API responses — adds fields derived from stored data that aren't valid to set directly via the write endpoints.
      - `power_kw` number: Power rating in kW
      - `capacity_kwh` number: Capacity in kWh
      - `custom_dispatch_power_kw` number: User-chosen dispatch power override, where the manufacturer supports one
    - `needs_reauthorisation` boolean: Whether the owner must re-authorise their device connection to keep taking part in events

## Other responses

- `400`: Invalid request
- `409`: Site or asset already exists
- `422`: Eligibility prerequisites not met for the requested dispatch method
- `500`: Server error during onboarding

## Changes

- **2026-11-03** `b0b07b1dbf12`: 1 warning, 4 info
  - added the new `price_curve` enum value to the `site/allOf[subschema #1: SiteResponse]/dispatch_methods/items/` response property for the response status `200`
  - added the new `price_curve` enum value to the request property `dispatch_consent/allOf[subschema #1: SiteDispatchConsentRequest]/dispatch_methods/items/`
  - added the optional property `asset/allOf[subschema #1: AssetResponse]/needs_reauthorisation` to the response with the `200` status
  - added `#/components/schemas/AssetPropertiesResponse` to the `asset/allOf[subschema #1: AssetResponse]/properties` response property `allOf` list for the response status `200`
  - …1 more

[Operation history](https://skmtc.dev/axle/apis/axle-api-docs/changes/entities/site/onboard-site-and-asset/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)
