Skip to content
twitch.apiv2.0

Reference / API groups

twitch.schedule

Stream schedule: segments, vacation and the iCalendar feed.

Every method of twitch.schedule, with its parameters, what it returns and the token it needs.

twitch.schedule.get(params, options?): Paginator<ScheduleSegment, ScheduleResponse>

Lists the planned broadcasts of a channel. The broadcaster and vacation fields come with every page, under page.raw.data. Fails with a 404 when the channel has no schedule.

Token: app or user.

NameTypeDescription
broadcaster_id requiredstringBroadcaster whose schedule to read.
idstring | readonly string[]Only these segments. Up to 100 IDs.
start_timestring | DateOnly segments that start after this moment. Twitch defaults to now.
firstnumberItems per page, 1 to 25. Twitch defaults to 20.
afterstringCursor of the next page.

options: Request options for this call: as, token, signal, timeout, retries.

Paginator<ScheduleSegment, ScheduleResponse>

Fields of ScheduleSegment
NameTypeDescription
idstringID of the segment.
start_timestringWhen the broadcast starts, as an RFC 3339 timestamp.
end_timestringWhen the broadcast ends, as an RFC 3339 timestamp.
titlestringTitle of the broadcast.
canceled_untilstring | nullSet when this occurrence of a recurring broadcast was canceled: it then holds the same RFC 3339 timestamp as end_time. null otherwise.
categoryScheduleCategory | nullCategory planned for the broadcast, or null when none was chosen.
is_recurringbooleanWhether the broadcast repeats every week. false for a one-time broadcast.
const page = await twitch.schedule.get({ broadcaster_id: "141981764" });
console.log(page.raw.data.vacation);
for (const segment of page) console.log(segment.start_time, segment.title);

Twitch reference

twitch.schedule.icalendar(params, options?): Promise<string>

Gets the schedule of a channel as iCalendar text, ready to be saved as an .ics file. Twitch does not ask for a token here, the client sends its usual one anyway.

Token: app or user.

NameTypeDescription
broadcaster_id requiredstringBroadcaster whose schedule to export.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<string>

const ics = await twitch.schedule.icalendar({ broadcaster_id: "141981764" });

Twitch reference

twitch.schedule.updateSettings(params?, options?): Promise<void>

Plans or cancels the vacation of a channel.

Token: user, scope channel:manage:schedule.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the schedule. Defaults to the user making the call.
is_vacation_enabledbooleantrue to plan a vacation with the dates below, false to cancel the planned one.
vacation_start_timestring | DateWhen the vacation starts. Required when is_vacation_enabled is true.
vacation_end_timestring | DateWhen the vacation ends. Required when is_vacation_enabled is true.
timezonestringTime zone the broadcaster streams from, as an IANA name such as "Europe/Paris". Required when is_vacation_enabled is true.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<void>

await twitch.schedule.updateSettings({
is_vacation_enabled: true,
vacation_start_time: "2026-08-01T00:00:00Z",
vacation_end_time: "2026-08-15T00:00:00Z",
timezone: "Europe/Paris",
});

Twitch reference

twitch.schedule.createSegment(params, options?): Promise<Schedule>

Adds a one-time or weekly broadcast to the schedule of a channel. Resolves with the schedule, whose segments hold only the new one.

Token: user, scope channel:manage:schedule.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the schedule. Defaults to the user making the call.
start_time requiredstring | DateWhen the broadcast starts.
timezone requiredstringTime zone of the broadcast, as an IANA name such as "Europe/Paris".
duration requiredstringLength of the broadcast in minutes, written as a string: "30" to "1380".
is_recurringbooleanWhether the broadcast repeats every week. One-time broadcasts are reserved to affiliates and partners.
category_idstringID of the category planned for the broadcast.
titlestringTitle of the broadcast, 140 characters at most.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<Schedule>

Fields of Schedule
NameTypeDescription
segmentsScheduleSegment[]Planned broadcasts.
broadcaster_idstringID of the broadcaster who owns the schedule.
broadcaster_namestringDisplay name of the broadcaster.
broadcaster_loginstringLogin name of the broadcaster.
vacationScheduleVacation | nullPlanned vacation, or null when vacation mode is off.
const schedule = await twitch.schedule.createSegment({
start_time: "2026-07-01T18:00:00Z",
timezone: "Europe/Paris",
duration: "120",
is_recurring: true,
});

Twitch reference

twitch.schedule.updateSegment(params, options?): Promise<Schedule>

Changes or cancels a planned broadcast. On a recurring segment, a new title, category, duration or time zone applies to every occurrence. Resolves with the schedule, whose segments hold only the changed one.

Token: user, scope channel:manage:schedule.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the schedule. Defaults to the user making the call.
id requiredstringID of the segment to change.
start_timestring | DateNew start. Only affiliates and partners can move a segment, and only a one-time one.
durationstringNew length in minutes, written as a string: "30" to "1380".
category_idstringID of the new category.
titlestringNew title, 140 characters at most.
is_canceledbooleantrue to cancel the broadcast. On a recurring segment this cancels the next occurrence, whichever occurrence id points to.
timezonestringNew time zone, as an IANA name such as "Europe/Paris".

options: Request options for this call: as, token, signal, timeout, retries.

Promise<Schedule>

Fields of Schedule
NameTypeDescription
segmentsScheduleSegment[]Planned broadcasts.
broadcaster_idstringID of the broadcaster who owns the schedule.
broadcaster_namestringDisplay name of the broadcaster.
broadcaster_loginstringLogin name of the broadcaster.
vacationScheduleVacation | nullPlanned vacation, or null when vacation mode is off.
await twitch.schedule.updateSegment({ id: segment.id, duration: "90" });

Twitch reference

twitch.schedule.deleteSegment(params, options?): Promise<void>

Removes a planned broadcast. Removing a recurring segment removes every occurrence of it.

Token: user, scope channel:manage:schedule.

NameTypeDescription
broadcaster_idstringBroadcaster who owns the schedule. Defaults to the user making the call.
id requiredstringID of the segment to remove.

options: Request options for this call: as, token, signal, timeout, retries.

Promise<void>

await twitch.schedule.deleteSegment({ id: segment.id });

Twitch reference