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

# Resume a multipart upload

> Returns its state and acknowledged parts. Resume missing parts while uploading; retry completion while assembling or publishing. A completed receipt is returned only while that file version is still stored.



## OpenAPI

````yaml /api-reference/openapi.yaml get /v1/robot/runs/{robot}/{run}/uploads/{path}
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/{robot}/{run}/uploads/{path}:
    get:
      tags:
        - Robot runs
      summary: Resume a multipart upload
      description: >-
        Returns its state and acknowledged parts. Resume missing parts while
        uploading; retry completion while assembling or publishing. A completed
        receipt is returned only while that file version is still stored.
      operationId: getRobotRunUpload
      parameters:
        - $ref: '#/components/parameters/Robot'
        - $ref: '#/components/parameters/Run'
        - $ref: '#/components/parameters/FilePath'
        - name: upload_id
          in: query
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Current upload state.
          content:
            application/json:
              schema:
                type: object
                properties:
                  state:
                    type: string
                    enum:
                      - uploading
                      - assembling
                      - publishing
                      - complete
                  size:
                    type: integer
                  sha256:
                    type: string
                  parts:
                    type: array
                    items:
                      type: object
                      properties:
                        part:
                          type: integer
                        etag:
                          type: string
                        size:
                          type: integer
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Upload expired, was aborted, or its completed file was replaced.
components:
  parameters:
    Robot:
      name: robot
      in: path
      required: true
      description: Your robot's name, for example `t800`.
      schema:
        type: string
        pattern: ^[a-z0-9][a-z0-9._-]{0,63}$
    Run:
      name: run
      in: path
      required: true
      description: The run's name, its start time as `YYYYMMDD-HHMMSS`.
      schema:
        type: string
        pattern: ^\d{8}-\d{6}$
    FilePath:
      name: path
      in: path
      required: true
      description: >-
        The file's path in the run. It may hold `/`; up to 8 segments of
        letters, digits, `.`, `_` and `-`, each starting with a letter or digit,
        512 bytes in all. `manifest.json` at the top is the server's.
      schema:
        type: string
  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
  schemas:
    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).
  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.