What is Scheduling module
The Scheduling module is part of the Talview SDK, exposed asProview.scheduling. It provides a candidate-facing interface for managing interview scheduling workflows.
Once initialized with a token, it lets your application:
- Fetch meetings — retrieve a candidate’s scheduled interviews and their current state.
- Respond to interviews — accept, decline, propose a new time, or submit availability on behalf of the candidate.
- Render scheduling UI — mount a prebuilt scheduling interface in
inline,sidebar, ormodallayout. - React to state changes — subscribe to events for phase transitions, route changes, and errors.
locale option.
Quickstart
All async methods support both Promises and an optional callback. This walkthrough uses Promises. See Callback Signature for the callback form.
1. Initialize
CallProview.scheduling.init() once with a token provider. The SDK resolves the candidate identity from the token.
2. Fetch meetings
3. Fetch state for a specific meeting
4. Respond to an interview
Accept:5. Render the scheduling UI
Mount the scheduling UI into any container element. Three layout modes are supported:inline, sidebar, and modal.
6. Navigate programmatically
Usescheduling.navigate() to trigger a view change from outside the UI:
mounted.setView() to change the view from the mounted instance directly:
7. Listen to events
on() returns an unsubscribe function, useful for cleanup in component lifecycles:
8. Teardown
When done, unmount the UI and destroy the session:API Reference
Proview.scheduling.init(input)
Creates a scheduling session.
Input
SchedulingSession
fetchMeetings(cb?)
Returns all meetings for the candidate.
| Input | None |
| Promise | Promise<MeetingSummary[]> |
| Callback | (error: SchedulingError | null, meetings?: MeetingSummary[]) => void |
fetchMeeting(meetingId, cb?)
Returns the current scheduling state for one meeting.
| Input | meetingId: string |
| Promise | Promise<SchedulingState | null> |
| Callback | (error: SchedulingError | null, state?: SchedulingState | null) => void |
acceptMeeting(payload, cb?)
Accepts a specific interview within a meeting.
Input
| Promise | Promise<SchedulingState> |
| Callback | (error: SchedulingError | null, state?: SchedulingState | null) => void |
declineMeeting(payload, cb?)
Declines a specific interview within a meeting.
Input
| Promise | Promise<SchedulingState> |
| Callback | (error: SchedulingError | null, state?: SchedulingState | null) => void |
proposeNewTime(payload, cb?)
Submits a candidate’s preferred alternative time slot.
Input
| Promise | Promise<SchedulingState> |
| Callback | (error: SchedulingError | null, state?: SchedulingState | null) => void |
setAvailability(payload, cb?)
Saves the candidate’s general availability for scheduling. Availability is candidate-scoped, not tied to a specific meeting. The meetingId provides session context for the operation.
Input
| Promise | Promise<SchedulingState> |
| Callback | (error: SchedulingError | null, state?: SchedulingState | null) => void |
mount(options)
Mounts the scheduling UI into a host element.
Input
MountedSchedulingUi
navigate(view, options)
Navigates the mounted UI to a target view. Equivalent to mounted.setView() but called on the session rather than the mounted instance.
view | SchedulingView |
options | { meetingId: string } |
| Returns | void |
getCurrentView()
Returns the currently active view name.
| Returns | SchedulingView |
on(event, handler) / off(event, handler)
Subscribes or unsubscribes from scheduling events. on() returns an unsubscribe function as a convenience alternative to calling off().
Event names and payloads
| Event | Payload |
|---|---|
state.changed | { previous: SchedulingState; current: SchedulingState; source: 'command' | 'remote' } |
ui.route.changed | { from: SchedulingView | null; to: SchedulingView; mode: 'memory' | 'host_v8'; meetingId?: string } |
ui.rendered | { view: SchedulingView; mode: UiMode; containerId?: string } |
session.error | SchedulingError |
session.destroyed | { meetingId: string; participantId: string; destroyedAt: string } |
destroy()
Cleans up the scheduling session and all event listeners. Call mounted.unmount() first if the UI is still mounted.

