Lab on Demand API v3.0

API Request Format

Requests are not case sensitive. Requests can use either GET or POST. A typical API request will look like:[method]?[parameters]

For example, a request to get the entire lab catalog will look like:


All methods require an API key, which must be obtained from Learn on Demand Systems. This key is used by Lab on Demand to validate your account. The key can be passed either as an HTTP request header or as part of the URL.

HTTP header name: api_key

The key can also be included in the URL, directly before the method name:[key]/[method]?[parameters]

The catalog example would then look something like:

You do NOT need to provide the key as both a header and as part of the URL. You can pick whichever approach works best for you. Thoughout the documentation, the URL approach will be used for the sake of simplicity.

API Response Format

All responses are formatted as JSON. A full explanation of each response is included with each command below.

Date Formats

All dates are in unix epoch time, which is the number of seconds that have elapsed since midnight UTC January 1st, 1970. Values are always rounded to the nearest whole second.


  • Launch - Launches a specified lab for a specified user.
  • LaunchAnonymous - Launches a specified lab without supplying user information.
  • LaunchForEvent - Launches a specified lab within an event.
  • LaunchForEventByExternalId - Launches a lab instance within an event using an external lab identifier.
  • LaunchAnonymousForEvent - Launches a specified lab within an event without supplying user information.
  • LaunchAnonymousForEventByExternalId - Launches a lab instance anonymously within an event using an external lab identifier.
  • Cancel - Cancels a specified lab instance.
  • Save - Saves a specified lab instance.
  • Resume - Resumes a specified lab instance.
  • Details - Retrieves detailed information about a specified lab instance.
  • LabProfile - Retrieves information about a specified lab profile.
  • Catalog - Return all lab series, lab profiles, and delivery regions available to your organization.
  • UserRunningAndSavedLabs - Retrieves all labs that are currently running or saved for a particular user account.
  • Stats - returns statistics about how many labs are currently active and saved.
  • Result - returns information about a particular lab instance result.
  • Results - returns information about all lab instance results that started or ended within a specified time range.
  • Class - returns information about a class.
  • GetOrCreateClass - returns information about a class. If the class doesn’t exist, it is created.
  • UpdateClass - updates a specified class.
  • DeleteClass - deletes a specified class.

API Client

A .NET API client library is available via Nuget. This will allow you to use the API using only .NET code.

var apiUrl = "";
var apiKey = "YourKeyGoesHere";
var labId = 12001; 
var firstName = "Sample";
var lastName = "Student";
var userId = ""; // you can use any value that will uniquely identify the user in your system. here, we use an email address.
var email = "";

var client = new LabOnDemandApiClient(apiUrl, apiKey);
var launchResponse = client.Launch(labId, userId, firstName, lastName, email);

if (launchResponse.Result == LaunchResult.Success)
    var url = launchResponse.Url; //this is the URL to send the user to
    var error = launchResponse.Error; //this will explain what went wrong

Sample Project

A sample project that utilizes many API functions is available on GitHub.