Feeds/Readings feed
Readings feedtoken required
Engine and sensor readings (fuel, temperatures, CAN values …). diagnosticId points at a diagnostic.
GET
/daas/v1/readings/feedParameters
| Name | Type | Required | Description |
|---|---|---|---|
cursor | string | optional | The nextCursor the previous call returned. Omit on the first call. |
from | date | optional | First call only: start the feed at this time (ISO-8601 UTC). Ignored when cursor is sent. Omit both to start 24 hours back.e.g. 2026-10-28T00:00:00Z |
limit | number | optional | Records per call. Default and maximum 40,000.e.g. 1000 |
Sync loop
Call once with from (or nothing, to start 24 hours back), then keep sending the last nextCursor as cursor. Every record is delivered once, in order. An empty data means caught up: wait and call again later with the returned cursor. Save the cursor to resume after a restart.
curl
# Requires: jq. Persist $cursor between runs to resume where you left off. cursor="" while :; do if [ -z "$cursor" ]; then q="from=2026-10-28T00:00:00Z"; else q="cursor=$cursor"; fi reply=$(curl -s 'https://private.stage.questar.io/v2/private-questar-units/daas/v1/readings/feed?'"$q" -H 'Authorization: Bearer YOUR_TOKEN') echo "$reply" | jq -c '.data[]' cursor=$(echo "$reply" | jq -r '.nextCursor') [ "$(echo "$reply" | jq '.data | length')" = "0" ] && sleep 60 done
Notes
Records come back in order. Store the reply's
nextCursor and send it as cursor on the next call; an empty data means you are up to date: still store the returned nextCursor and poll again later. A page never splits records that share a timestamp, so a page can be slightly larger than limit. Ordered by arrival (server) time, so a late upload is still delivered once, in order.Request
curl
curl 'https://private.stage.questar.io/v2/private-questar-units/daas/v1/readings/feed?from=2026-10-28T00:00:00Z&limit=1000' \ -H 'Authorization: Bearer YOUR_TOKEN'
URL
GET https://private.stage.questar.io/v2/private-questar-units/daas/v1/readings/feed?from=2026-10-28T00:00:00Z&limit=1000Response
200 OK
{
"data": [
{
"id": "1-558034907",
"vehicleId": "1-1547894",
"time": "2026-10-28T05:06:07.000Z",
"diagnosticId": "1-36",
"value": 1.96
}
],
"nextCursor": "000001a180e6b6cf"
}Errors use HTTP status codes with a body of { error: { code, message } }: 400 a bad parameter, 401 a missing or invalid token, 404 no record with that id, 500 a server error.
400 Bad Request
{
"error": {
"code": "bad_request",
"message": "History is limited to 24 hours per call"
}
}