Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ShaneIsrael/fireshare/llms.txt

Use this file to discover all available pages before exploring further.

The file manager is Fireshare’s admin interface for managing your entire media library at scale. Rather than editing one clip at a time, you can select dozens of files and rename, move, set privacy, apply passwords, or clean up derived data in a single operation. It also gives you a bird’s-eye view of folder layout, file sizes, transcoding status, and crop state across every video and image in your library.

Accessing the File Manager

Navigate to /files in your browser while logged in as an admin. The page is not accessible to non-admin accounts. In demo mode, the demo account can view the file manager but is prevented from performing destructive operations. The file manager is divided into two tabs:
  • Video files — lists every video known to the database
  • Image files — lists every image known to the database

Columns Displayed

Each row in the file manager exposes the following metadata at a glance:
ColumnDescription
FilenameThe actual filename on disk
FolderTop-level folder the file lives in
SizeSize of the source file on disk
Derived sizeCombined size of all transcoded/crop files in /processed/derived/
DurationPlayback length (videos only, adjusted for crop)
ResolutionWidth × height of the source file
PrivacyWhether the file is public or private
TranscodesWhich resolution transcodes exist (480p, 720p, 1080p)
CropWhether a crop has been applied
PasswordWhether a password is set on the video

Bulk Video Operations

Select one or more videos using the checkboxes, then choose an action from the bulk-action toolbar. All bulk operations require admin privileges.
Permanently deletes the selected video files from disk along with their database records, symlinks in /processed/video_links/, and all derived files in /processed/derived/. This action cannot be undone.Endpoint: POST /api/admin/files/bulk-deleteBody:
{ "video_ids": ["abc123", "def456"] }
Bulk delete removes the original source files from your video mount. Ensure you have a backup before proceeding.
Moves the selected videos to an existing folder inside the /videos root. The database record, symlink, and any applicable folder game rules are all updated automatically.Endpoint: POST /api/admin/files/bulk-moveBody:
{ "video_ids": ["abc123"], "folder": "Valorant" }
The target folder must already exist. Use the folder management panel to create one first if needed.
Updates the display title stored in the database for each selected video. This does not rename the file on disk — only the title shown in the UI and on the share page.Endpoint: POST /api/admin/files/bulk-renameBody:
{
  "renames": [
    { "video_id": "abc123", "title": "Clutch Round 12" },
    { "video_id": "def456", "title": "Ace on Ascent" }
  ]
}
Sets all selected videos to either public or private in a single request.Endpoint: POST /api/admin/files/bulk-set-privacyBody:
{ "video_ids": ["abc123", "def456"], "private": false }
Pass "private": true to make videos private (link-only) or "private": false to publish them to the public feed.
Applies a single password to all selected videos. Viewers will be prompted to enter the password before playback on the public share page.Endpoint: POST /api/admin/files/bulk-set-passwordBody:
{ "video_ids": ["abc123", "def456"], "password": "hunter2" }
Passwords are stored as pbkdf2:sha256 hashes and are never exposed in API responses.
Clears the password from all selected videos, making them accessible without a passphrase.Endpoint: POST /api/admin/files/bulk-remove-passwordBody:
{ "video_ids": ["abc123", "def456"] }
Deletes the 480p, 720p, and 1080p transcoded MP4 files from /processed/derived/<video_id>/ and clears the corresponding flags in the database. The original source file is not affected.Endpoint: POST /api/admin/files/bulk-remove-transcodesBody:
{ "video_ids": ["abc123", "def456"] }
Use this to reclaim disk space if you no longer need quality variants, or before re-transcoding at a different setting.
Removes the crop window from selected videos by deleting the cropped MP4 file, clearing all transcode variants, and resetting start_time and end_time in the database. Viewers will then see the full original video.Endpoint: POST /api/admin/files/bulk-remove-cropBody:
{ "video_ids": ["abc123"] }

Folder Management

The file manager provides controls for creating and deleting top-level folders inside your video and image mount directories.
1

Create a folder

Click New Folder in the file manager toolbar and enter a name. Folder names may not contain / or \ and may not begin with ..Video endpoint: POST /api/admin/folders/create Image endpoint: POST /api/admin/image-folders/create
{ "name": "Valorant" }
2

Delete a folder

Select an empty folder and click Delete Folder. Only empty folders can be deleted. The operation will return an error if any files remain inside.Video endpoint: POST /api/admin/folders/delete Image endpoint: POST /api/admin/image-folders/delete
{ "folders": ["OldGame"] }
The folders configured as admin_upload_folder_name (default: uploads) and public_upload_folder_name (default: public uploads) are protected and cannot be deleted through the file manager. Attempts to delete them will return an error.

Bulk Image Operations

The Image files tab supports a parallel set of bulk operations for images. Select images and apply any of the following:
OperationEndpoint
Bulk rename titlesPOST /api/admin/image-files/bulk-rename
Bulk move to folderPOST /api/admin/image-files/bulk-move
Bulk set privacyPOST /api/admin/image-files/bulk-set-privacy
Bulk deletePOST /api/admin/image-files/bulk-delete
Image operations follow the same request shape as their video equivalents, substituting image_ids for video_ids.

Orphaned Derived Files

When a video is removed from the database without using the bulk-delete flow (for example, by manually deleting a source file), its derived folder in /processed/derived/ may be left behind. These orphaned folders consume disk space without serving any purpose.
1

Find orphaned derived folders

The file manager scans /processed/derived/ and compares folder names against known video and image IDs in the database.Endpoint: GET /api/admin/files/orphaned-derivedReturns a list of folder names and their sizes:
{
  "orphans": [
    { "video_id": "stale-id-001", "size": 104857600 }
  ]
}
2

Clean up orphaned folders

Once reviewed, trigger a cleanup to delete all orphaned derived directories.Endpoint: POST /api/admin/files/cleanup-orphaned-derived
{ "deleted": ["stale-id-001"], "errors": [] }
This operation is blocked for the demo account and cannot be undone.

Real-Time Transcoding Status (SSE)

The file manager subscribes to a Server-Sent Events stream that pushes live transcoding and game-scan progress without polling. The internal Nginx configuration ensures this endpoint is never buffered or cached. Endpoint: GET /api/admin/stream Events emitted on the stream:
Event nameDescription
transcodingCurrent job progress, queue depth, ETA, encoder, and resolution
gameScanGame detection scan progress and suggestion count
The stream sends a heartbeat comment (: heartbeat) every 30 seconds to keep the connection alive through proxies. When transcoding is idle, state is still broadcast on every status change so the UI reflects completion immediately.
If transcoding progress stops updating in the UI, check that your reverse proxy is not buffering the /api/admin/stream endpoint. See Reverse Proxy for the required Nginx configuration.

Full API Endpoint Reference

MethodEndpointDescription
GET/api/admin/filesList all videos with file metadata
POST/api/admin/files/bulk-deleteDelete multiple videos
POST/api/admin/files/bulk-moveMove multiple videos to a folder
POST/api/admin/files/bulk-renameRename titles for multiple videos
POST/api/admin/files/bulk-set-privacySet privacy on multiple videos
POST/api/admin/files/bulk-set-passwordSet a password on multiple videos
POST/api/admin/files/bulk-remove-passwordRemove password from multiple videos
POST/api/admin/files/bulk-remove-transcodesDelete transcoded variants
POST/api/admin/files/bulk-remove-cropRemove crop from multiple videos
GET/api/admin/files/orphaned-derivedList orphaned derived folders
POST/api/admin/files/cleanup-orphaned-derivedDelete all orphaned derived folders
POST/api/admin/folders/createCreate a new video folder
POST/api/admin/folders/deleteDelete an empty video folder
GET/api/admin/image-filesList all images with file metadata
POST/api/admin/image-files/bulk-renameRename titles for multiple images
POST/api/admin/image-files/bulk-moveMove multiple images to a folder
POST/api/admin/image-files/bulk-set-privacySet privacy on multiple images
POST/api/admin/image-files/bulk-deleteDelete multiple images
POST/api/admin/image-folders/createCreate a new image folder
POST/api/admin/image-folders/deleteDelete an empty image folder
GET/api/admin/streamSSE stream for real-time admin events

Build docs developers (and LLMs) love