List Series
Display a paginated listing of available TV series with optional category filtering.series
Middleware: auth, verified
Controller: SeriesController::index (app/Http/Controllers/Series/SeriesController.php:30)
Query Parameters
Filter series by category provider ID
- If invalid, redirects with warning and shows all categories
- Empty string or omitted shows all categories
- Supports uncategorized series
Pagination cursor timestamp
- Used for cursor-based pagination
- Auto-generated if not provided
Pagination cursor ID
- Used with
as_offor stable pagination - Must be positive integer
Response
Returns Inertia response renderingseries/index component.
Props:
Paginated collection of series
- 20 items per page
- Ordered by
last_modifiedDESC,series_idDESC - Each series includes
in_watchlistflag for current user
Current filter state
- Contains selected category ID
Available category sidebar items
- Generated for MediaType::Series
- Includes selected state
Example
Show Series Details
Display detailed information about a specific series including all seasons and episodes.series.show
Middleware: auth, verified
Controller: SeriesController::show (app/Http/Controllers/Series/SeriesController.php:153)
Path Parameters
Series ID
- Must be numeric (validated with
whereNumber) - Must exist in Series model
Response
Returns Inertia response renderingseries/show component.
Props:
Complete series information from Xtream Codes API
- Retrieved via
GetSeriesInfoRequest - Contains metadata, seasons, episodes, etc.
- Organized as
seasonsWithEpisodesarray
Whether current user has this series in their watchlist
Auto-download monitoring configuration for this series
- Null if not monitored
- Includes schedule, settings, and series info
Available preset times for scheduling
- From config
auto_episodes.preset_times
Available preset episode counts for backfilling
- From config
auto_episodes.backfill_preset_counts
Cooldown period for run-now operations
- Default: 300 seconds
- From config
auto_episodes.run_now_cooldown_seconds
Example
Clear Series Cache
Invalidate cached series information to force fresh data retrieval.series.cache
Middleware: auth, verified
Controller: SeriesCacheController::destroy (app/Http/Controllers/Series/SeriesCacheController.php)
Path Parameters
Series ID
- Must be numeric
Response
Returns redirect back to previous page. Controller Reference: routes/web.php:56-58Example
Add Series to Watchlist
Add a series to the current user’s watchlist.series.watchlist
Middleware: auth, verified
Controller: SeriesWatchlistController::store (app/Http/Controllers/Series/SeriesWatchlistController.php:20)
Path Parameters
Series ID
- Must be numeric
Response
Returns redirect back to previous page. Success:- Series added to user’s watchlist
- No flash message (silent success)
Example
Remove Series from Watchlist
Remove a series from the current user’s watchlist.series.watchlist.destroy
Middleware: auth, verified
Controller: SeriesWatchlistController::destroy (app/Http/Controllers/Series/SeriesWatchlistController.php:33)
Path Parameters
Series ID
- Must be numeric
Response
Returns redirect back to previous page. Success:- Series removed from user’s watchlist
- No flash message (silent success)
Example
Download Single Episode (Server)
Trigger a server-side download of a specific episode through Aria2.series.download.single
Middleware: auth, verified, can:server-download
Controller: SeriesDownloadController::create (app/Http/Controllers/Series/SeriesDownloadController.php:34)
Path Parameters
Series ID
- Must be numeric
Season number
- Must be numeric
Episode number within the season
- Must be numeric
Query Parameters
URL to redirect to after download starts
- Must match pattern
/downloads - Defaults to downloads page if not provided or invalid
Response
Redirects to downloads page with query parameters. Redirect Parameters:episode- Episode numberdownloadable_id- Episode IDseries_id- Series IDgid- Aria2 download GID
- “Episode not found.” - Invalid season/episode combination
- “Download already in progress.” - Episode already downloading
Example
Batch Download Episodes (Server)
Trigger server-side downloads for multiple episodes at once.series.download.batch
Middleware: auth, verified, can:server-download
Controller: SeriesDownloadController::store (app/Http/Controllers/Series/SeriesDownloadController.php:69)
Path Parameters
Series ID
- Must be numeric
Request Body
Array of episode objects to download
- Each object must contain
seasonandepisodeNum - Validated via
BatchDownloadEpisodesData
Response
Redirects to downloads page. Success Message:- “SE not found.” - Invalid episode
- “Failed to save download references.” - Database error
- Aria2 error messages if download initiation fails
- Validates all episodes exist
- Creates download URLs for each episode
- Initiates batch download via Aria2
- Creates MediaDownloadRef records in transaction
- Redirects to downloads page
Example
Direct Download Single Episode
Generate a signed direct download link for a single episode.series.direct.single
Middleware: auth, verified
Controller: SeriesDownloadController::direct (app/Http/Controllers/Series/SeriesDownloadController.php:124)
Feature Flag
Requires feature flag enabled:Path Parameters
Series ID
- Must be numeric
Season number
- Must be numeric
Episode number
- Must be numeric
Response
Returns view response with direct download page. View:direct-download.start
Data:
signedUrl- Signed URL for secure direct download
- “Episode not found.” - Invalid season/episode
Example
Batch Direct Download Links (Text File)
Generate a text file containing direct download links for multiple episodes.series.direct.batch
Middleware: auth, verified
Controller: SeriesDownloadController::batchDirectTxt (app/Http/Controllers/Series/SeriesDownloadController.php:149)
Feature Flag
Requires feature flag enabled:Path Parameters
Series ID
- Must be numeric
Request Body
Array of episode objects
- Each object must contain
seasonandepisodeNum - Validated via
BatchDownloadEpisodesData
Response
Returns text file download. Headers:Content-Type: text/plainContent-Disposition: attachment; filename="direct-links.txt"
- “SE not found.” - Invalid episode
- “No episodes selected.” - Empty selection
Example
Create Series Monitoring
Enable automated episode download monitoring for a series.series.monitoring.store
Middleware: auth, verified, can:auto-download-schedules
Controller: SeriesMonitoringController::store (app/Http/Controllers/AutoEpisodes/SeriesMonitoringController.php)
Controller Reference: routes/web.php:83-89
Path Parameters
Series ID
- Must be numeric
Example
Update Series Monitoring
Update the monitoring configuration for a series.series.monitoring.update
Middleware: auth, verified, can:auto-download-schedules
Controller: SeriesMonitoringController::update
Controller Reference: routes/web.php:90-92
Path Parameters
Series ID
- Must be numeric
Example
Delete Series Monitoring
Disable automated episode download monitoring for a series.series.monitoring.destroy
Middleware: auth, verified, can:auto-download-schedules
Controller: SeriesMonitoringController::destroy
Controller Reference: routes/web.php:93-95
Path Parameters
Series ID
- Must be numeric
Example
Run Series Monitoring Now
Manually trigger an immediate check for new episodes to download.series.monitoring.run-now
Middleware: auth, verified, can:auto-download-schedules
Controller: SeriesMonitoringRunNowController::store
Controller Reference: routes/web.php:97-100
Path Parameters
Series ID
- Must be numeric
Cooldown
Subject to cooldown period configured in:Example
Backfill Series Episodes
Download multiple past episodes that were released before monitoring started.series.monitoring.backfill
Middleware: auth, verified, can:auto-download-schedules
Controller: SeriesMonitoringBackfillController::store
Controller Reference: routes/web.php:101-104
Path Parameters
Series ID
- Must be numeric
Example
Series Model
Series are stored in theSeries model with the following key attributes:
Key Fields:
series_id- Unique identifier from providername- Series titlecover- Cover/poster image URLcategory_id- Category provider IDlast_modified- Last update timestampin_watchlist- Virtual attribute (exists check)
watchlists- User watchlist entriescategory- Category relationshipmonitor- Series monitoring configuration
- Episodes organized as
seasonsWithEpisodes[season][episode] - Each episode is an
Episodeobject from Xtream Codes API
Next Steps
Movies API
Browse and stream VOD content
Downloads API
Manage download operations
Watchlist API
Manage watchlist items