The Lessonspace API is RESTful with predictable, resource-oriented URLs. All the endpoints listed live under the /v2/ namespace, https://api.thelessonspace.com/v2/. Unless otherwise stated, expect POST data to be JSON, with the Content-Type set to application/json. All URLs end with a trailing slash.
Fetch the sessions for an organisation. This endpoint is rate limited; too many requests in a small timeframe will be rejected.
search string
If a UUID, filters to sessions or spaces with a matching slug. Otherwise, filters to sessions or spaces with a partial, case-insensitive match on the name.
page integer
A page number within the paginated result set.
include_single_user boolean
Include sessions with only one user.
duration_min integer
Minimum session duration, in seconds.
duration_max integer
Maximum session duration, in seconds.
start_time_after string <date-time>
Filter to sessions that started after the specified ISO8601 timestamp.
start_time_before string <date-time>
Filter to sessions that started before the specified ISO8601 timestamp.
end_time_after string <date-time>
Filter to sessions that ended after the specified ISO8601 timestamp.
end_time_before string <date-time>
Filter to sessions that ended before the specified ISO8601 timestamp.
date_after string <date-time>
Filter to sessions created after the specified ISO8601 timestamp. Using both `date_before` and `date_after` is the same as using `start_time_after` and `end_time_before`.
date_before string <date-time>
Filter sessions created before the specified ISO8601 timestamp. Using both `date_before` and `date_after` is the same as using `start_time_after` and `end_time_before`.
user string
Filter to sessions that the specified Lessonspace user IDs were present in. Accepts multiple values, delimited by `&`.
space string <uuid>
Filter to sessions linked to the provided space UUID(s). Accepts multiple values, delimited by `&`.
launch_id string
Filter to sessions linked to the space that was identified with the given value when it was created via the Launch endpoint. Performs a full-string, case-sensitive match.
in_progress_only boolean
Filter to sessions that are in progress only.
tags string
JSON object of tags that must match for the session. Leave the tag value blank to check if only the tag key exists. Must be URL-encoded. Performs a full-string, case-insensitive match.
user_external_id string
Filters to sessions that include a user with a matching `user.id` value that was provided via the Launch endpoint. Performs a full-string, case-insensitive match.
user_name string
Filters to sessions that include a user with a matching `user.name` value that was provided via the Launch endpoint. Performs a partial, case-insensitive match.
200
403
Fetch a session with the given UUID. This endpoint is rate limited; too many requests in a small timeframe will be rejected.
200
id integer
name string
space
requiredid string
UUID of the Space
alias string <slug>
slug string <slug>
requiredname string
organisation integer
requiredis_locked string
tags string
url string
The fully qualified URL of the space. If the current user is authenticated the URL will include the encoded JWT 'user' parameter. If this space is locked and the current user is a student then this will be `None`
created_at string <date-time>
requiredlocks array
id integer
organisation integer
requiredThe organisation that this lock belongs to. This is not necessarily always going to be the same organisation as the one that the space is locked to (i.e. in the case of Courses).
allowed_users string
allowed_groups array
requiredid integer
name string
requiredactive boolean
lock_before string <date-time>
The (optional) earliest time that the respective space can be opened.
lock_after string <date-time>
The (optional) latest time that the respective space can be opened.
region string
record_av boolean
uuid string <uuid>
playback_url string
start_time string <date-time>
end_time string <date-time>
profiles array
requireduser integer
requiredname string
profile_picture
id integer
uploaded_at string <date-time>
admin_verified string
image string <uri>
email string
role string
guests array
requiredid integer
uuid string <uuid>
requiredsession integer
requiredbillable_seconds integer
tags string
recording_access_policy object
403
Update a session's name or recording access policy for the given UUID. This endpoint is rate limited; too many requests in a small timeframe will be rejected.
name string
requiredName of the session
recording_access_policy object
An array that determines who can view the recordings, a combination of `participant`, `admin`, `teacher`, `student` and `public`. If the array is empty, the organisation policy will be used instead.
200
name string
requiredName of the session
recording_access_policy object
An array that determines who can view the recordings, a combination of `participant`, `admin`, `teacher`, `student` and `public`. If the array is empty, the organisation policy will be used instead.
403
Fetch the transcription for a given session. The transcription must have been scheduled on the session beforehand. This endpoint is rate limited; too many requests in a small timeframe will be rejected.
organisation string
requiredThe ID identifying this organisation.
session string <uuid>
requiredThe UUID identifying this session.
search string
A search term.
page integer
A page number within the paginated result set.
200
403
session string <uuid>
The ID(s) of sessions to filter by. Accepts multiple values.
date string
Deprecated. Use `date_before` and `date_after`.
tag_key string
A tag key to match on. Only works if `tag_value` is also set. Performs a full-string, case-insensitive match.
tag_value string
A tag value to match on. Only works if `tag_key` is also set. Performs a full-string, case-insensitive match.
user integer
The Lessonspace IDs of user profiles that have attended sessions which occurred in this space. Accepts multiple values.
assigned_to integer
Filter to spaces which are assigned to these Lessonspace IDs.
search string
A search term.
page integer
A page number within the paginated result set.
date_after string <date-time>
Filter to spaces with sessions that ended after the specified ISO8601 timestamp.
date_before string <date-time>
Filter to spaces with sessions that started before the specified ISO8601 timestamp.
200
403
role string
Role(s) to filter by.
space string <uuid>
The ID(s) of Spaces(s) to filter by. Will filter out users who have not attended any sessions which occurred in the spaces listed. Accepts multiple values.
session string <uuid>
The ID(s) of session(s) to filter by. Will filter out users who have not attended any sessions listed. Accepts multiple values.
search string
A search term.
page integer
A page number within the paginated result set.
200
403
Remove user from specified organisation.
204
search string
A search term.
page integer
A page number within the paginated result set.
200
recording_url string <uri>
required403
id string
requiredAn ID identifying the space to join. Using the same ID here will give you the same space, using a different ID will give you a new space. A good candidate to use would be some sort of relationship identifier between the parties involved. This can be any arbitrary string, and is transparently passed through.
name string
The (optional) name to give to the Space. If this field is not provided then the `id` field will be used as the name of the Space instead. Note that if this field is null or blank it will still be used and the Space will have a null or blank name.
allow_guests boolean
Allow 'guests' to join. In this context being a guest still means you need to have the UUID of the room (likely, due to being invited) Do not set to False, unless you're aware of the side effects.
record_av boolean
Boolean value whether or not audio and video will be recorded in this session. This will override the organisation wide Record AV settings and is forced to false if the organisation does not have access to session recordings.
record_content boolean
Boolean value determining whether or not the space content will be recorded for this session. This will override the organisation wide record_content settings. Having both record_av and record_content set to `false` will ensure that there will be no recording.
transcribe boolean
Boolean value determining whether or not a transcription will be generated for this session.
user
name string
Full name of the person joining this space. Unless an ID is specified, users with the same name are considered to be the same person for stats & analytics.
id string
Optional ID of the user joining this space. This can be used to differentiate between users with the same name.If not provided, the `name` will be used.
email string <email>
Optional email address of the user.
leader boolean
Control leader mode. If a user has leader mode enabled, they can enable `leading` mode in the space. Leading mode forces the view of all other participants to track the leader.
profile_picture string <uri>
URL of a profile picture to use. Defaults to a generic avatar image.
camera_background_url string <uri>
Sets the default virtual background URL that users can apply to their camera feed.
single_use boolean
A single use token can only be used exactly once. It gets redeemed on connection for a persistent token that's then stored in localStorage to allow for things like reconnecting or reloading.
session_limit boolean
Allow this link to only be used for the session_id returned by the Launch API. This means that once the session has ended, the link will no longer work.
custom_jwt_parameters object
Add in custom parameters to the JWT returned by the Launch API. You can use these for extracting data later in webhooks, or passing data to custom components within the lesson environment. While these are signed, they are just Base64 encoded in the URL, and not suitable for sensitive data like passwords or API keys. Anything under the meta subkey is changable by the user, whereas everything else is not.
record boolean
Determine if this user's AV will be saved.
ghost boolean
Join the space in ghost mode (spectator-only), without camera or microphone. Ghost users are not visible to other participants.
webhooks
session
start string <uri>
URL to call when a session begins.
idle string <uri>
URL to call when a session becomes idle.
end string <uri>
URL to call when a session ends.
user
join string <uri>
URL to call when a user joins.
idle string <uri>
URL to call when a user becomes idle.
leave string <uri>
URL to call when a user leaves.
transcription
finish string <uri>
URL to call when a transcription finishes.
cobrowser
start string <uri>
URL to call when a cobrowser session begins.
stop string <uri>
URL to call when a cobrowser session stops.
chat
message string <uri>
URL to call when a chat message is sent.
timeouts
not_after string <date-time>
An ISO8601 timestamp specifying the latest time that a user may join the space. This isn't a limit on duration but rather a limit on until when the generated link can be used to join.
not_before string <date-time>
An ISO8601 timestamp specifying the earliest time that a user may join the space.
features object
Enable or disable arbitrary features of the Space. These are controlled on a per user basis, not a per space basis - so it`s possible to have two users with chat, and one user without chat on the same space. Invalid values will be filtered out. See the features section of the documentation (https://www.thelessonspace.com/docs/guides/launch-features) for a full list of possible features and a description of each field.
theme object
Control certain elements of the Space UI. These are controlled on a per user basis, not a per space basis. Invalid values will be filtered out. See the features section of the documentation (https://www.thelessonspace.com/docs/guides/launch-features#theming) for a full list of possible theming options and description of each field.
video_layout_mode string
Controls the default video layout mode of the space. One of: [grid, sidebar, floating]
locale string
Controls the language of the board. Defaults to English. Currently supports `en` (English), `fr` (French), `it` (Italian) and `pl` (Polish)
server string
Specifies the region the space should reside in. This defaults to IP geolocation, which depending on your use case may or may not be useful (eg, your clients are connecting from a region very different to the server making the API call). You can work around this by passing the client's IP address in the X-Forwarded-For HTTP header, and it will be used for geolocation instead.
session_tags object
A dictionary of key-value tags to apply to the session.
space_tags object
A dictionary of key-value tags to apply to the space.
invite_url string
Custom invite URL to pass in for the 'Invite Others' button.
resource_url string
Custom resource library URL.
holodeck_parameters object
Any options to pass directly to the underlying Holodeck interface. For now, this is undocumented - set things here only if you've been advised to by the Lessonspace team.
auth_external
method string
requiredCurrently only 'child' and 'redirect' are supported.
url string
requiredURL to load inside an iFrame / redirect to.
token string
requiredExpected token to be passed to the URL.
ephemeral boolean
Whether to only store the token in browser memory and not in local storage.
200
client_url string <uri>
requiredThe URL to which you can redirect the user, or put in an iframe. If you're using an iframe, it's important to ensure the `allow` attribute is set to `camera; microphone; display-capture` or not all features will work.
api_base string <uri>
requiredURL which is the starting point for the space's API.
room_id string
requiredThe underlying room.sh identifier which is also the space slug.
secret string
requiredSecret key for accessing the space's API directly. This allows you to sign your own JWTs, as well as interact with the space API directly. This key _must_ be kept secret - having access to it grants unrestricted access to the space.
session_id string
requiredThe session ID that will be used in webhooks for this launch.
user_id integer
requiredThe internal Lessonspace user ID, returned in webhooks.
room_settings object
The settings that apply to the room after this call
201
client_url string <uri>
requiredThe URL to which you can redirect the user, or put in an iframe. If you're using an iframe, it's important to ensure the `allow` attribute is set to `camera; microphone; display-capture` or not all features will work.
api_base string <uri>
requiredURL which is the starting point for the space's API.
room_id string
requiredThe underlying room.sh identifier which is also the space slug.
secret string
requiredSecret key for accessing the space's API directly. This allows you to sign your own JWTs, as well as interact with the space API directly. This key _must_ be kept secret - having access to it grants unrestricted access to the space.
session_id string
requiredThe session ID that will be used in webhooks for this launch.
user_id integer
requiredThe internal Lessonspace user ID, returned in webhooks.
room_settings object
The settings that apply to the room after this call
403
Fetch the sessions for a specific space. This endpoint is rate limited; too many requests in a small timeframe will be rejected.
search string
If a UUID, filters to sessions or spaces with a matching slug. Otherwise, filters to sessions or spaces with a partial, case-insensitive match on the name.
page integer
A page number within the paginated result set.
include_single_user boolean
Include sessions with only one user.
duration_min integer
Minimum session duration, in seconds.
duration_max integer
Maximum session duration, in seconds.
start_time_after string <date-time>
Filter to sessions that started after the specified ISO8601 timestamp.
start_time_before string <date-time>
Filter to sessions that started before the specified ISO8601 timestamp.
end_time_after string <date-time>
Filter to sessions that ended after the specified ISO8601 timestamp.
end_time_before string <date-time>
Filter to sessions that ended before the specified ISO8601 timestamp.
date_after string <date-time>
Filter to sessions created after the specified ISO8601 timestamp. Using both `date_before` and `date_after` is the same as using `start_time_after` and `end_time_before`.
date_before string <date-time>
Filter sessions created before the specified ISO8601 timestamp. Using both `date_before` and `date_after` is the same as using `start_time_after` and `end_time_before`.
user string
Filter to sessions that the specified Lessonspace user IDs were present in. Accepts multiple values, delimited by `&`.
launch_id string
Filter to sessions linked to the space that was identified with the given value when it was created via the Launch endpoint. Performs a full-string, case-sensitive match.
in_progress_only boolean
Filter to sessions that are in progress only.
tags string
JSON object of tags that must match for the session. Leave the tag value blank to check if only the tag key exists. Must be URL-encoded. Performs a full-string, case-insensitive match.
user_external_id string
Filters to sessions that include a user with a matching `user.id` value that was provided via the Launch endpoint. Performs a full-string, case-insensitive match.
user_name string
Filters to sessions that include a user with a matching `user.name` value that was provided via the Launch endpoint. Performs a partial, case-insensitive match.
200
id integer
uuid string <uuid>
name string
start_time string <date-time>
end_time string <date-time>
profiles array
requireduser integer
requiredname string
profile_picture
id integer
uploaded_at string <date-time>
admin_verified string
image string <uri>
email string
role string
guests array
requiredid integer
uuid string <uuid>
requiredsession integer
requiredbillable_seconds integer
logs array
requiredid integer
log_type string
date string <date-time>
profile string
guest_uuid string
created_at string <date-time>
user_socket_id string
connected_users array
recording_access_policy object
playback_url string
tags string
403