openapi: 3.1.0 info: title: Opentrons HTTP Attached Instruments Robot API description: The Opentrons HTTP API is a RESTful JSON-based interface exposed by Opentrons robots (Flex and OT-2) on the local network at port 31950. It enables developers to upload and manage protocols, create and control runs, issue atomic liquid handling commands, and query robot health and hardware state. The API is defined by an OpenAPI specification available directly from the robot at /openapi.json. version: '4' contact: name: Opentrons Support url: https://support.opentrons.com/ email: support@opentrons.com license: name: Apache 2.0 url: https://github.com/Opentrons/opentrons/blob/edge/LICENSE x-api-version-header: Opentrons-Version x-min-api-version: 2 servers: - url: http://{robotIP}:31950 description: Opentrons robot local network server variables: robotIP: default: 192.168.1.100 description: The IP address of the Opentrons robot on the local network tags: - name: Robot description: Robot-level control including estop and door status paths: /robot/control/estopStatus: get: tags: - Robot summary: Get connected estop status description: Get the current status of the emergency stop (estop) button. operationId: getEstopStatus parameters: - $ref: '#/components/parameters/OTVersionHeader' responses: '200': description: Estop status content: application/json: schema: $ref: '#/components/schemas/EstopStatusResponse' /robot/control/acknowledgeEstopDisengage: put: tags: - Robot summary: Acknowledge and clear an Estop event description: Acknowledge that the estop has been disengaged and clear the estop event, allowing normal operation to resume. operationId: acknowledgeEstopDisengage parameters: - $ref: '#/components/parameters/OTVersionHeader' responses: '200': description: Estop event acknowledged content: application/json: schema: $ref: '#/components/schemas/EstopStatusResponse' /robot/door/status: get: tags: - Robot summary: Get the status of the robot door description: Get the current open/closed status of the robot door. operationId: getDoorStatus parameters: - $ref: '#/components/parameters/OTVersionHeader' responses: '200': description: Door status content: application/json: schema: $ref: '#/components/schemas/DoorStatusResponse' components: schemas: DoorStatusResponse: type: object properties: data: type: object properties: status: type: string enum: - open - closed description: The current door status doorRequiredClosedForProtocol: type: boolean description: Whether the door must be closed to run a protocol EstopStatusResponse: type: object properties: data: type: object properties: status: type: string enum: - physicallyEngaged - logicallyEngaged - disengaged - notPresent description: The current estop status leftEstopPhysicalStatus: type: string enum: - engaged - disengaged - notPresent nullable: true rightEstopPhysicalStatus: type: string enum: - engaged - disengaged - notPresent nullable: true parameters: OTVersionHeader: name: Opentrons-Version in: header required: true description: The HTTP API version to use for this request. Must be 2 or higher. Use '*' to get the latest version. schema: oneOf: - type: string enum: - '*' - type: integer minimum: 2 maximum: 4 example: '*'