3. Sites

Initialise a site and its assets, and enrol them in a proposition in a single call.

This endpoint will:

  1. Upsert the site and asset(s)
  2. Enrol in the relevant flex proposition

The response returns the site and asset IDs you'll use in subsequent calls, and the enrolment outcome.

Onboarding is idempotent and atomic — sending the same site or asset returns the existing record with any new fields merged in; if enrolment fails, nothing is stored.

A 200 response always means the site and assets exist and the site is enrolled; enrolment.status only distinguishes a new enrolment from an existing one. Any failure returns an HTTP error with nothing persisted, so fix the cause and send the same request again.

post/entities/site/onboard

Request

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

Request body

proposition'limited_pause' | 'full_asset_schedule_control' | 'price_curve' required

Proposition to enrol the site in

override_withdrawalboolean

Set to true to re-enrol regardless of previous withdrawals.

Example request

{
  "assets": [
    {
      "asset_model": "charger-model",
      "external_id": "charger-001",
      "installation_date": "2025-06-15",
      "properties": {
        "power_kw": 7.4
      },
      "type": "charger"
    }
  ],
  "proposition": "limited_pause"
}

Response

Site and assets persisted, site enrolled in proposition

Example response

{
  "enrolment": {
    "site_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "enrolled"
  }
}

Changes

    • info

      added the new price_curve enum value to the request property

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status

    • info

      added the media type application/json for the response with the status