---
title: "Get Historical Webinar Session"
method: GET
path: "/webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}"
tags: ["Historical Webinars"]
---

# Get Historical Webinar Session

`GET /webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}`

## Request

- Base URL: `https://platform.ringcentral.com`
- URL: `https://platform.ringcentral.com/webinar/history/v1/webinars/{webinarId}/sessions/{sessionId}`
- Auth: OAuth 2
  - Authorization code: `https://platform.ringcentral.com/restapi/oauth/authorize`
  - Token URL: `https://platform.ringcentral.com/restapi/oauth/token`
- TypeScript: <https://skmtc.dev/ringcentral/apis/ringcentral-api/docs/webinar/history/v1/webinars/:webinarId/sessions/:sessionId/get.ts> (a function with typed inputs; its response is checked against the schema)

Returns a historical webinar Session by ID. Access allowed to participants with original role as Host or CoHost.

## Response `200`

Successful response

- SessionResource
  - `id` string: Internal object ID
  - `creationTime` string, date-time, required: Object creation time
  - `lastModifiedTime` string, date-time, required: Object last modification time
  - `startTime` string, date-time: Session start time. If a session hasn't been started this fields should be set to "scheduledStartTime"
  - `endTime` string, date-time: Session end time. If a session hasn't been finished this fields should be set to ("startTime"+"scheduledDuration")
  - `duration` integer: Session duration in seconds rounded up (returned if 'startTime' and 'endTime' are not empty)
  - `title` string: Session title. If blank - derived from webinar title.
  - `description` string: User-friendly description of the Session. If blank - derived from webinar title.
  - `scheduledStartTime` string, date-time: Session scheduled start time.
  - `scheduledDuration` integer: The scheduled duration of the Session in seconds.
  - `timeZone` string: IANA-compatible time zone name (see https://www.iana.org/time-zones).
  - `localeCode` string: Session locale code. Can't be blank or null.
  - `panelJoinTimeOffset` integer: The time offset (positive, in seconds) indicating how much in advance (comparing to "scheduledStartTime") panel members should join for the pre-webinar team sync
  - `broadcastingStartTime` string, date-time: The time when broadcasting started.
  - `broadcastingEndTime` string, date-time: The time when broadcasting ended.
  - `status` 'Scheduled' | 'Active' | 'Finished': Webinar session status
  - `runtimeStatus` 'Idle' | 'Practice' | 'GoingLive' | 'Live' | 'Break' | 'Debrief': Session runtime status (for 'Active' Sessions only). It is omitted (or null) if the status is not Active
  - `participantCount` integer: The number of participants (of all roles) who joined the webinar
  - `attendeeCount` integer: The number of attendees who joined the webinar
  - `uniqueParticipantCount` integer: Unique number of participants (of all roles) who joined the webinar
  - `uniqueAttendeeCount` integer: Unique number of attendees who joined the webinar
  - `videoBridgeId` string: The RCV bridge id
  - `recording` RecordingExtendedModel
    - `id` string: Internal object ID
    - `creationTime` string, date-time, required: Object creation time
    - `lastModifiedTime` string, date-time, required: Object last modification time
    - `status` 'Processing' | 'Available' | 'Failed' | 'Purged', required: Recording status
    - `failureReason` ApiError: Generalized API error structure suitable for any error type
      - `errorCode` string, required: Logical error code (typically, 3 letters followed with number, dash separated)
      - `message` string, required: User-friendly error message
    - `duration` integer: Recording duration in seconds
    - `shared` boolean: Indicates if Host or Admin has shared a recording. Can be set to true only then recording status is 'Available'.
    - `sharedUriExpirationTime` string, date-time, nullable: Time after which recording shared link cannot be accessed by recipients.
    - `recordingSharedUri` string, uri, required: Shared URI of the recording. If a password was required to join a webinar, the URI should contain the password encoded
  - `livestreams` SessionLivestreamMinimalModel[]: The list of livestreams configured for the session
    - `livestreamId` string, required: Identifier of the livestream
    - `serviceProvider` string, required: Name of the livestreaming service provider
    - `livestreamStatus` 'Initialized' | 'Authorized' | 'Configured' | 'PublishSetup' | 'Publishing' | 'Paused' | 'Error' | 'Break' | 'Deleted' | 'Completed', required: Last known state of the livestream as notified by Webinar Livestreaming Controller Service (WLCS). Value may not be consistent with latest state, especially for livestream associated with OAuth2.0 based service providers. Thus, state must be obtained directly from WLCS
    - `previousLivestreamStatus` 'Initialized' | 'Authorized' | 'Configured' | 'PublishSetup' | 'Publishing' | 'Paused' | 'Error' | 'Break' | 'Deleted' | 'Completed': Last known state of the livestream as notified by Webinar Livestreaming Controller Service (WLCS). Value may not be consistent with latest state, especially for livestream associated with OAuth2.0 based service providers. Thus, state must be obtained directly from WLCS
    - `livestreamStartTime` string, date-time: Time at which the session started to publish media to livestream service provider.
    - `error` ApiError: Generalized API error structure suitable for any error type
      - `errorCode` string, required: Logical error code (typically, 3 letters followed with number, dash separated)
      - `message` string, required: User-friendly error message

## Other responses

- `403`: General response with **HTTP 403 "Forbidden"** status.<br> Reasons: the requested operation is forbidden because of certain resource state, lack of permissions, feature unavailability, etc.
- `404`: General response with **HTTP 404 "Not found"** status.<br> Reasons: the entity with given ID (typically specified in a path parameter), is not found or inaccessible
- `500`: General response with **HTTP 500 "Internal Server Error"** status.<br> Reasons: general server-side error.

---

[API](https://skmtc.dev/ringcentral/apis/ringcentral-api.md) - [All operations](https://skmtc.dev/ringcentral/apis/ringcentral-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ringcentral/apis/ringcentral-api/revisions/8d602198ec97?raw)
