---
title: "Retrieve a smart meter order"
method: GET
path: "/meter-orders/{id}"
tags: ["Smart Meter Orders"]
---

# Retrieve a smart meter order

`GET /meter-orders/{id}`

Retrieve a meter order by its ID

## Path parameters

- `id` string, required

## Response `200`

The meter order details

- MeterOrder
  - `object` 'meter_order', required — Type of the object, always 'meter_order'
  - `id` string, required — Unique identifier for the meter order
  - `subscription` string, required — ID of the subscription
  - `customer` string, required — ID of the customer
  - `provider` 'energy-metering' | 'metrify' | 'inexogy', required — The smart meter provider
  - `status` 'created' | 'placed' | 'check_submitted' | 'check_reviewed' | 'scheduled' | 'installed' | 'activated' | 'cancelled', required — Lifecycle milestone of the meter order. Progresses roughly `created` → `placed` → `check_submitted` → `check_reviewed` → `scheduled` → `installed` → `activated`; `cancelled` is a terminal state.
  - `created_at` union, required — Timestamp when the order was created
    - string
    - string, date-time
  - `installed_at` union, required — Timestamp when the smart meter was installed, or null if the order has not reached the installed milestone.
    - string
    - string, date-time
    - unknown
  - `activated_at` union, required — Timestamp when the smart meter began delivering readings, or null if the order has not been activated.
    - string
    - string, date-time
    - unknown
  - `cancelled_at` union, required — Timestamp when the order was cancelled, or null if the order is not cancelled.
    - string
    - string, date-time
    - unknown
  - `cancelled_reason` 'pre_existing' | 'customer_request' | 'null', nullable, required — Why the order was cancelled: `pre_existing` when a smart meter was already installed at the location, `customer_request` when the customer or an operator cancelled the order. Null when the order is not cancelled.
  - `blocked_at` union, required — Timestamp when the order was blocked, or null if the order is not blocked.
    - string
    - string, date-time
    - unknown
  - `blocked_reason` 'check_missing' | 'grid_operator_registration' | 'null', nullable, required — Why the order is blocked: `check_missing` when the smart-meter check has not been performed yet, `grid_operator_registration` when the grid operator registration is pending. Null when the order is not blocked.
  - `appointment_at` union, required — Scheduled installation appointment, when the provider has communicated one. Null while no appointment is known.
    - string
    - string, date-time
    - unknown

## Other responses

- `400` — The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
- `401` — The client must authenticate itself to get the requested response.
- `402` — A higher pricing plan is required to access the resource.
- `403` — The client does not have the necessary permissions to access the resource.
- `404` — The server can't find the requested resource.
- `405` — The request method is not allowed.
- `409` — The request could not be completed due to a conflict mainly due to unique constraints.
- `422` — The request was well-formed but was unable to be followed due to semantic errors.
- `429` — The client has sent too many requests.
- `500` — The server has encountered a situation it doesn't know how to handle.

---

[API](https://skmtc.dev/nomos/apis/nomos-api.md) · [All operations](https://skmtc.dev/nomos/apis/nomos-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nomos/nomos-api/revisions/da60ad83e92f/schema)
