Creating and associating meetings with the LTI Pro API
Last Updated:
LTI Pro supports creating and associating a meeting via API. A course meeting can be created programmatically via LTI Pro API and then auto-associated with an LMS course. This API is a combination of Zoom's REST API (Create meeting) and LTI Pro API (BulkImport).
This article covers:
- Limitations for creating and associating meetings with the LTI Pro API
- How to create and associate meetings with the LTI Pro API
Prerequisites for Creating and associating meetings with the LTI Pro API
- The LTI Pro app has been installed.
- The account owner or admin privileges, or a user with a role that includes the Marketplace role privilege.
- Digital signature X-Lti-Signature for the request as described below. This needs to be passed in the request header.
Limitations for creating and associating meetings with the LTI Pro API
- Does not support meetings using Personal Meeting IDs (PMI).
- Does not support meeting templates.
- Does not support the Auto-populate Alternative Host feature.
- Tracking field values configured in the LTI Pro config page will not auto-filled in a created meeting through using this API.
- Does not support the Section/Group feature with Canvas.
- Does not support Schoology.
How to create and associate meetings with the LTI Pro API
When using this API to create and associate a meeting with a course, a calendar event will be added to the LMS if the calendar is integrated with LTI Pro.
Notes:
- Will use the Zoom account owner to create the calendar event within the LMS.
- In order to see the calendar event showing up in LMS, please make sure the account owner login to the LMS and launch LTI pro in the course as the instructor.
- LMS Calendar creation is an asynchronous request. If the LMS calendar API returns any error, this API will not return any error in this phase.
Endpoint
POST /meeting/createAndAssociate
Request parameters
Request header
--header 'X-Lti-Signature: H-nOALLKJOT5i56RRKE5ehCZk9A'
- The signature base string is created using query parameters:
key=KLAIJC9OTI2Hm-vxn3UVHK×tamp=1634769623355
- LTI Secret - LTI secret can be found on the LTI config page. It is very important to keep these values private for your application
- If you want to use a specific userId to create the calendar event on LMS, the userId should be included in the base string as shown in the following example:
“key=KLAIJC9OTI2Hm-vxn3UVHK×tamp=1634769623355&userId=12dd589465Z=”
- If you want to use a specific userId to create the calendar event on LMS, the userId should be included in the base string as shown in the following example:
- The signature is calculated by passing the base string and secret to the HMAC-SHA1 hashing algorithm. The calculated signature is then converted to aencodeBase64URLSafeString.
- Pass the value obtained from step 3 in the X-Lti-Signatureheader.
Note: The signature will be valid for 60 minutes.
Query parameters
Parameter | Type | Description |
timestamp | String | Current timestamp when the request is created. The value is in milliseconds. |
key | String |
Identifier of the LTI application that is making the request. The LTI Key value can be found on the LTI configuration page. Note: This is a required field. |
Request Schema
Parameter | Type | Description |
userId* | String | User ID of the host. |
contextId* | String | The Context ID for the course that the meeting is associated with. |
domain* | String | The Domain used to access the LMS. |
courseId | String | The courseId is only required to support Canvas Calendar and Conversations. |
meetingInfo* | Object |
Parameters needed to create a meeting in the Zoom web portal. Note: For more parameters and more details, please refer to Zoom's REST API (Create meeting) request body. |
topic | String | The Meeting topic (maximum of 200 characters) |
type* | Integer |
The type of meeting: 1: An instant meeting. 2: A scheduled meeting. 3: A recurring meeting with no fixed time. 8: A recurring meeting with fixed time |
start_time | Date-time |
The meeting's start time. This field is only used for scheduled and/or recurring meetings with a fixed time. This supports local time and GMT formats.
|
duration | Integer | The meeting's scheduled duration in minutes. This field is only used for scheduled meetings. |
timezone | String |
he timezone to assign to the start_time value. This field is only used for scheduled meetings. For a list of supported timezones and their format, refer to our timezone list documentation. |
*Note: These fields are required.
Request body example
LTI meeting info
Content-Type: application/json
{
"userId": "xxxxxx@zoom.us",
"meetingInfo": {
"topic": "meeting1",
"type": 2,
"start_time": "2022-03-25T07:32:55Z",
"duration": 30,
"timezone": "America/New_York"
},
"courseId": "396",
"contextId": "0f978981bb1184ba5f9e34839f045c4476d30737",
"domain": "https://somelmsdomain.com"
}
Responses
Response Schema
Parameter | Type | Description |
status | Boolean |
|
result | Object | API response result body. |
id | String | When a meeting is created successfully but the association fails, will return the created meeting id. |
errorCode | String |
API response error code when the status is false.
|
errorMessage | String | API response error message |
Response examples
The meeting was created successfully and associated successfully (HTTP Status Code - 200):
{
"status": true,
"result": {
"id": "91978833358"
}
}
The meeting was created successfully but the association failed (HTTP Status Code - 200):
{
"status": false,
"errorCode": "406",
"errorMessage": "create meeting success but associate failed:The Meeting ID, Context ID or Domain is invalid(2255).",
"result": {
"id": "91978833358"
}
}
Note: The error code 406 indicates that the meeting was successfully created in Zoom web but failed to be associated with LTI Pro.
The meeting creation failed (HTTP Status Code - 200):
{
"status": false,
"errorCode": "1001",
"errorMessage": "User does not exist: xxxxxxxx@zoom.us"
}
Note: In this scenario, the error code is not 406.
Zoom Community
Join the 250K+ other members in the Zoom Community! Login with your Zoom account credentials and start collaborating.