---
title: "Create a global charge reading"
method: POST
path: "/charges/readings"
tags: ["Charges"]
---

# Create a global charge reading

`POST /charges/readings`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/charges/readings`
- Auth: HTTP bearer

Record a new reading for a charge (global scope).
The system automatically populates `previous_value` from the latest reading
and runs anomaly detection.

## Request body

- CreateChargeReading
  - `lease_charge_id` string, uuid, required
  - `place_id` string, uuid, required
  - `reading_date` string, date-time, required
  - `reading_type` 'METER_READING' | 'CONSUMPTION' | 'OCCUPANT_COUNT' | 'EQUIPMENT_COUNT', required: Type of charge reading
  - `reading_subtype` 'COMMON_AREAS' | 'INDIVIDUAL' | 'MAINTENANCE' | 'LEAK_FIX', required: Subtype of charge reading for more granular categorization
  - `reading_value` number, required: Reading value (must be >= 0)
  - `anomaly_detected` boolean, required
  - `anomaly_details` AnomalyDetails: Details about a detected reading anomaly
    - `is_anomaly` boolean: Whether the reading is flagged as anomalous
    - `deviation_percentage` number, double, nullable: Percentage deviation from average
    - `average_value` number, double, nullable: Historical average value for comparison
    - `threshold_high` number, double, nullable: Upper threshold (150% of average)
    - `threshold_low` number, double, nullable: Lower threshold (50% of average)
  - `notes` string, nullable

## Response `201`

Reading created

- ChargeReading: Charge reading response
  - `id` string, uuid, required
  - `lease_charge_id` string, uuid, required: ID of the lease charge this reading belongs to
  - `place_id` string, uuid, required: ID of the place where the reading was taken
  - `reading_date` string, date-time, required: When the reading was taken
  - `reading_value` number, required: Reading value (BigDecimal)
  - `reading_type` 'METER_READING' | 'CONSUMPTION' | 'OCCUPANT_COUNT' | 'EQUIPMENT_COUNT', required: Type of charge reading
  - `reading_subtype` 'COMMON_AREAS' | 'INDIVIDUAL' | 'MAINTENANCE' | 'LEAK_FIX', required: Subtype of charge reading for more granular categorization
  - `anomaly_detected` boolean, required: Whether an anomaly was detected for this reading
  - `anomaly_details` AnomalyDetails: Details about a detected reading anomaly
    - `is_anomaly` boolean: Whether the reading is flagged as anomalous
    - `deviation_percentage` number, double, nullable: Percentage deviation from average
    - `average_value` number, double, nullable: Historical average value for comparison
    - `threshold_high` number, double, nullable: Upper threshold (150% of average)
    - `threshold_low` number, double, nullable: Lower threshold (50% of average)
  - `notes` string, nullable
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
