> ## 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.

# Footage-weighted hand visibility and active-manipulation shares reduced
from one stored hand-activity analysis.

> This endpoint performs no model call. It reads the stored span evidence and
divides its seconds by successfully answered footage, exactly as `squash
inspect hand-activity` does. Refused and unusable windows are excluded from
the denominator and reported beside it.



## OpenAPI

````yaml https://api.hebbianrobotics.com/openapi.json get /api/quality/hand-activity
openapi: 3.1.0
info:
  title: squash
  description: >-
    Semantic search and debugging over LeRobot robot-episode datasets: register
    and index datasets, search episodes by natural language with frame-level
    evidence, inspect and annotate episodes, run episode-level analytics, export
    selections as new LeRobot datasets, and follow every operation live on the
    global event stream.


    Requests may select an organization's data by sending its id in the
    `X-Squash-Organization-Id` header; without it a request is scoped to public
    data.
  license:
    name: Apache-2.0
    identifier: Apache-2.0
  version: 0.0.0
servers:
  - url: https://api.hebbianrobotics.com
    description: Hosted squash API
security:
  - {}
  - bearer_token: []
tags:
  - name: search
    description: Natural-language search over indexed episodes.
  - name: episodes
    description: >-
      Browse, inspect, and stream one episode's metadata, frames, and
      timeseries.
  - name: datasets
    description: Register datasets, follow indexing, and manage catalog entries.
  - name: analytics
    description: >-
      Corpus-level measurements: similarity, near-duplicates, coverage, and
      consistency.
  - name: quality
    description: >-
      Stored Quality Indexing reports: diversity and cleanliness scores over an
      enriched corpus.
  - name: annotations
    description: 'Human curation: episode annotations and mutually-exclusive curation flags.'
  - name: exports
    description: Export a selection of episodes as a new LeRobot dataset.
  - name: jobs
    description: 'Durable pipeline jobs: acquisition, conversion, and their records.'
  - name: backfills
    description: Queue derived-artifact backfills against an active index.
  - name: events
    description: Server-sent event streams of live activity.
  - name: access
    description: The effective capabilities of the calling principal.
paths:
  /api/quality/hand-activity:
    get:
      tags:
        - quality
      summary: |-
        Footage-weighted hand visibility and active-manipulation shares reduced
        from one stored hand-activity analysis.
      description: >-
        This endpoint performs no model call. It reads the stored span evidence
        and

        divides its seconds by successfully answered footage, exactly as `squash

        inspect hand-activity` does. Refused and unusable windows are excluded
        from

        the denominator and reported beside it.
      operationId: hand_activity_route
      parameters:
        - name: dataset
          in: query
          description: Dataset or corpus id whose index root holds the analysis.
          required: true
          schema:
            type: string
        - name: analysis
          in: query
          description: One stored hand-activity run. Omit for the most recent.
          required: false
          schema:
            type:
              - string
              - 'null'
      responses:
        '200':
          description: Stored hand-activity shares and their denominator
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HandActivityResponse'
        '400':
          description: Invalid dataset id
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '401':
          description: A valid bearer credential is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
        '404':
          description: No hand-activity clips are stored at this analysis address
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiErrorBody'
      security:
        - bearer_token: []
components:
  schemas:
    HandActivityResponse:
      type: object
      description: >-
        Response of `GET /api/quality/hand-activity`: footage-weighted shares

        reduced from one stored hand-activity analysis.


        The shares describe only successfully answered footage. Refused and

        schema-invalid windows are counted separately so a caller can see when
        the

        denominator is smaller than the requested corpus.
      required:
        - dataset
        - analysis
        - clips
        - measured_seconds
        - segments_unassessed
        - segments_unusable
      properties:
        active_manipulation_share:
          type:
            - number
            - 'null'
          format: double
          description: Share of measured footage showing active manipulation.
        analysis:
          type: string
          description: >-
            The stored hand-activity run these figures came from — the one asked

            for, or the most recent when none was named. Opaque, and echoed so
            two

            answers a week apart can be told apart: same token means the corpus
            was

            not re-measured between them.
        clips:
          type: integer
          description: Stored clip artifacts in the analysis.
          minimum: 0
        dataset:
          type: string
        hands_visible_share:
          type:
            - number
            - 'null'
          format: double
          description: >-
            Share of measured footage with at least one camera-wearer hand
            visible.
        measured_seconds:
          type: number
          format: double
          description: 'Successfully answered footage: the denominator of every share.'
        segments_unassessed:
          type: integer
          description: >-
            Segments that could not be assessed, excluded from
            `measured_seconds`.
          minimum: 0
        segments_unusable:
          type: integer
          description: Segments whose assessment was unusable, also excluded.
          minimum: 0
        two_hands_visible_share:
          type:
            - number
            - 'null'
          format: double
          description: Share of measured footage with both camera-wearer hands visible.
    ApiErrorBody:
      type: object
      description: Error payload returned by every failing API route.
      required:
        - code
        - message
      properties:
        code:
          type: string
          description: Machine-readable error code, e.g. `dataset_not_found`.
        message:
          type: string
          description: Human-readable message.
  securitySchemes:
    bearer_token:
      type: http
      scheme: bearer
      description: >-
        Capability-bearing token issued by a squash operator. Required for
        curation, exports, dataset registration, and job control when the
        deployment runs in gated mode; public reads stay open. `GET /api/access`
        reports the capabilities a given credential actually carries.

````