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

# Get dataset video characteristics

> Returns continuous summaries of blur, Temporal Information, and luminance.
Optional thresholds you supply add above-threshold percentages without
turning those thresholds into service QC policy.

For denominator and comparison guidance, see [Understand quality
metrics](https://docs.hebbianrobotics.com/quality-metrics).



## OpenAPI

````yaml https://api.hebbianrobotics.com/public-openapi.json get /api/v1beta/quality/video-characteristics
openapi: 3.1.0
info:
  description: >-
    Measure video characteristics, hand activity, and content diversity in
    robotics video datasets. Start with `GET /api/v1beta/access`, then list
    available datasets with `GET /api/v1beta/quality/datasets`.
  license:
    identifier: Apache-2.0
    name: Apache-2.0
  title: Robotics Data Quality API
  version: v1beta
servers:
  - description: Production API
    url: https://api.hebbianrobotics.com
security:
  - {}
  - bearer_token: []
tags:
  - description: >-
      Video-characteristics, hand-activity, and content-diversity measurements
      for robotics video data.
    name: quality
  - description: Scope and capabilities granted by a bearer token.
    name: access
paths:
  /api/v1beta/quality/video-characteristics:
    get:
      tags:
        - quality
      summary: Get dataset video characteristics
      description: >-
        Returns continuous summaries of blur, Temporal Information, and
        luminance.

        Optional thresholds you supply add above-threshold percentages without

        turning those thresholds into service QC policy.


        For denominator and comparison guidance, see [Understand quality

        metrics](https://docs.hebbianrobotics.com/quality-metrics).
      operationId: getVideoCharacteristics
      parameters:
        - description: Dataset ID from `GET /api/v1beta/quality/datasets`.
          in: query
          name: dataset
          required: true
          schema:
            type: string
        - description: >-
            Opaque `analysis` token from an earlier response. Omit to use the
            latest

            measurement.
          in: query
          name: analysis
          required: false
          schema:
            type: string
        - description: >-
            Opaque `video_characteristics` token from an earlier response. Omit
            to

            use the latest measurement.
          in: query
          name: video_characteristics
          required: false
          schema:
            type: string
        - description: >-
            Optional blur-score cutoff. When supplied,
            `blur_score.above_threshold`

            reports the percentage of observed frames strictly above it.
          in: query
          name: blur_threshold
          required: false
          schema:
            format: double
            minimum: 0
            type: number
        - description: |-
            Optional Temporal Information cutoff. When supplied,
            `temporal_information.above_threshold` reports the percentage of
            observed frame pairs strictly above it.
          in: query
          name: temporal_information_threshold
          required: false
          schema:
            format: double
            minimum: 0
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoCharacteristicsResponse'
          description: >-
            Video-characteristic distributions, optional threshold results, and
            coverage
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The dataset ID or measurement-token combination is invalid
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: A valid bearer token is required
          headers:
            WWW-Authenticate:
              description: Bearer authentication challenge
              schema:
                type: string
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The bearer token cannot read quality measurements
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The dataset or video-characteristics measurement is unavailable
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The server could not read video-characteristics measurements
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '503':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The server is temporarily unavailable or overloaded
          headers:
            Retry-After:
              description: Seconds to wait before retrying an overloaded request
              schema:
                type: string
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
        '504':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
          description: The request exceeded the server processing deadline
          headers:
            x-request-id:
              description: >-
                Request correlation identifier supplied by the caller or
                generated by the API
              schema:
                type: string
      security:
        - bearer_token: []
components:
  schemas:
    VideoCharacteristicsResponse:
      description: >-
        Dataset-level continuous frame measurements and measurement
        completeness.
      properties:
        analysis:
          description: Opaque token identifying the analysis used for this response.
          type: string
        blur_score:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: Edge-spread blur score distribution. Higher values mean more blur.
        coverage_percent:
          description: >-
            Percentage of the planned analysis that successfully produced values

            used in this response, in `[0, 100]`. This is measurement
            completeness,

            not the percentage of footage that passed quality control. `null`
            when

            the planned result count cannot be determined reliably. Non-null
            values

            are rounded to two decimal places.
          format: double
          maximum: 100
          minimum: 0
          type:
            - number
            - 'null'
        dataset:
          description: Dataset ID used in the request.
          type: string
        frames_measured:
          description: Frames included in these summaries.
          format: int64
          minimum: 0
          type: integer
        luma:
          $ref: '#/components/schemas/FrameLumaSummaryDto'
          description: Luminance distributions on an 8-bit 0-255 scale.
        temporal_information:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: |-
            Temporal Information distribution. Higher values mean more
            consecutive-frame change, which can suggest jerkiness or instability
            but can also reflect fast valid motion.
        video_characteristics:
          description: Opaque token identifying the video-characteristics measurement.
          type: string
      required:
        - dataset
        - analysis
        - video_characteristics
        - coverage_percent
        - frames_measured
        - blur_score
        - temporal_information
        - luma
      type: object
    ApiErrorBody:
      description: Error payload returned for handled API failures.
      properties:
        code:
          description: Machine-readable error code, e.g. `dataset_not_found`.
          type: string
        message:
          description: Human-readable message.
          type: string
      required:
        - code
        - message
      type: object
    FrameMetricSummaryDto:
      description: Bounded-memory descriptive statistics for one numeric per-frame signal.
      properties:
        above_threshold:
          oneOf:
            - type: 'null'
            - $ref: '#/components/schemas/FrameMetricThresholdResultDto'
              description: >-
                Exact result for a threshold supplied in this request. Omitted
                when you

                did not supply a threshold for this metric.
        maximum:
          description: Largest observation, or `null` when none were available.
          format: double
          type:
            - number
            - 'null'
        mean:
          description: Arithmetic mean, or `null` when none were available.
          format: double
          type:
            - number
            - 'null'
        minimum:
          description: Smallest observation, or `null` when none were available.
          format: double
          type:
            - number
            - 'null'
        observed_frames:
          description: Frames with a finite value for this metric.
          format: int64
          minimum: 0
          type: integer
        population_standard_deviation:
          description: Population standard deviation, or `null` when none were available.
          format: double
          minimum: 0
          type:
            - number
            - 'null'
        unavailable_frames:
          description: >-
            Measured frames without a value for this metric. For example, the
            first

            frame of each measured sequence has no Temporal Information because
            it

            has no predecessor.
          format: int64
          minimum: 0
          type: integer
      required:
        - observed_frames
        - unavailable_frames
        - minimum
        - maximum
        - mean
        - population_standard_deviation
      type: object
    FrameLumaSummaryDto:
      description: |-
        Continuous luminance summaries. These expose the measurements that can
        inform darkness, featurelessness, or coding-limit rules without choosing
        your rules for you.
      properties:
        average:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: Distribution of each frame's mean 8-bit luma (`YAVG`).
        ninetieth_percentile:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: Distribution of each frame's 90th-percentile 8-bit luma (`YHIGH`).
        percentile_spread:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: >-
            Distribution of `YHIGH - YLOW`, a robust measure of how much luma
            range

            each frame uses.
        tenth_percentile:
          $ref: '#/components/schemas/FrameMetricSummaryDto'
          description: Distribution of each frame's 10th-percentile 8-bit luma (`YLOW`).
      required:
        - average
        - tenth_percentile
        - ninetieth_percentile
        - percentile_spread
      type: object
    FrameMetricThresholdResultDto:
      description: Result of evaluating one threshold from your request.
      properties:
        percent_above:
          description: >-
            Percentage of observed frames strictly above `threshold`, in `[0,
            100]`.

            `null` when the enclosing metric has no observations. Non-null
            values

            are rounded to two decimal places.
          format: double
          maximum: 100
          minimum: 0
          type:
            - number
            - 'null'
        threshold:
          description: The cutoff you supplied. Only observations strictly above it count.
          format: double
          minimum: 0
          type: number
      required:
        - threshold
        - percent_above
      type: object
  securitySchemes:
    bearer_token:
      description: Bearer access token issued through OAuth 2.0 client credentials.
      scheme: bearer
      type: http

````