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:

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.


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


POST /meeting/createAndAssociate

Request parameters

Request header

--header 'X-Lti-Signature: H-nOALLKJOT5i56RRKE5ehCZk9A'
  1. The signature base string is created using query parameters:
  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:
  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

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.

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

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": "",
"meetingInfo": {
"topic": "meeting1",
"type": 2,
"start_time": "2022-03-25T07:32:55Z",
"duration": 30,
"timezone": "America/New_York"
"courseId": "396",
"contextId": "0f978981bb1184ba5f9e34839f045c4476d30737",
"domain": ""


Response Schema

Parameter Type Description
status Boolean

The LTI Pro API response status:

  • True: Meeting creation and association were successful.
  • False: Meeting creation or association failed.
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.

  • 406: Meeting created successfully but associated failed.

  • Not 406: Meeting creation failed.

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:"

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.