Endpoint and scope
Send POST requests to /api/v2/meters/readings/import with a readings array. The caller must belong to a landlord account and have the meter_reading:write permission.
This endpoint records readings for existing meters. It does not create meters or create an account integration record. Configure each target meter to receive automatic readings sent to Proforio.
Authentication
Use either a signed-in user's JWT bearer token or an app credential pair for the active account.
- JWT: send Authorization: Bearer <token>.
- App credentials: send both X-App-Key and X-App-Secret on every request. One header without the other is not valid authentication.
Payload and meter matching
Each readings entry requires value and read_at, plus at least one meter identifier. previous_value and raw_payload are optional.
- meter_id matches the meter ID in the authenticated account.
- external_meter_id matches a unique external ID in the authenticated account.
- meter_serial_number matches a unique serial number. Include property_id when the same serial can occur at more than one property.
- When several identifiers are supplied, matching checks meter_id first, then external_meter_id, then meter_serial_number.
How events are applied
Proforio stores each accepted sample as a raw reading event. If an eligible open official reading exists for the event time, the event can be applied to it; otherwise it remains stored for the normal reading lifecycle.
Review the response counts and row results. A successful HTTP response can contain rows that were stored or rejected instead of applied.
Retry carefully
This generic endpoint does not deduplicate requests. Retrying the same payload can create another raw event. wmbusmeters uses its own authenticated connector and deduplication flow, while CSV and XML uploads remain manual reading workflows.
