> ## Documentation Index
> Fetch the complete documentation index at: https://docs.series.hr/llms.txt
> Use this file to discover all available pages before exploring further.

# List Sessions

> Get paginated list of sessions with optional filters

Retrieve a paginated list of sessions. All filter parameters are optional — if none are provided, all sessions are returned with pagination.

## Request

```bash theme={null}
curl -X GET "https://api.series.hr/sessions/list?page=1&status=upcoming" \
  -H "apikey: YOUR_API_KEY"
```

### Date range example

```bash theme={null}
curl -X GET "https://api.series.hr/sessions/list?start=2024-01-01&end=2024-01-31&status=completed" \
  -H "apikey: YOUR_API_KEY"
```

### Single date example

```bash theme={null}
curl -X GET "https://api.series.hr/sessions/list?date=2024-01-15" \
  -H "apikey: YOUR_API_KEY"
```

## Parameters

<ParamField query="page" type="integer">
  Page number (default: 1)
</ParamField>

<ParamField query="status" type="string">
  Filter by session status. One of: `upcoming`, `ongoing`, `completed`, `cancelled`
</ParamField>

<ParamField query="date" type="string">
  Filter by a single date (`YYYY-MM-DD`). Cannot be combined with `start`/`end`.
</ParamField>

<ParamField query="start" type="string">
  Start of date range (`YYYY-MM-DD`). Use with `end`.
</ParamField>

<ParamField query="end" type="string">
  End of date range (`YYYY-MM-DD`). Use with `start`.
</ParamField>

<ParamField query="host" type="string">
  Filter by host user ID
</ParamField>

## Response

<ResponseField status={200} name="200">
  ```json theme={null}
  {
    "success": true,
    "data": {
      "WorkspaceId": "workspace_abc123",
      "Page": 1,
      "Sessions": [
        {
          "SessionId": "session_1234567890_abc12345678",
          "WorkspaceId": "workspace_abc123",
          "Title": "Training Session",
          "Host": "714760171",
          "Scheduled": "2024-01-20T15:00:00.000Z",
          "Delayed": false,
          "Status": "upcoming",
          "Claimable": true,
          "Duration": 60,
          "CustomRoles": {
            "Trainer": {
              "MinRank": 25,
              "Permissions": {
                "ChangeSessionStatus": false,
                "PassOrFailAttendees": true,
                "ModifyAttendance": true
              },
              "Slots": {
                "VACANT_0": { "Attended": false },
                "VACANT_1": { "Attended": false }
              }
            }
          }
        }
      ]
    }
  }
  ```
</ResponseField>

<Note>The `CustomRoles` field is only included for **Premium/Enterprise** workspaces that have custom roles configured on their sessions.</Note>


## OpenAPI

````yaml GET /sessions/list
openapi: 3.0.0
info:
  title: Series API
  version: 1.0.0
  description: >-
    Series API — a free REST API by Sailboat Games, LLC that lets Roblox
    communities programmatically manage workspaces, staff, sessions, time-off
    and activity data.
  contact:
    name: Sailboat Games, LLC.
    email: admin@sailboatgames.com
servers:
  - url: https://api.series.hr
    description: Production API
security:
  - ApiKeyAuth: []
paths:
  /sessions/list:
    get:
      tags:
        - Sessions
      summary: List Sessions
      description: >-
        Get paginated list of sessions for the workspace. Supports optional
        filtering by status, date, date range, and host.
      parameters:
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1
            default: 1
          description: 'Page number (default: 1)'
        - name: status
          in: query
          schema:
            type: string
            enum:
              - upcoming
              - ongoing
              - completed
              - cancelled
          description: Filter by session status
        - name: date
          in: query
          schema:
            type: string
            format: date
          description: >-
            Filter by a single date (YYYY-MM-DD). Cannot be combined with
            start/end.
        - name: start
          in: query
          schema:
            type: string
            format: date
          description: Filter by date range start (YYYY-MM-DD). Use with end.
        - name: end
          in: query
          schema:
            type: string
            format: date
          description: Filter by date range end (YYYY-MM-DD). Use with start.
        - name: host
          in: query
          schema:
            type: string
          description: Filter by host user ID
      responses:
        '200':
          description: Sessions list
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
      description: >-
        Pass your API key in the `apikey` header. Alternatively, the `x-api-key`
        header is also accepted.

````