points.timeseries (version 2)
Readings of up to 1000 points aggregated into Oslo-time buckets over [from, to): one shared time axis t and one array per requested metric per point, null where a bucket has no readings. Days, weeks (Monday) and months start at Oslo midnight, so DST days have 23 or 25 hours. Limits: 15m buckets up to 62 days, others up to 400 days, and points × buckets up to 50 000; split longer ranges into several calls.
bearerAuthorizationBearer <JWT>A signed-in Relynk user's access token: OAuth 2.0 authorization code with PKCE at https://auth.relynk.io/authorize and https://auth.relynk.io/oauth/token, with audience https://ai.relynk.io/builder. The caller sees exactly what that user may see.
tenantId?stringThe tenant to read. May be left out when the caller belongs to exactly one tenant; GET /me lists them.
uuidapplication/json- body
pointIds*array<>Point ids (from points.list), at most 1000
1 <= items <= 1000from*stringStart, inclusive: "YYYY-MM", "YYYY-MM-DD" (Oslo midnight) or ISO 8601 with offset, e.g. "2026-09-01T06:00:00+02:00"
to*stringEnd, exclusive: "YYYY-MM", "YYYY-MM-DD" (Oslo midnight) or ISO 8601 with offset, e.g. "2026-09-01T06:00:00+02:00"
bucket*stringBucket size
"15m""hour""day""week""month"metrics?array<>Per bucket: avg, min, max, sum, count, and first and last reading
1 <= items <= 7[ "avg"]The function output
application/json- response
timeZone*stringbucket*string"15m""hour""day""week""month"from*stringResolved start, Oslo time with offset
to*stringResolved end (exclusive), Oslo time with offset
t*array<string>Bucket starts, Oslo time with offset; index i matches every series array
series*array<>curl -X POST 'https://ai.relynk.io/builder/v1/points.timeseries/v2' \ -H 'Content-Type: application/json' \ -d '{ "pointIds": [ "077ab0e7-997d-450a-aa83-a0ee4c7f1644" ], "from": "string", "to": "string", "bucket": "15m"}'{ "timeZone": "Europe/Oslo", "bucket": "15m", "from": "string", "to": "string", "t": [ "string" ], "series": [ { "pointId": "string", "unitKey": "string", "avg": [ 0 ], "min": [ 0 ], "max": [ 0 ], "sum": [ 0 ], "count": [ 0 ], "first": [ 0 ], "last": [ 0 ] } ]}points.timeseries (version 1) POST
Readings of up to 100 points aggregated into Oslo-time buckets over [from, to): one shared time axis t and one array per requested metric per point, null where a bucket has no readings. Days, weeks (Monday) and months start at Oslo midnight, so DST days have 23 or 25 hours. Limits: 15m buckets up to 62 days, others up to 400 days, and points × buckets up to 50 000; split longer ranges into several calls.
meters.list (version 1) POST
EOS meters (energy, water and waste metering: electricity, district heating and cooling, gas, water, waste) with their carrier, unit, whether they count in building totals (building meters) or are sub-meters, virtual (calculated from other meters) or tenant (lease) meters, what they are used for, and until when EOS has processed them. Filter by building, carrier, id, name, buildingMetersOnly or virtual. Feed the ids to consumption.meters; for a building total use consumption.buildings, which sums exactly the building meters. Pages by id: pass nextCursor back until it is null.