API: LTI tools
List, create, update and delete the LTI tools of a course.
An LTI tool publishes a whole course or one learning object to an external LMS. These endpoints list the tools of a course and create, update or delete a tool. The fields match the form in the Linqur interface: LTI version, publish mode, roles, provisioning, grade and member synchronisation and the enrolment period, all explained in LTI tool settings explained. The response of /course/tool/list contains the launch URL, the registration URL and the secret of each tool, so treat that output as confidential.
Every endpoint accepts both GET and POST; the heading shows the method the specification lists first. Uploads must use POST. Send your API key in the Access-Token header. The base URL is https://<your-platform>/local/ltisaas/api.php/v1; use v0 with the token dummy to get test data. Error responses are JSON with success: false, error and debuginfo. Authentication, versions and limits are explained in API documentation.
Generated from the LtiSaas API specification 1.0, retrieved 2026-10-30 from dev-auto.
| Endpoint | Description |
|---|---|
| GET /course/tool/list | List all LTI tools within a course |
| GET /course/tool/add | Add new tool to a course |
| GET /course/tool/update | Update a specific course tool |
| GET /course/tool/delete | Delete a specific course tool |
GET /course/tool/list
List all LTI tools within a course. This endpoint will list all the LTI tools associated within a course.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
courseid | query | integer | yes | The ID of the course. |
ltitype | query | string | no | The version of LTI. Either LTI Advantage or Legacy LTI. Allowed values: "LTI Advantage", "Legacy LTI". |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/course/tool/list?courseid=<courseid>"Example response (200). Returns the tool id created when the call is successful.
{
"success": true,
"results": [
{
"toolid": 0,
"enrollmentid": 0,
"totalregistrations": 0,
"learningobjectid": 0,
"name": "string",
"secret": "string",
"timecreated": "string",
"ltitype": "string",
"cartridgeurl": "string",
"launchurl": "string",
"registrationurl": "string",
"customproperties": "string",
"resourcetype": "string"
}
]
}Errors: 400 Bad Request, 401 Unauthorized
GET /course/tool/add
Add new tool to a course. This endpoint allows you to add a new tool to an existing course. You must provide the course ID and the details of the tool to be added.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
courseid | query | integer | yes | The ID of the course. |
ltiversion | query | string | yes | The version of LTI. Either LTI Advantage or Legacy LTI. Allowed values: "Legacy LTI", "LTI Advantage". |
name | query | string | yes | The name. |
publishmode | query | string | yes | The mode of publishing (course or activity). Allowed values: "course", "activity". |
learningobjectid | query | integer | no | The ID of the learning object. Only required if publishmode is set to activity. |
maxenrolled | query | integer | no | The maximum enrollment. Defaults to unlimited (0). |
roleinstructor | query | integer | no | The role of the instructor. Defaults to 3. |
rolelearner | query | integer | no | The role of the learner. Defaults to 5. |
provisioningmodeinstructor | query | integer | no | The provisioning mode of the instructor. Defaults to 2. Allowed values: 1, 2, 3. |
provisioningmodelearner | query | integer | no | The provisioning mode of the learner. Defaults to 1. Allowed values: 1, 2, 3. |
gradesync | query | integer | no | Whether grade sync is enabled. Grade synchronization (1=Yes, 0=No). Allowed values: 0, 1. |
gradesynccompletion | query | integer | no | Require course or activity completion prior to grade synchronisation (1=Yes, 0=No). Allowed values: 0, 1. |
membersync | query | integer | no | Whether member sync is enabled. User synchronisation (1=Yes, 0=No). Allowed values: 0, 1. |
membersyncmode | query | integer | no | User synchronisation mode (1=Enrol new and unenrol missing users, 2=Enrol new users, 3=Unenrol missing users). Allowed values: 1, 2, 3. |
enrolperiod | query | integer | no | The duration of the enrolment (in seconds). |
enrolstartdate | query | string | no | The enrolment start date (YYYY-MM-DDTHH:mm). |
enrolenddate | query | string | no | The enrolment end date (YYYY-MM-DDTHH:mm). |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/course/tool/add?courseid=<courseid><iversion=<ltiversion>&name=<name>&publishmode=<publishmode>"Example response (200). Returns the tool id created when the call is successful.
{
"success": true,
"toolid": 0
}Errors: 400 Bad Request, 401 Unauthorized
GET /course/tool/update
Update a specific course tool. This endpoint updates a specific tool in a course. Detailed information about the tool such as tool’s identifier, name, ltiversion, etc. need to be provided. Successful operation will update the tool’s details in the course.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
toolid | query | integer | yes | The ID of the lti tool. |
ltiversion | query | string | no | The version of LTI. Allowed values: "LTI Advantage", "Legacy LTI". |
name | query | string | no | The name. |
publishmode | query | string | no | The mode of publishing (course or activity). Allowed values: "course", "activity". |
learningobjectid | query | integer | no | The ID of the learning object. Only required if publishmode is set to activity. |
maxenrolled | query | integer | no | The maximum enrollment. |
roleinstructor | query | integer | no | The role of the instructor. |
rolelearner | query | integer | no | The role of the learner. |
provisioningmodeinstructor | query | integer | no | The provisioning mode of the instructor. Allowed values: 1, 2, 3. |
provisioningmodelearner | query | integer | no | The provisioning mode of the learner. Allowed values: 1, 2, 3. |
gradesync | query | integer | no | Whether grade sync is enabled. Grade synchronization (1=Yes, 0=No). Allowed values: 0, 1. |
gradesynccompletion | query | integer | no | Require course or activity completion prior to grade synchronisation (1=Yes, 0=No). Allowed values: 0, 1. |
membersync | query | integer | no | Whether member sync is enabled. User synchronisation (1=Yes, 0=No). Allowed values: 0, 1. |
membersyncmode | query | integer | no | User synchronisation mode (1=Enrol new and unenrol missing users, 2=Enrol new users, 3=Unenrol missing users). Allowed values: 1, 2, 3. |
enrolperiod | query | integer | no | The duration of the enrolment (in seconds). |
enrolstartdate | query | string | no | The enrolment start date (YYYY-MM-DDTHH:mm). |
enrolenddate | query | string | no | The enrolment end date (YYYY-MM-DDTHH:mm). |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/course/tool/update?toolid=<toolid>"Example response (200). LTI registrations within a course for a specific time period.
{
"success": true,
"toolid": 0
}Errors: 400 Bad Request, 401 Unauthorized
GET /course/tool/delete
Delete a specific course tool. This endpoint deletes a specific tool in a course. Upon successful operation, the tool will be removed from the course. If the tool is not found or cannot be deleted due to any reason, appropriate error responses will be returned.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
toolid | query | integer | yes | The identifier of the lti tool. |
Example request
curl -H "Access-Token: <your token>" \
"https://<your-platform>/local/ltisaas/api.php/v1/course/tool/delete?toolid=<toolid>"Example response (200). Returns success if the operation was successful.
{
"success": true
}Errors: 400 Bad Request, 401 Unauthorized