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

# Returns instructions for a specific lab

> The **GetLabInstructions** command allows you to download the IDLx instructions of a lab as a string.

## OpenAPI

````json GET /GetLabInstructions
{
  "openapi": "3.0.3",
  "info": {
    "title": "Lab API",
    "description": "# Introduction \nWelcome to Skillable Connect: LAB Edition, our core platform for creating, customizing, and managing labs. \n\n## Skillable Production API & Integration Testing\nOnly lab profiles with a development status of **Complete** are consumable via API.\n\nDevelopment/Integration Testing API available with all the same API calls your production API can make, but has the following settings:\n\n- Max Active Lab Instances: 5\n- Max Saved Labs per User: 1\n- Max Active Lab Instances per user: 5\n- Max lab duration: 30 minutes\n- Allows launching of lab profiles with any Development Status (i.e. is not restricted to a Complete development status)\n- Has a dedicated API key\n- Does not generate billable events\n\n## Authenticate with API Key\nSkillable APIs offer one form of authentication: an API Key. All methods require an API Key, which must be obtained from a Skillable team member working with your organization. Our systems use this key to validate your development account. \n\nPass your API Key as an HTTP request header with the header name \"api_key\".\n\n\n<SecurityDefinitions />\n",
    "termsOfService": "https://skillable.com/terms-and-conditions/",
    "contact": {
      "name": "Skillable Support",
      "email": "support@skillable.com",
      "url": "https://skillable.com/customer-support/"
    },
    "x-logo": {
      "url": "https://raw.githubusercontent.com/LearnOnDemandSystems/ConnectAPI/main/Skillable%20Connect%20Logo.svg",
      "altText": "Skillable Connect"
    },
    "license": {
      "name": "Apache 2.0",
      "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
    },
    "version": "3.0"
  },
  "servers": [
    {
      "url": "https://labondemand.com/api/v3",
      "description": "Skillable Connect LAB API"
    }
  ],
  "security": [
    {
      "api_key": []
    }
  ],
  "tags": [
    {
      "name": "Lab Instance Management",
      "description": "The Lab Instance Management group of API commands allows interacting with lab instances. This includes but is not limited to the following actions: \n* [Launch a lab](https://connect.skillable.com/lab/operation/Launch/) \n* [Cancel a lab](https://connect.skillable.com/lab/operation/Cancel/)\n* [Save a lab](https://connect.skillable.com/lab/operation/Save/) \n* [Resuming a lab](https://connect.skillable.com/lab/operation/Resume/) \n* [Initiate scoring of activities in a lab](https://connect.skillable.com/lab/operation/ScoreActivities/) \n* [Send notifications to a lab](https://connect.skillable.com/lab/operation/SendNotification-post/) \n* [Retrieve information about lab instances](https://connect.skillable.com/lab/operation/Results/)"
    },
    {
      "name": "Lab Profile Management",
      "description": "The Lab Profile Management group of API commands allows for managing instructions and retrieving information about Lab Profiles within Skillable Studio. \n* [Retrieve information about a specific lab profile](https://connect.skillable.com/lab/operation/LabProfile/) \n* [Retrieve lab instructions for a specific lab](https://connect.skillable.com/lab/operation/LabProfile/) \n* [Download instructions in a zip file for a specific lab](https://connect.skillable.com/lab/operation/GetLabInstructionsPackage/) \n* [Update lab instructions for a specific lab profile using an HTTP post](https://connect.skillable.com/lab/operation/UpdateLabInstructions/) \n* [Update lab instructions for a specific lab by uploading a zip file](https://connect.skillable.com/lab/operation/UpdateLabInstructionsPackage/) "
    },
    {
      "name": "Class Management",
      "description": "The Class Management group of API commands allows for the creation, management, access, and monitoring of classes within Skillable Studio. \n* [Retrieve information about a class in Skillable Studio](https://connect.skillable.com/lab/operation/Class/) \n* [Retrieve information about an existing class, if the class does not exist, it will be created](https://connect.skillable.com/lab/operation/GetOrCreateClass/)       \n* [Return a single access URL to access a class management page](https://connect.skillable.com/lab/operation/ClassAccessUrl/) \n* [Return a single use URL to monitor a lab instance](https://connect.skillable.com/lab/operation/LabMonitorUrl/) \n* [Return a single use URL to access a lab instance](https://connect.skillable.com/lab/operation/LabAccessUrl/) \n* [Update a specific class](https://connect.skillable.com/lab/operation/UpdateClass/) \n* [Delete a specific class](https://connect.skillable.com/lab/operation/DeleteClass/) "
    },
    {
      "name": "User Management",
      "description": "The User Management group of API commands are used to administer user accounts within Skillable Studio.\n* [Return information about saved or running labs for a specific user account](https://connect.skillable.com/lab/operation/UserRunningAndSavedLabs/)  \n* [Close a user account and remove all associated user information](https://connect.skillable.com/lab/operation/CloseUserAccount/) "
    },
    {
      "name": "Event Management",
      "description": "The Event Management group of API commands allows for launching lab profiles for events and retrieving evaluation responses.\n* [Launch a lab within an event](https://connect.skillable.com/lab/operation/LaunchforEvent/) \n* [Launch a lab within an event, using an external ID](https://connect.skillable.com/lab/operation/LaunchforEventByExternalId/) \n* [Retrieve evaluation data for a specified event](https://connect.skillable.com/lab/operation/GetEvaluationResponsesForEvent/) "
    },
    {
      "name": "Organization",
      "description": "Organizational API commands provide the ability to return information about lab profiles, lab series, and delivery regions available to your organization in Skillable Studio.\n* [Retrieve information about lab profiles, lab series, and delivery regions available to your organization](https://connect.skillable.com/lab/operation/Catalog/) \n* [Retrieve information about delivery regions that are available to your organization](https://connect.skillable.com/lab/operation/DeliveryRegions/) "
    }
  ],
  "paths": {
    "/GetLabInstructions": {
      "get": {
        "summary": "Returns instructions for a specific lab",
        "description": "The **GetLabInstructions** command allows you to download the IDLx instructions of a lab as a string.",
        "operationId": "GetLabInstructions",
        "parameters": [
          {
            "name": "id",
            "in": "query",
            "description": "The ID of the lab profile that will be the source of the instructions. The profile must be owned by the organization on the API consumer.",
            "required": "true",
            "style": "form",
            "explode": "true",
            "schema": {
              "type": "integer",
              "format": "int32",
              "example": "2393048"
            }
          },
          {
            "name": "lang",
            "in": "query",
            "description": "Allows you to select the language of the Instruction Set. Using this in connection with <strong>instructionsId</strong> will allow you to select a specific lab Instruction Set in the specified language if they have been defined within the lab profile.  \n  \nNOTE: 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 <strong>Lab Profile &#10132; Manage Instructions Sets</strong> option will be used instead.  \n\nen = English  \nes = Spanish  \nfr = French  \nde = German  \npt = Portuguese  \nja = Japanese  \nzh-hans = Simplified Chinese  \nzh-hant = Traditional Chinese  \nko = Korean ",
            "required": "false",
            "style": "form",
            "explode": "true",
            "schema": {
              "type": "string",
              "enum": [
                "en",
                "es",
                "fr",
                "de",
                "pt",
                "ja",
                "zh-hans",
                "zh-hant",
                "ko"
              ],
              "example": "en"
            }
          },
          {
            "name": "instructionsId",
            "in": "query",
            "description": "When specified, Skillable will attempt to retrieve 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.  \n\nNOTE: To be able to see how to use this parameter, add the column \"<strong>API Example</strong>\" in the <strong>Manage Instruction Sets</strong> feature while editing the instructions.  ",
            "required": "false",
            "style": "form",
            "explode": "true",
            "schema": {
              "type": "string",
              "example": "Base-01"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK Response.",
            "headers": {},
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetLabInstructionsResponse"
                },
                "examples": {
                  "Example of retrieving the instructions from a lab": {
                    "value": {
                      "Instructions": "##Welcome to the world of tomorrow!",
                      "Error": null,
                      "Status": "1"
                    }
                  },
                  "Example when trying to retrieve instructions for a nonexistent lab profile": {
                    "value": {
                      "Error": "Lab profile not found",
                      "Status": "0"
                    }
                  }
                }
              }
            }
          }
        },
        "deprecated": "false",
        "tags": [
          "Lab Profile Management"
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "GetLabInstructionsResponse": {
        "type": "object",
        "x-examples": {},
        "properties": {
          "instructions": {
            "type": "string",
            "description": "The IDLx instructions of a lab.",
            "x-stoplight": {
              "id": "gw3aj58xsecta"
            },
            "nullable": "true"
          },
          "error": {
            "type": "string",
            "description": "In the event of an error, this will contain a detailed error message.",
            "x-stoplight": {
              "id": "lq5lru7qd9di2"
            },
            "nullable": "true"
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "description": "0 = Error    \n1 = Success",
            "x-stoplight": {
              "id": "d9mru5kagyieo"
            }
          },
          "externalInstructions": {
            "type": "array",
            "x-stoplight": {
              "id": "91t1ajriuijpp"
            },
            "description": "The externalInstructions array will only be returned when an external instructions source is utilized within a lab profile.",
            "items": {
              "x-stoplight": {
                "id": "j9ejmfw1ah4ok"
              },
              "type": "object",
              "properties": {
                "enabled": {
                  "type": "boolean",
                  "x-stoplight": {
                    "id": "1cis44v86huvf"
                  }
                },
                "source": {
                  "type": "string",
                  "x-stoplight": {
                    "id": "7z7bof1oxt0vq"
                  }
                },
                "repository": {
                  "type": "string",
                  "x-stoplight": {
                    "id": "fw77tqgc78v2k"
                  }
                },
                "contentFile": {
                  "type": "string",
                  "x-stoplight": {
                    "id": "8st8ux7x2020c"
                  }
                },
                "editLocal": {
                  "type": "boolean",
                  "x-stoplight": {
                    "id": "mbhuuqspolzip"
                  }
                },
                "injectBadges": {
                  "type": "boolean",
                  "x-stoplight": {
                    "id": "r4f0bcx4h1ltr"
                  }
                }
              }
            }
          },
          "sourceLabId": {
            "type": "integer",
            "x-stoplight": {
              "id": "pythi4dqn21gx"
            },
            "description": "ID of the lab profile in which the instructions reside."
          }
        }
      }
    },
    "securitySchemes": {
      "api_key": {
        "name": "api_key",
        "type": "apiKey",
        "in": "header",
        "description": "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\"."
      }
    }
  }
}
````

