{ "title": "Create a Run from an Uploaded Protocol", "description": "Example request and response for creating a new protocol run on an Opentrons robot. The protocol must already be uploaded. Optionally include labware offsets and runtime parameter values.", "request": { "method": "POST", "url": "http://{ROBOT_IP}:31950/runs", "headers": { "Opentrons-Version": "*", "Content-Type": "application/json" }, "body": { "data": { "protocolId": "protocol-abc123", "labwareOffsets": [ { "definitionUri": "opentrons/opentrons_96_tiprack_1000ul/1", "location": { "slotName": "1" }, "vector": { "x": 0.1, "y": -0.2, "z": 0.0 } } ], "runTimeParameterValues": { "num_samples": 24, "aspirate_volume": 100.0, "use_module": true } } } }, "response": { "status": 201, "headers": { "Content-Type": "application/json", "Opentrons-Version": "4", "Opentrons-Min-Version": "2" }, "body": { "data": { "id": "run-xyz789", "createdAt": "2026-06-13T14:30:00.000Z", "status": "idle", "current": true, "protocolId": "protocol-abc123", "actions": [], "errors": [], "pipettes": [], "labware": [], "modules": [], "liquids": [], "runTimeParameters": [ { "variableName": "num_samples", "displayName": "Number of Samples", "value": 24, "type": "int" }, { "variableName": "aspirate_volume", "displayName": "Aspirate Volume (uL)", "value": 100.0, "type": "float" }, { "variableName": "use_module", "displayName": "Use Temperature Module", "value": true, "type": "bool" } ], "labwareOffsets": [ { "id": "offset-001", "createdAt": "2026-06-13T14:30:00.000Z", "definitionUri": "opentrons/opentrons_96_tiprack_1000ul/1", "location": { "slotName": "1" }, "vector": { "x": 0.1, "y": -0.2, "z": 0.0 } } ] }, "links": { "self": { "href": "/runs/run-xyz789" }, "commands": { "href": "/runs/run-xyz789/commands", "meta": { "cursor": 0, "totalLength": 0 } }, "current": { "href": "/runs/run-xyz789" } } } } }