> ## Documentation Index
> Fetch the complete documentation index at: https://docs.catenatelematics.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get vehicle utilization benchmarks

> Retrieve a vehicle's daily utilization (meters/day) and percentile rank across all cohorts the vehicle is assigned to. Each entry in the response corresponds to one cohort. Percentile and cohort statistics are suppressed when a cohort is too small to meet the k-anonymity floor.



## OpenAPI

````yaml https://api.catenatelematics.com/v2/intelligence/openapi.json get /v2/intelligence/benchmarks/vehicles/{vehicle_id}/utilization
openapi: 3.1.0
info:
  title: Telematics Intelligence Service - REST API
  description: Telematics Intelligence Service REST API.
  version: 0.1.0
servers:
  - url: https://api.catenatelematics.com
    description: Catena Intelligence API
security: []
tags:
  - name: Analytics
    description: >-
      Endpoints providing analytical insights and aggregated data for vehicles,
      fleets, drivers, and trailers.
  - name: Benchmarks
    description: >-
      Endpoints providing cross-fleet benchmark data. A vehicle's metrics are
      ranked against a cohort of peer vehicles drawn from the full Catena fleet
      population. Cohort statistics are k-anonymised: percentile and cohort
      counts are suppressed when the cohort covers too few distinct fleets to
      protect individual fleet privacy.
paths:
  /v2/intelligence/benchmarks/vehicles/{vehicle_id}/utilization:
    get:
      tags:
        - Benchmarks
      summary: Get vehicle utilization benchmarks
      description: >-
        Retrieve a vehicle's daily utilization (meters/day) and percentile rank
        across all cohorts the vehicle is assigned to. Each entry in the
        response corresponds to one cohort. Percentile and cohort statistics are
        suppressed when a cohort is too small to meet the k-anonymity floor.
      operationId: get_vehicle_utilization_benchmarks
      parameters:
        - name: vehicle_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
            title: Vehicle Id
        - name: from_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: >-
              Inclusive start of the benchmark window. **Format:** YYYY-MM-DD
              **Default:** 30 days before yesterday (trailing-30d hot window).
              **Restriction:** `to_date - from_date` cannot exceed 90 days.
            examples:
              - null
            title: From Date
          description: >-
            Inclusive start of the benchmark window. **Format:** YYYY-MM-DD
            **Default:** 30 days before yesterday (trailing-30d hot window).
            **Restriction:** `to_date - from_date` cannot exceed 90 days.
        - name: to_date
          in: query
          required: false
          schema:
            anyOf:
              - type: string
                format: date
              - type: 'null'
            description: >-
              Inclusive end of the benchmark window. **Format:** YYYY-MM-DD
              **Default:** yesterday (most recent completed day in the
              utilization pipeline). **Restriction:** `to_date - from_date`
              cannot exceed 90 days.
            examples:
              - null
            title: To Date
          description: >-
            Inclusive end of the benchmark window. **Format:** YYYY-MM-DD
            **Default:** yesterday (most recent completed day in the utilization
            pipeline). **Restriction:** `to_date - from_date` cannot exceed 90
            days.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/VehicleUtilizationBenchmark'
                title: Response Get Vehicle Utilization Benchmarks
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BadRequest'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Unauthorized'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Forbidden'
          description: Forbidden
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotFound'
          description: Not Found
        '405':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MethodNotAllowed'
          description: Method Not Allowed
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Conflict'
          description: Conflict
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnprocessableEntity'
          description: Unprocessable Entity
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TooManyRequests'
          description: Too Many Requests
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalServerError'
          description: Internal Server Error
        '501':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NotImplementedResponse'
          description: Not Implemented
      security:
        - Bearer:
            - telematics:read
components:
  schemas:
    VehicleUtilizationBenchmark:
      properties:
        vehicle_id:
          type: string
          format: uuid
          title: Vehicle Id
          description: Catena vehicle identifier.
        cohort_id:
          type: string
          format: uuid
          title: Cohort Id
          description: Cohort the vehicle was benchmarked against.
        window:
          $ref: '#/components/schemas/BenchmarkWindow'
          description: Date range used for the benchmark.
        metric:
          type: string
          const: meters_driven
          title: Metric
          description: 'Metric being benchmarked (v1: always ''meters_driven'').'
          default: meters_driven
        vehicle_value:
          anyOf:
            - type: integer
            - type: 'null'
          title: Vehicle Value
          description: >-
            Vehicle's average meters/day over the window. Null if the vehicle
            has no utilization data.
        percentile:
          anyOf:
            - type: integer
            - type: 'null'
          title: Percentile
          description: >-
            Vehicle's percentile rank (0-100) within the cohort daily
            distribution. Null if suppressed by k-anonymity or data unavailable.
        cohort:
          anyOf:
            - $ref: '#/components/schemas/CohortStats'
            - type: 'null'
          description: >-
            Cohort size metrics. Null if suppressed by k-anonymity or data
            unavailable.
        cached:
          type: boolean
          title: Cached
          description: >-
            True when the response was served from the pre-computed percentile
            cache; False when computed live from daily sketches.
      type: object
      required:
        - vehicle_id
        - cohort_id
        - window
        - vehicle_value
        - percentile
        - cohort
        - cached
      title: VehicleUtilizationBenchmark
      description: >-
        Benchmark response: a vehicle's daily utilization vs its cohort.


        `percentile` and `cohort` are null when the cohort falls below the
        k-anonymity

        floor (too few distinct fleets), regardless of which internal path
        served the

        response. `cached` is informational only.
    BadRequest:
      properties:
        code:
          type: integer
          title: Code
          default: 400
        message:
          type: string
          title: Message
          default: Bad Request
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: BadRequest
    Unauthorized:
      properties:
        code:
          type: integer
          title: Code
          default: 401
        message:
          type: string
          title: Message
          default: Unauthorized
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: Unauthorized
    Forbidden:
      properties:
        code:
          type: integer
          title: Code
          default: 403
        message:
          type: string
          title: Message
          default: Forbidden
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: Forbidden
    NotFound:
      properties:
        code:
          type: integer
          title: Code
          default: 404
        message:
          type: string
          title: Message
          default: Not Found
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: NotFound
    MethodNotAllowed:
      properties:
        code:
          type: integer
          title: Code
          default: 405
        message:
          type: string
          title: Message
          default: Method Not Allowed
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: MethodNotAllowed
    Conflict:
      properties:
        code:
          type: integer
          title: Code
          default: 409
        message:
          type: string
          title: Message
          default: Conflict
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: Conflict
    UnprocessableEntity:
      properties:
        code:
          type: integer
          title: Code
          default: 422
        message:
          type: string
          title: Message
          default: Invalid Request Body
        detail:
          anyOf:
            - items:
                $ref: '#/components/schemas/ValidationErrorDetail'
              type: array
            - type: 'null'
          title: Detail
      type: object
      title: UnprocessableEntity
    TooManyRequests:
      properties:
        code:
          type: integer
          title: Code
          default: 429
        message:
          type: string
          title: Message
          default: Too Many Requests
        detail:
          anyOf:
            - $ref: '#/components/schemas/RetryAfterDetail'
            - type: 'null'
      type: object
      title: TooManyRequests
    InternalServerError:
      properties:
        message:
          type: string
          title: Message
          default: Internal Server Error
      type: object
      title: InternalServerError
    NotImplementedResponse:
      properties:
        code:
          type: integer
          title: Code
          default: 501
        message:
          type: string
          title: Message
          default: Not Implemented
        detail:
          anyOf:
            - type: string
            - type: 'null'
          title: Detail
      type: object
      title: NotImplementedResponse
    BenchmarkWindow:
      properties:
        from_date:
          type: string
          format: date
          title: From Date
          description: Inclusive start of the benchmark window (YYYY-MM-DD).
        to_date:
          type: string
          format: date
          title: To Date
          description: Inclusive end of the benchmark window (YYYY-MM-DD).
      type: object
      required:
        - from_date
        - to_date
      title: BenchmarkWindow
      description: Date range covered by a benchmark response.
    CohortStats:
      properties:
        number_of_vehicles:
          type: integer
          title: Number Of Vehicles
          description: Number of distinct vehicles in the cohort for this window.
        number_of_fleets:
          type: integer
          title: Number Of Fleets
          description: >-
            Number of distinct fleets contributing to the cohort (used for
            k-anonymity).
      type: object
      required:
        - number_of_vehicles
        - number_of_fleets
      title: CohortStats
      description: Aggregated cohort size metrics exposed alongside the percentile.
    ValidationErrorDetail:
      properties:
        path:
          type: string
          title: Path
        input:
          type: string
          title: Input
        message:
          type: string
          title: Message
        error_type:
          type: string
          title: Error Type
      type: object
      required:
        - path
        - input
        - message
        - error_type
      title: ValidationErrorDetail
    RetryAfterDetail:
      properties:
        retry_after_seconds:
          type: integer
          title: Retry After Seconds
        message:
          type: string
          title: Message
      type: object
      required:
        - retry_after_seconds
        - message
      title: RetryAfterDetail
  securitySchemes:
    Bearer:
      type: oauth2
      flows:
        clientCredentials:
          refreshUrl: >-
            https://auth.catenatelematics.com/realms/catena/protocol/openid-connect/token
          scopes: {}
          tokenUrl: >-
            https://auth.catenatelematics.com/realms/catena/protocol/openid-connect/token
        authorizationCode:
          refreshUrl: >-
            https://auth.catenatelematics.com/realms/catena/protocol/openid-connect/token
          scopes: {}
          authorizationUrl: >-
            https://auth.catenatelematics.com/realms/catena/protocol/openid-connect/auth
          tokenUrl: >-
            https://auth.catenatelematics.com/realms/catena/protocol/openid-connect/token

````