Scenes & schedules
Change a schedule
PUT
/api/schedules/{id}Admin. Needs an unlock token (
x-tempolight-token) while a PIN lock is set; without a lock, anyone can call it.Changes the fields given; the others are kept.
Path parameters
idstringrequiredA schedule id (t…).
Request body application/json
namestringUp to 60 characters
timestringHH:MM, or sunrise/sunset with an optional offset in minutes (needs a location in Settings).
daysinteger[]Weekdays, 0 = Sunday.
actionobjectenabledbooleanDefault
trueResponses
200OKapplication/json
idstringrequiredt…
nextstring | null <date-time>The next time it runs (ISO).
namestringUp to 60 characters
timestringHH:MM, or sunrise/sunset with an optional offset in minutes (needs a location in Settings).
daysinteger[]Weekdays, 0 = Sunday.
actionobjectenabledbooleanDefault
true400The body isn't valid JSON, or a value is wrong.application/json
errorstringrequiredWhat went wrong, in a sentence for people.
403Locked, or not allowed.application/json
errorstringrequiredWhat went wrong, in a sentence for people.
404No such id.application/json
errorstringrequiredWhat went wrong, in a sentence for people.
Request
curl -X PUT 'http://localhost:8080/api/schedules/t8f2k1' \
-H 'content-type: application/json' \
-d '{
"enabled": false
}'const res = await fetch("http://localhost:8080/api/schedules/t8f2k1", {
method: "PUT",
headers: { "content-type": "application/json" },
body: JSON.stringify({
"enabled": false
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.put(
"http://localhost:8080/api/schedules/t8f2k1",
json={
"enabled": False
},
)
print(res.json())Response
{
"id": "t8f2k1",
"name": "Evening",
"time": "sunset+30",
"days": [
1,
2,
3,
4,
5
],
"action": {
"type": "scene",
"scene": "chill"
},
"enabled": true,
"next": "2026-11-04T17:12:00.000Z"
}{
"error": "Pick a scene for this schedule"
}{
"error": "Settings are locked. Unlock with the PIN in Settings."
}{
"error": "No such schedule"
}