Creating and associating meetings with the LTI Pro API


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:

Prerequisites for Creating and associating meetings with the LTI Pro API

Limitations for creating and associating meetings with the LTI Pro API

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:

Endpoint

POST /meeting/createAndAssociate

Request parameters

Request header

--header 'X-Lti-Signature: H-nOALLKJOT5i56RRKE5ehCZk9A'
  1. The signature base string is created using query parameters:
    key=KLAIJC9OTI2Hm-vxn3UVHK&timestamp=1634769623355
  2. 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&timestamp=1634769623355&userId=12dd589465Z=”
  3. 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.
  4. Pass the value obtained from step 3 in the X-Lti-Signatureheader.

Note: The signature will be valid for 60 minutes.

Query parameters

ParameterTypeDescription
timestampStringCurrent timestamp when the request is created. The value is in milliseconds.
keyString

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

ParameterTypeDescription
userId*StringUser ID of the host.
contextId*StringThe Context ID for the course that the meeting is associated with.
domain*StringThe Domain used to access the LMS.
courseIdStringThe 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.

topicStringThe 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_timeDate-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.

  • To set a meeting's start time in GMT, use the yyyy-MM-ddTHH:mm:ssZ date-time format. For example, 2020-03-31T12:02:00Z.
  • To set a meeting's start time using a specific timezone, use the yyyy-MM-ddTHH:mm:ss date-time format and specify the timezone ID in the timezone field. If you do not specify a timezone, the timezone value defaults to your Zoom account's timezone. You can also use UTC for the timezone value.

durationIntegerThe meeting's scheduled duration in minutes. This field is only used for scheduled meetings.
timezoneString

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

ParameterTypeDescription
statusBoolean


The LTI Pro API response status:

  • True: Meeting creation and association were successful.
  • False: Meeting creation or association failed.
resultObjectAPI response result body.
idStringWhen a meeting is created successfully but the association fails, will return the created meeting id.
errorCodeString

API response error code when the status is false.

  • 406: Meeting created successfully but associated failed.

  • Not 406: Meeting creation failed.

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