Developers · Guides

Streaming BMS telemetry

Keep state of health, cycle count, throughput and temperature exposure current from a battery management system or fleet gateway.

Version
v1.0.0
Base URL
https://dppapi-production.up.railway.app/v1
Format
JSON · OpenAPI 3.1
FeedbackLast updated
On this pageWhat to send

Annex XIII Point 4 makes part of the passport dynamic: state of health, usage and exposure change over a battery’s life. A BMS or fleet gateway keeps them current by appending events.

What to send

Each dynamic data point belongs to an event type. Put the readings of one type, taken at one moment, in one event:

FieldUnitEvent typeEVLMTIndustrial
stateOfCertifiedEnergy%SOH_READINGRequired——
remainingCapacityAhSOH_READING—RequiredIf applicable
capacityFade%SOH_READINGRequiredRequiredIf applicable
remainingPowerCapabilityWSOH_READING—RequiredIf applicable
remainingRoundTripEfficiency%SOH_READING—RequiredIf applicable
selfDischargeEvolution%/monthSOH_READING—RequiredIf applicable
ohmicResistancemΩSOH_READING—RequiredIf applicable
cycleCountcyclesCYCLE_COUNTIf applicableIf applicableIf applicable
energyThroughputkWhLIFETIME_METRICIf applicableIf applicable—
capacityThroughputAhLIFETIME_METRICIf applicableIf applicable—
stateOfCharge%OPERATING_CONDITIONIf applicableIf applicableIf applicable
operatingTemperature°COPERATING_CONDITIONIf applicableIf applicableIf applicable
timeExtremeHighTempminOPERATING_CONDITIONIf applicableIf applicableIf applicable
timeExtremeLowTempminOPERATING_CONDITIONIf applicableIf applicableIf applicable
timeChargingExtremeHighTempminOPERATING_CONDITIONIf applicableIf applicableIf applicable
timeChargingExtremeLowTempminOPERATING_CONDITIONIf applicableIf applicableIf applicable
negativeEventtextNEGATIVE_EVENTIf applicableIf applicableIf applicable

Recording a reading

Temperature exposure since the last report
curl -X POST "https://dppapi-production.up.railway.app/v1/passports/cm1q8y0bq0006l70fx9y8z7w6/events" \-H "Authorization: Bearer $DPP_API_KEY" \-H "Content-Type: application/json" \-H "Idempotency-Key: bms-C-7KQ2M9XHT4R-2027-06-02T07:30Z-oc" \-d '{"eventType": "OPERATING_CONDITION","payload": {"operatingTemperature": 31.5,"timeExtremeHighTemp": 42,"timeExtremeLowTemp": 0,"timeChargingExtremeHighTemp": 5,"timeChargingExtremeLowTemp": 0}}'
Lifetime counters
curl -X POST "https://dppapi-production.up.railway.app/v1/passports/cm1q8y0bq0006l70fx9y8z7w6/events" \-H "Authorization: Bearer $DPP_API_KEY" \-H "Content-Type: application/json" \-d '{"eventType": "LIFETIME_METRIC","payload": {"energyThroughput": 2140.5,"capacityThroughput": 44600}}'

Cadence and volume

  • The passport is a record, not a time-series database. Report on a meaningful cadence — daily, per charging session, or on change — not every BMS sample.
  • With 600 requests a minute per key, one gateway can update 864,000 passports a day with one event each. For larger fleets, batch readings with `POST /passports/import-updates`: up to 1,000 batteries per request, matched by identifier or serial, each reading recorded under its own event type.
  • Derive the idempotency key from the battery, the reading time and the type, so a gateway that resends after a dropped connection does not record the reading twice.
A fleet-wide daily upload
curl -X POST "https://dppapi-production.up.railway.app/v1/passports/import-updates" \-H "Authorization: Bearer $DPP_API_KEY" \-H "Content-Type: application/json" \-H "Idempotency-Key: fleet-north-2027-06-02" \-d '{"modelId": "cm1q8x2k40003l70f9a8s7d6e","rows": [{"uniqueIdentifier": "C-7KQ2M9XHT4R","readings": {"cycleCount": 812,"remainingCapacity": 14.1,"timeExtremeHighTemp": 42}},{"uniqueIdentifier": "C-4HZN8Q3RVX2","readings": {"cycleCount": 640,"remainingCapacity": 14.5}}]}'

BMS resets

If a BMS software reset invalidates the history behind earlier state-of-health values, record it: send the next event with bmsHistoryInvalidatedByReset: true, or a BMS_SOFTWARE_RESET event. Readers of the passport then know earlier values cannot be compared with later ones (Art. 14).

Reading history back

curl "https://dppapi-production.up.railway.app/v1/passports/cm1q8y0bq0006l70fx9y8z7w6/events?event_type=SOH_READING&since=2027-01-01T00%3A00%3A00Z" \-H "Authorization: Bearer $DPP_API_KEY"

Cookie preferences

You choose which cookies are used. You can change your choice at any time with “Cookie settings” in the footer. Privacy policy

Necessary

Always on

Needed for the site to work: your light/dark theme and this cookie choice are stored in your browser. They do not track you.

Analytics

Google Analytics 4 measures how pages are used through statistics, which helps us improve the site. If you accept, it sets cookies and measures your visit in full. If you decline, it sets no cookies, but Google may still receive technical data such as the page viewed, your browser type and IP address.

_ga, _ga_* · up to 2 years · Google