Overview
The export creates a ZIP archive containing your StreamElements data in multiple formats. JSON files contain the complete raw data, while CSV files provide spreadsheet-friendly versions for easy viewing and analysis.
flowchart LR
subgraph Auth["🔐 Authentication"]
OAuth["OAuth Token"]
JWT["JWT Token"]
end
subgraph API["☁️ StreamElements API"]
direction TB
Endpoints["API Endpoints
/commands, /overlays,
/points, etc."]
CDN["Asset CDN
images, sounds"]
end
subgraph Process["⚙️ Export Process"]
direction TB
Fetch["Fetch Data"]
Download["Download Assets"]
Extract["Extract Widgets"]
Hash["Compute Hashes"]
end
subgraph Output["📦 Output"]
direction TB
JSON["JSON Files
complete data"]
CSV["CSV Files
spreadsheet format"]
Code["Code Files
HTML/CSS/JS"]
Media["Media Files"]
Manifest["manifest.json
with SHA-256"]
end
ZIP["📥 .zip Download"]
OAuth --> Endpoints
JWT --> Endpoints
Endpoints --> Fetch
CDN --> Download
Fetch --> Extract
Download --> Hash
Extract --> Hash
Hash --> JSON
Hash --> CSV
Hash --> Code
Hash --> Media
Hash --> Manifest
JSON --> ZIP
CSV --> ZIP
Code --> ZIP
Media --> ZIP
Manifest --> ZIP
Export process from authentication to ZIP download
Each export includes a manifest.json file with metadata about the export,
including SHA-256 hashes for file integrity verification, and a README.md
with human-readable documentation.
Version: This documentation covers export format version 1.1
Data Relationships
The export archive contains multiple data types that relate to each other. This diagram shows how the different components connect.
flowchart TB
subgraph Export["📦 Export Archive"]
direction TB
Manifest["manifest.json
Metadata & Hashes"]
README["README.md"]
end
subgraph Bot["🤖 Bot Configuration"]
direction TB
Commands["Commands
custom & default"]
Timers["Timers"]
Filters["Chat Filters"]
Variables["Variables"]
Commands -.->|"uses"| Variables
Timers -.->|"uses"| Variables
end
subgraph Visual["🎨 Visual Layer"]
direction TB
Overlays["Overlays"]
subgraph WidgetTypes["Widgets"]
Standard["Standard
alertbox, chatbox,
eventlist, etc."]
Custom["Custom
with code"]
end
Assets["Assets
images, sounds,
videos"]
Overlays -->|"contains"| Standard
Overlays -->|"contains"| Custom
Standard -.->|"references"| Assets
Custom -.->|"references"| Assets
end
subgraph CustomCode["📝 Custom Widget Code"]
direction LR
HTML["HTML"]
CSS["CSS"]
JS["JavaScript"]
Data["Data"]
Fields["Fields"]
end
subgraph Loyalty["💰 Loyalty System"]
direction TB
Settings["Loyalty Settings"]
Leaderboard["Leaderboard
all users"]
Store["Store Items"]
Settings -->|"configures"| Leaderboard
Store -.->|"costs"| Settings
end
subgraph Analytics["📊 Analytics"]
ChannelStats["Channel Stats"]
ChatStats["Chat Stats"]
end
Custom -->|"extracts to"| CustomCode
Export --- Bot
Export --- Visual
Export --- Loyalty
Export --- Analytics
Data flow and relationships between export components
Key Relationships
| Relationship | Description |
|---|---|
| Overlays → Widgets | Each overlay contains multiple widgets positioned on a canvas |
| Widgets → Assets | Widgets reference media files (images, sounds) by URL |
| Custom Widgets → Code | Custom widgets have HTML, CSS, JS, data, and field definitions extracted |
| Commands/Timers → Variables | Bot messages can reference custom variables using ${varname} |
| Store → Loyalty | Store item costs are defined in the loyalty currency |
Archive Structure
The export creates a ZIP file with a hierarchical folder structure organized by data type.
flowchart LR
subgraph Root["📦 {username}-export.zip"]
direction TB
M["📄 manifest.json"]
R["📄 README.md"]
subgraph Cmd["📁 commands/"]
C1["custom-commands.json"]
C2["default-commands.json"]
C3["custom-commands.csv"]
end
subgraph Tim["📁 timers/"]
T1["timers.json"]
T2["timers.csv"]
end
subgraph Ovr["📁 overlays/"]
O1["index.json"]
O2["{name}.json"]
subgraph Wgt["📁 {name}_widgets/"]
W1["_index.json"]
subgraph Std["📁 standard/"]
S1["{widget}.json"]
end
subgraph Cst["📁 custom/"]
CW1["{widget}.json"]
CW2["{widget}.html"]
CW3["{widget}.css"]
CW4["{widget}.js"]
end
end
subgraph Ast["📁 assets/"]
A1["asset-manifest.json"]
A2["{media files}"]
end
end
subgraph Pts["📁 points/"]
P1["loyalty-settings.json"]
P2["leaderboard.json"]
P3["leaderboard.csv"]
end
subgraph Sts["📁 stats/"]
ST1["channel-stats.json"]
ST2["chat-stats.json"]
end
subgraph Str["📁 store/"]
SR1["store-items.json"]
SR2["store-items.csv"]
end
subgraph Flt["📁 filters/"]
F1["chat-filters.json"]
end
subgraph Var["📁 variables/"]
V1["variables.json"]
V2["variables.csv"]
end
end
Visual representation of the export archive structure
Detailed File Tree
{username}-export/ ├── manifest.json # Export metadata and file hashes ├── README.md # Human-readable documentation ├── commands/ │ ├── custom-commands.json │ ├── default-commands.json │ └── custom-commands.csv ├── timers/ │ ├── timers.json │ └── timers.csv ├── overlays/ │ ├── index.json # Summary of all overlays │ ├── {overlay-name}.json # Full overlay definition │ ├── {overlay-name}_widgets/ │ │ ├── _index.json # Widget manifest │ │ ├── standard/ # Built-in SE widgets │ │ │ └── {widget}.json │ │ └── custom/ # Custom widgets with code │ │ ├── {widget}.json │ │ ├── {widget}.html │ │ ├── {widget}.css │ │ ├── {widget}.js │ │ ├── {widget}.data.json │ │ └── {widget}.fields.json │ └── assets/ │ ├── asset-manifest.json │ └── {media files} ├── points/ │ ├── loyalty-settings.json │ ├── leaderboard.json │ └── leaderboard.csv ├── stats/ │ ├── channel-stats.json │ └── chat-stats.json ├── store/ │ ├── store-items.json │ └── store-items.csv ├── filters/ │ └── chat-filters.json └── variables/ ├── variables.json └── variables.csv
Manifest File
The manifest.json file contains metadata about the export and integrity hashes
for all included files.
Schema
| Field | Type | Description |
|---|---|---|
exportDate |
string | ISO 8601 timestamp of when the export was created |
account |
string | StreamElements account username |
version |
string | Export format version (currently "1.1") |
complete |
boolean | Whether all exports succeeded without errors |
cancelled |
boolean | Whether the export was cancelled by the user |
exported |
array | List of data types included in this export |
errors |
array | Any errors encountered during export |
files |
array | All files with path, size, and SHA-256 hash |
stats |
object | Export statistics (totalFiles, totalSize, duration) |
Example
{
"exportDate": "2024-01-15T10:30:00.000Z",
"account": "mychannel",
"version": "1.1",
"complete": true,
"cancelled": false,
"exported": ["commands", "timers", "overlays", "points"],
"errors": [],
"files": [
{
"path": "commands/custom-commands.json",
"size": 4523,
"sha256": "a1b2c3d4..."
}
],
"stats": {
"totalFiles": 42,
"totalSize": 1548234,
"duration": 12500
}
}
Commands
Chat commands created in the StreamElements dashboard.
custom-commands.json JSON
Your custom chat commands with all configuration options.
| Field | Type | Description |
|---|---|---|
_id |
string | Unique identifier |
command |
string | Trigger word (without the ! prefix) |
reply |
string | Response message (may contain variables like ${user}) |
enabled |
boolean | Whether the command is active |
cooldown.user |
number | Per-user cooldown in seconds |
cooldown.global |
number | Global cooldown in seconds |
accessLevel |
number | Required permission level |
Access Levels
| Value | Role |
|---|---|
| 100 | Everyone |
| 250 | Regular |
| 300 | VIP |
| 400 | Subscriber |
| 500 | Moderator |
| 1000 | Super Moderator |
| 1500 | Broadcaster |
default-commands.json JSON
Built-in StreamElements commands with your enabled/disabled settings.
custom-commands.csv CSV
Spreadsheet-friendly format with flattened nested fields.
Timers
Automated messages that post to chat on intervals.
timers.json JSON
| Field | Type | Description |
|---|---|---|
_id |
string | Unique identifier |
name |
string | Timer name for reference |
message |
string | The message posted to chat |
interval |
number | Minutes between posts |
chatLines |
number | Minimum chat lines required before posting |
enabled |
boolean | Whether the timer is active |
timers.csv CSV
Spreadsheet-friendly format for easy viewing.
Overlays
Stream overlay configurations including all widgets and their settings.
index.json JSON
Summary list of all your overlays with basic metadata.
| Field | Type | Description |
|---|---|---|
_id |
string | Unique overlay identifier |
name |
string | Overlay name |
type |
string | Overlay type |
preview |
string | Preview image URL (if available) |
{overlay-name}.json JSON
Full overlay definition including all widgets and their configurations.
| Field | Type | Description |
|---|---|---|
_id |
string | Unique overlay identifier |
name |
string | Overlay name |
settings |
object | Canvas dimensions and display settings |
widgets |
array | Array of widget configurations |
Widgets
Each overlay's widgets are extracted into a dedicated folder, segregated into
standard/ (built-in SE widgets) and custom/ (widgets with custom code).
flowchart TB
Overlay["Overlay
contains widgets array"]
Overlay --> Check{"Has custom code?
HTML, CSS, JS,
data, or fields"}
Check -->|"No"| Standard["📁 standard/"]
Check -->|"Yes"| Custom["📁 custom/"]
Standard --> StdFiles["widget.json
settings only"]
Custom --> CstFiles["widget.json
widget.html
widget.css
widget.js
widget.data.json
widget.fields.json"]
subgraph Types["Standard Widget Types"]
direction LR
T1["alertbox"]
T2["chatbox"]
T3["eventlist"]
T4["goals"]
T5["ticker"]
T6["labels"]
end
Standard -.-> Types
Widget classification and file extraction logic
_index.json (Widget Manifest) JSON
Summary of all widgets in this overlay.
| Field | Type | Description |
|---|---|---|
overlayId |
string | Parent overlay ID |
overlayName |
string | Parent overlay name |
widgetCount |
number | Total number of widgets |
widgets |
array | Array of widget summaries |
standard/ (Built-in Widgets)
Contains StreamElements' built-in widgets like alertbox, chatbox, eventlist, etc.
{widget}.json JSON
| Field | Type | Description |
|---|---|---|
id |
string | Unique widget identifier |
name |
string | Widget display name |
type |
string | Widget type (alertbox, chatbox, eventlist, etc.) |
enabled |
boolean | Whether widget is active |
position |
object | X, Y coordinates and dimensions |
layer |
number | Z-index for stacking order |
settings |
object | Type-specific configuration options |
custom/ (Custom Widgets)
Contains widgets with custom HTML/CSS/JS code. Each custom widget includes:
| File | Badge | Description |
|---|---|---|
{widget}.json |
JSON | Widget settings (same structure as standard) |
{widget}.html |
CODE | HTML template with StreamElements variables |
{widget}.css |
CODE | Widget styles (SCSS-like syntax supported) |
{widget}.js |
CODE | JavaScript code for interactivity |
{widget}.data.json |
JSON | Widget data and variable values |
{widget}.fields.json |
JSON | Custom field definitions for the widget editor |
Note: Not all custom widgets have all code files. Only files with content are included.
Assets
Media files used by your overlays (images, sounds, videos).
asset-manifest.json JSON
Maps each downloaded file to its original URL and usage information.
| Field | Type | Description |
|---|---|---|
originalUrl |
string | Where the file was downloaded from |
originalName |
string | Original filename |
usedBy |
array | Which overlay(s) reference this asset |
Deduplication: Files are deduplicated by content hash, so identical files used by multiple overlays are stored once.
Points / Loyalty
Your loyalty points system configuration and user balances.
loyalty-settings.json JSON
| Field | Type | Description |
|---|---|---|
enabled |
boolean | Whether the points system is active |
name |
string | Custom name for your currency |
earning |
object | Points earned per interval settings |
bonus |
object | Subscriber bonus multipliers |
leaderboard.json JSON
Complete leaderboard with all users and their points balances.
| Field | Type | Description |
|---|---|---|
username |
string | Twitch username |
points |
number | Current balance |
pointsAlltime |
number | All-time points earned |
watchtime |
number | Total watch time in minutes |
rank |
number | Position on leaderboard |
leaderboard.csv CSV
Spreadsheet-friendly format for easy analysis.
Statistics
Channel and chat analytics from StreamElements.
channel-stats.json JSON
Channel-level analytics and metrics including follower counts, stream history, and engagement data.
chat-stats.json JSON
Chat activity statistics including message counts, active chatters, and chat patterns.
Store Items
Loyalty store items that viewers can redeem with their points.
store-items.json JSON
| Field | Type | Description |
|---|---|---|
_id |
string | Unique identifier |
name |
string | Item name displayed in store |
description |
string | Item description |
cost |
number | Points cost to redeem |
enabled |
boolean | Whether item is available |
quantity.total |
number | Total quantity available (-1 = unlimited) |
quantity.current |
number | Remaining quantity |
cooldown.user |
number | Per-user cooldown in seconds |
cooldown.global |
number | Global cooldown in seconds |
userInput |
boolean | Whether user must provide input when redeeming |
store-items.csv CSV
Spreadsheet-friendly format.
Chat Filters
Moderation settings for your chat.
chat-filters.json JSON
Contains all moderation rules including:
- Spam filters - Caps, emotes, symbols, repetition limits
- Link filters - Whitelist/blacklist domains, permit levels
- Word filters - Banned words and phrases
- Moderation levels - Who is exempt from each filter
Privacy Note: This file may contain sensitive moderation rules. Handle with care when sharing.
Variables
Custom variables that can be used in commands and timers.
variables.json JSON
| Field | Type | Description |
|---|---|---|
_id |
string | Unique identifier |
name |
string | Variable name (used as ${variablename} in commands) |
value |
string | Current value |
variables.csv CSV
Spreadsheet-friendly format.
File Integrity Verification
Each file in the export includes a SHA-256 hash in the manifest for integrity verification. This allows you to verify that files haven't been corrupted or tampered with.
File Entry Structure
| Field | Type | Description |
|---|---|---|
path |
string | File path within the archive |
size |
number | File size in bytes |
sha256 |
string | SHA-256 hash (lowercase hex) |
Verification Commands
Linux / macOS
sha256sum path/to/file
Windows PowerShell
Get-FileHash path/to/file -Algorithm SHA256
Python
import hashlib with open('path/to/file', 'rb') as f: print(hashlib.sha256(f.read()).hexdigest())
Tip: Compare the output hash (in lowercase) against the value in manifest.json to verify integrity.