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

# List robot runs

> Lists your completed runs by robot, then run name, oldest first. A run shows up once `complete` has accepted it. Page with `cursor`.



## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/robot/runs
openapi: 3.1.0
info:
  title: Abstract API
  version: 1.0.0
  summary: Robot action models and LLMs behind one API key.
  description: >
    `POST /v1/chat/completions` serves the robot action models. `POST
    /v1/responses` and

    `GET /v1/responses/{response_id}` serve the LLM models through the OpenAI
    Responses API.

    `GET /v1/models` lists the LLM model ids.


    The robot models also run over a WebSocket at
    `wss://api.abstract.inc/v1/responses`.

    OpenAPI does not describe it. See [Sessions over
    WebSocket](/robots/sessions).


    `/v1/robot/runs` stores your robot runs (episode logs, the Rerun recording
    with the

    camera video) under your account, and lists, downloads and deletes them.
    Only the key's

    account reaches its runs. An account stores up to 100 GiB of runs;

    `GET /v1/robot/runs/usage` shows what it holds.
  contact:
    name: Abstract
    url: https://abstract.inc
servers:
  - url: https://api.abstract.inc
security:
  - bearerAuth: []
tags:
  - name: Robot models
  - name: Robot runs
  - name: LLM models
paths:
  /v1/robot/runs:
    get:
      tags:
        - Robot runs
      summary: List robot runs
      description: >-
        Lists your completed runs by robot, then run name, oldest first. A run
        shows up once `complete` has accepted it. Page with `cursor`.
      operationId: listRobotRuns
      parameters:
        - name: robot
          in: query
          required: false
          description: Only this robot's runs.
          schema:
            type: string
            pattern: ^[a-z0-9][a-z0-9._-]{0,63}$
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 100
        - name: cursor
          in: query
          required: false
          description: The `cursor` of the previous page.
          schema:
            type: string
      responses:
        '200':
          description: One page of runs.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RobotRunList'
              example:
                runs:
                  - robot: t800
                    run: 20261012-053736
                    files: 9
                    bytes: 9349120
                    completed_at: '2026-10-12T05:40:12.000Z'
                    episode:
                      outcome: partial
                      policy: isaac-0.5
                      kind: vla
                      task: fold-the-cloth
                      tags:
                        - cloth
                cursor: null
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          description: '`invalid_request`: a name, path, query or body breaks its format.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: '`storage_unavailable` or `auth_unavailable`. Retry with backoff.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    RobotRunList:
      type: object
      required:
        - runs
        - cursor
      properties:
        runs:
          type: array
          items:
            type: object
            required:
              - robot
              - run
              - files
              - bytes
              - completed_at
              - episode
            properties:
              robot:
                type: string
              run:
                type: string
              files:
                type: integer
              bytes:
                type: integer
              completed_at:
                type: string
                format: date-time
              episode:
                type: object
        cursor:
          type:
            - string
            - 'null'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - message
            - type
            - code
          properties:
            message:
              type: string
              description: For people. It can change.
            type:
              type: string
            param:
              type:
                - string
                - 'null'
              description: The request field at fault, when one is.
            code:
              type: string
              description: Branch on this. See [Errors and limits](/errors).
  responses:
    Unauthorized:
      description: '`missing_api_key` or `invalid_api_key`.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            error:
              message: Invalid API key.
              type: invalid_request_error
              code: invalid_api_key
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Your Abstract API key. Get it with `abstract login`, pass it as
        `$(abstract token)`.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.