Read raw telemetry records
const url = 'https://api.elwids.xyz/api/integration/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/devices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/telemetry/records?parameter_uuid=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0&from=2026-04-15T12%3A00%3A00Z&to=2026-04-15T12%3A00%3A00Z';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://api.elwids.xyz/api/integration/v1/organizations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/devices/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/telemetry/records?parameter_uuid=2489E9AD-2EE2-8E00-8EC9-32D5F69181C0&from=2026-04-15T12%3A00%3A00Z&to=2026-04-15T12%3A00%3A00Z' \ --header 'Authorization: Bearer <token>'Requires: telemetry:read
Rate limits: 240 a minute per address, 60 a minute per application
Unaggregated good-quality observations of one parameter (diagnostics excluded), newest first, in pages of page_size 1 to 100 (default 50) up to a total limit of 1 to 5000 (default 500). The window is at most 31 days. cursor is signed and bound to the query; pass meta.next_cursor with the same query. 422 for an invalid window or a cursor the runtime rejects (under errors.runtime); 503 when the runtime is unavailable.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The organization UUID. A value that does not match returns 404.
A value that does not match returns 404.
Query Parameters
Section titled “Query Parameters”The parameter to read.
Start of the window: RFC 3339 with seconds and Z or a ±hh:mm offset.
End of the window, after from and at most 31 days later: RFC 3339 with seconds and Z or a ±hh:mm offset.
Responses
Section titled “Responses”telemetry-records.v1.
telemetry-records.v1: unaggregated good-quality observations, newest first by (received_at, event_uuid). Not a complete export.
object
object
A reading’s value; its type follows the parameter’s data_type.
object
The window actually read, clipped to retention.
Records read so far across pages, up to limit.
Pass as cursor with the same query for the next page; null on the last page.
Example
{ "schema_version": "telemetry-records.v1", "device_uuid": "3f8a1c2e-5b6d-4e7f-8a9b-0c1d2e3f4a5b", "parameter_uuid": "6d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a", "data": [ { "event_uuid": "0d9c8b7a-6f5e-4d3c-8b2a-19f8e7d6c5b4", "configuration_uuid": "8e7d6c5b-4a39-4281-9f0e-1d2c3b4a5968", "parameter_uuid": "6d2e3f4a-5b6c-4d7e-8f9a-0b1c2d3e4f5a", "received_at": "2026-10-11T23:59:52Z", "observed_at": "2026-10-11T23:59:50Z", "data_type": "number", "unit": "%", "value": 91.1, "quality": "good", "timestamp_source": "source", "historical": false } ], "meta": { "from": "2026-10-11T00:00:00Z", "to": "2026-10-12T00:00:00Z", "limit": 500, "page_size": 1, "returned": 1, "consumed": 1, "next_cursor": "eyJ2IjoxLCJyIjoiMjAyNi0xMC0xMVQyMzo1OTo1MloifQ.c2lnbmF0dXJl", "has_more": true, "limit_reached": false }}Headers
Section titled “Headers”Responses to authenticated integration requests are never cached. The header also carries private.
Example
no-store, privateNo valid credentials: no session (first-party API), or a missing, invalid, expired or revoked application token (integration API).
The body of most error responses.
object
Example generated
{ "message": "example"}The caller is not allowed: not a member of the organization, missing a tenant or platform permission, or (integration API) an ability not granted on both the application and the token.
The body of most error responses.
object
Example generated
{ "message": "example"}Not found: an unknown organization or resource, a resource in another organization or not granted to the application, or a malformed identifier (the route does not match).
The body of most error responses.
object
Example generated
{ "message": "example"}The input failed validation.
422 for input that failed validation.
object
The first error, followed by a count of the others.
Messages per field, keyed by the field’s dotted path. A rejection by the device runtime appears under runtime.
object
Example generated
{ "message": "example", "errors": { "runtime": [ "example" ] }}A rate limit was reached; see x-rate-limits on the operation.
The body of most error responses.
object
Example generated
{ "message": "example"}Headers
Section titled “Headers”Seconds to wait before retrying.
The device runtime is not configured, unavailable, or could not complete the request.
The body of most error responses.
object
Example generated
{ "message": "example"}