Skip to content
Proaction
TelematicsAPI v1
DocumentationFleet utilization

Usage / API reference

Fleet utilization

Read per-asset observed usage summaries for the authorized fleet.

GET/v1/connections/{id}/utilization

Authentication: Bearer consumer API key with an explicit connection grant.

Preview contract. Availability depends on the deployed release, authorized connection and asset.

How to use this endpoint

  • Returns up to ten assets per page. Pass nextCursor as after until it is null, keeping the time window fixed.
  • Each asset has independent coverage. Do not average percentages without considering observed time.
  • This is a live query over stored observations, not a frozen report. Late readings can change later results.

Parameters

NameWhereRequiredType and behavior
idpathYesstring
startTimequeryYesstring

RFC3339 with offset. History: inclusive; counters use only samples within the window. No interpolation.

endTimequeryYesstring

After startTime and no later than now. History: exclusive. Counter summaries permit a boundary sample at endTime.

afterqueryNostring

Opaque provider vehicle ID from nextCursor. Keep the same time window when paging.

Request example

bash
curl "$TELEMATICS_ORIGIN/v1/connections/$CONNECTION_ID/utilization?startTime=2026-10-01T00:00:00Z&endTime=2026-10-01T00:20:00Z" \
  --header "Authorization: Bearer $TELEMATICS_CONSUMER_KEY"

Response fields

HTTP 200 returns FleetUtilization. Fields listed as required are guaranteed by this contract; optional fields may be absent.

FieldTypeRequired
windowWindowYes
vehiclesUtilization[]Yes
nextCursorstring | nullYes

Nested field shapes and constraints are defined in the OpenAPI contract. For latest telemetry values, see normalized units and availability.

Response example

Synthetic values; this is a shape example, not a live customer response.

json
{
  "window": {
    "startTime": "2026-10-01T00:00:00Z",
    "endTime": "2026-10-01T00:20:00Z"
  },
  "vehicles": [
    {
      "vehicleId": "asset-001",
      "window": {
        "startTime": "2026-10-01T00:00:00Z",
        "endTime": "2026-10-01T00:20:00Z"
      },
      "definition": "engine_runtime_over_observed_time_v1",
      "maxObservationGapSeconds": 1800,
      "engineRuntime": {
        "status": "complete",
        "value": 300,
        "coverageSeconds": 1200,
        "coveragePercent": 100,
        "sampleCount": 2,
        "excludedIntervals": 0,
        "sources": [
          "example:engine-counter"
        ],
        "intervals": [
          {
            "startTime": "2026-10-01T00:00:00Z",
            "endTime": "2026-10-01T00:20:00Z",
            "amount": 300
          }
        ],
        "unit": "seconds"
      },
      "engineNotRunning": {
        "status": "complete",
        "value": 900,
        "unit": "seconds",
        "coverageSeconds": 1200
      },
      "engineOnPercentOfObservedTime": 25,
      "distance": {
        "status": "missing",
        "value": null,
        "coverageSeconds": 0,
        "coveragePercent": 0,
        "sampleCount": 0,
        "excludedIntervals": 0,
        "sources": [],
        "intervals": [],
        "unit": "meters"
      },
      "idleTime": {
        "status": "missing",
        "value": null,
        "coverageSeconds": 0,
        "coveragePercent": 0,
        "sampleCount": 0,
        "excludedIntervals": 0,
        "sources": [],
        "intervals": [],
        "unit": "seconds"
      },
      "limitations": [
        "Runtime includes idling and PTO; it is not productive work or availability utilization.",
        "Only same-source counter pairs within 30 minutes are counted. Resets, source changes and larger gaps are excluded.",
        "Unobserved time is unknown. No interpolation or backfill is assumed."
      ]
    }
  ],
  "nextCursor": null
}

Errors and retries

HTTP statusMeaning
400Invalid time window, metric or cursor
401Consumer authentication denied
404Resource missing or connection access denied
413Requested utilization has more than 10,000 readings; narrow the window
503Service or database unavailable

Errors return {"error":"reason_code"}. Honor Retry-After when a 429 includes it. Permission and provider failures never become zero-valued telemetry. Connection health and reading status provide separate signals.

Response schema
{
  "type": "object",
  "properties": {
    "window": {
      "$ref": "#/components/schemas/Window"
    },
    "vehicles": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/Utilization"
      }
    },
    "nextCursor": {
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "window",
    "vehicles",
    "nextCursor"
  ]
}

← API overview · Download OpenAPI

Proaction TelematicsOne API for your fleet data.

Search documentation