---
title: "Launch a lab"
slug: "launch-a-lab-1"
updated: 2025-08-07T14:39:28Z
published: 2025-08-07T14:41:42Z
---

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

# Launch a lab

Get/launch

The **Launch** command will launch a specified lab for a specified user.

SecurityAPI Key: api_keyHeader parameter nameapi_key

All methods require an API key, which must be obtained from Skillable. This key is used by Skillable to validate your account. The key can be passed as an HTTP request header with the header name "api_key".

Query parameterslabidinteger (int32) Required

The ID of the lab profile.

Example100
useridstringRequired

The ID you use to identify the user in your external system.

Example555
firstnamestring

An optional parameter used to set the user’s first name. If this value is not provided for a new user a random anonymized value in the format 'anon-#######' will be created.

ExampleJoe
lastnamestring

An optional parameter used to set the user’s last name. If this value is not provided for a new user a random anonymized value in the format 'anon-########' will be created.

ExampleSmith
emailstring

An optional parameter used to set the user’s email address.

Examplejoe.smith@email.com
classIdstring

An optional parameter used to associate the lab with a class (see **GetOrCreateClass**). This is the unique identifier of the class as it is represented in your organization.

Example1223334444
canBeMarkedCompleteinteger (int32) 

An optional parameter used to specify if the lab can be marked as complete by the student. 1 = true, 2 = false. If not specified, defaults to 1 (true).

Valid values[
  1,
  2
]Default1Example1
tagstring

An optional parameter that can be used for tagging the lab instance with your own custom data.

Exampletestlaunch
ipAddressstring

When specified, Skillable will attempt to launch the lab in the closest available delivery region. You should provide the IP address of the user that is taking the lab, not the IP address of your system. IPv4 and IPv6 address are supported.

Example1.1.1.1
regionIdinteger (int32) 

When specified, Skillable will attempt to launch the lab in the specified delivery region if a suitable host in that region is available and all required storage is available in that region. Delivery regions can be found using the **DeliveryRegions** command or **Catalog** command. Using the ipAddress parameter will result in a more reliable geo-location of the lab for the end user.

Example1
roleIdinteger (int32) 

Allows you specify the role(s) to assign to the user. You may pass multiple instances of this parameter to specify multiple roles. Roles are used for specialized integration purposes and are not needed in typical integration scenarios. Role IDs will be provided by Skillable when appropriate.

Example1
variable-namestring

Allows you to set the values of named variables used within the lab instance. The key must start with the fixed text **variable-**.

ExampleChad
maxSavedLabsinteger (int32) 

The max number of labs an individual user may save is capped by the number configured on your API consumer.

Example2
maxActiveLabsinteger (int32) 

The max number of concurrent lab instances is capped by the number configured on your API consumer.

Example1
langstring

Allows you to override the language of the Instruction Set as well as the lab client UI language. This affects lab client UI elements like menus, tabs, and dialogs. Using this in connection with **instructionsId** will allow you to select launching labs with a specific Instruction Set in the specified language if they have been defined within the lab profile.

NOTE: If this parameter is omitted, or if the specified language is not specified on one of the Instruction sets in a lab profile, then the default language as defined in the **Lab Profile ➔ Manage Instructions Sets** option.

en = English es = Spanish fr = French de = German pt = Portuguese ja = Japanese zh-hans = Simplified Chinese zh-hant = Traditional Chinese ko = Korean

Valid values[
  "en",
  "es",
  "fr",
  "de",
  "pt",
  "ja",
  "zh-hans",
  "zh-hant",
  "ko"
]Exampleen
instructionsIdstring

When specified, Skillable will attempt to launch the lab and present the selected instructions. If not specified, or the instruction Id could not be found, the default instructions, as defined on the Lab Profile, will be used instead. This is a string that cannot contain spaces.

NOTE: To be able to see how to use this parameter, add the column "**API Example**" in the **Manage Instruction Sets** feature while editing the instructions.

ExampleBase-01
durationMinutesinteger

An optional parameter used to adjust the lab timer duration, requires "Allow Lab Duration Customizations" setting to be enabled for the API Consumer. Value can be between a minimum of 15 minutes and a maximum of 1.5 the lab profile configured time. The absolute max is 20160 minutes (approximately 14 days).

lastActivityTimeoutMinutesinteger

An optional parameter used to adjust the last activity timeout of the launched lab, requires "Allow Lab Duration Customizations" setting to be enabled for the API Consumer. Value can be between a minimum of 1 minute and absolute max is 20160 minutes (approximately 14 days).

Responses200

OK Response.

<select class='api-response-data' aria-label='Media type'><option value='19babf14-35d5-4f9b-b628-6416cde0f0c2'>application/json</option>
</select><select class='select-example' aria-label='Media type'><option value='4231e564-6837-4ce1-ad9a-f12b63efc3ca'>Example of a successful lab instance launch</option>
</select>Example of a successful lab instance launch

```json
{
  "Result": 1,
  "Url": "https://labondemand.com/console/setup/1b4909d6-0dbe-43db-9ab9-74ee4f913c4e",
  "LabInstanceId": 3896477,
  "Expires": 1337977153,
  "Status": 1,
  "Error": null
}
```

object  Resultinteger  (int32)    

Result of the launch command. Possible values are: 0 = Error 1 = Success 2 = User has too many active labs 3 = Insufficient host resources 5 = API integration has too many active labs 6 = User has a saved instance of this lab 7 = API integration doesn't have enough available RAM 10 = User doesn't have enough available RAM 20 = User's organization has too many active labs 30 = User's organization doesn't have enough available RAM 40 = Lab profile has too many active instances 50 = Lab organization doesn't have enough available RAM 60 = Lab organization has too many active instances 70 = Lab series has too many active instances 80 = Lab series doesn't have enough available RAM 90 = Too many labs within the specified class are currently active for another lab to be launched. 100 = User has launched the maximum number of instances of this lab profile. 110 = This lab is not currently available for launch via API. It is awaiting security review. 120 = Lab instance is not in the correct state to perform the requested action. 130 = This lab is not currently available for launch via API. It is awaiting security review. 140 = The request is invalid or contains invalid parameters. 150 = The participant lab instance cannot be launched because the shared class environment is not currently available. 160 = The lab cannot be launched because the user is required to provide additional information.

Urlstring    

A URL where the lab can be viewed by the user.

LabInstanceIdinteger  (int64)    

The Id assigned to the new lab instance.

Expiresinteger  (int64)    

When the lab will expire (in Unix epoch time).

Statusinteger    

Indicates the status of the API request. 0 = Error 1 = Success

Errorstring   | null  

In the event of an error, this will contain a detailed error message.
