curl --request PUT \
--url https://{subdomain}.conveyour.com/api/lessons/{id} \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "<string>",
"tags": [
"<string>"
],
"uuid": "<string>",
"restore": true,
"deleted_at": "<string>",
"folder_id": "<string>"
}
'const options = {
method: 'PUT',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
tags: ['<string>'],
uuid: '<string>',
restore: true,
deleted_at: '<string>',
folder_id: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/lessons/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'PUT',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
tags: ['<string>'],
uuid: '<string>',
restore: true,
deleted_at: '<string>',
folder_id: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/lessons/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/lessons/{id}"
payload = {
"name": "<string>",
"tags": ["<string>"],
"uuid": "<string>",
"restore": True,
"deleted_at": "<string>",
"folder_id": "<string>"
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/lessons/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'tags' => [
'<string>'
],
'uuid' => '<string>',
'restore' => true,
'deleted_at' => '<string>',
'folder_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Updated successfully",
"data": {
"id": "LESSON_ID",
"name": "Updated Lesson Name",
"tags": [
"required-training",
"safety"
]
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}Update a lesson
Updates a lesson’s metadata or content.
Update a lesson
Permission: requires lessons.
A missing record does not return 404. This handler reports the failure without a status code, and the error envelope defaults to HTTP 200 — you get 200 with status: "failed". Branch on status, not on the HTTP code.
curl --request PUT \
--url https://{subdomain}.conveyour.com/api/lessons/{id} \
--header 'Content-Type: application/json' \
--header 'x-conveyour-token: <api-key>' \
--data '
{
"name": "<string>",
"tags": [
"<string>"
],
"uuid": "<string>",
"restore": true,
"deleted_at": "<string>",
"folder_id": "<string>"
}
'const options = {
method: 'PUT',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
tags: ['<string>'],
uuid: '<string>',
restore: true,
deleted_at: '<string>',
folder_id: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/lessons/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'PUT',
headers: {'x-conveyour-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
tags: ['<string>'],
uuid: '<string>',
restore: true,
deleted_at: '<string>',
folder_id: '<string>'
})
};
fetch('https://{subdomain}.conveyour.com/api/lessons/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://{subdomain}.conveyour.com/api/lessons/{id}"
payload = {
"name": "<string>",
"tags": ["<string>"],
"uuid": "<string>",
"restore": True,
"deleted_at": "<string>",
"folder_id": "<string>"
}
headers = {
"x-conveyour-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{subdomain}.conveyour.com/api/lessons/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'tags' => [
'<string>'
],
'uuid' => '<string>',
'restore' => true,
'deleted_at' => '<string>',
'folder_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-conveyour-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"status": "ok",
"message": "Updated successfully",
"data": {
"id": "LESSON_ID",
"name": "Updated Lesson Name",
"tags": [
"required-training",
"safety"
]
}
}{
"status": "failed",
"message": "Lacking necessary permission add_contacts",
"data": {
"permission": "add_contacts"
}
}Authorizations
Your API key token. Contacts endpoints require a Server-only — Full API key — see Authentication.
Path Parameters
The id identifier.
Query Parameters
Team scope for the request, as one or more team ObjectIds. The brackets are required: PHP keeps only the last value for a repeated plain key, so teams=A&teams=B silently resolves to B alone. On requests with a JSON body you may send teams (no brackets) in the body instead.
Values that are not valid ObjectIds are silently ignored — a mistyped team ID behaves as if no team was sent. See the teams section of the API conventions guide.
Body
Updated lesson name.
Updated tag list for the lesson.
Alternative identifier. When present this is used instead of the path id.
Restore a soft-deleted lesson. Consumed as a control flag; not stored on the record.
Set to null together with restore to bring the lesson back.
Destination folder. On restore a deleted parent folder falls back to an available one.