Skip to main content

Streams

List Streams

curl -X GET https://your-instance.com/api/channels/streams/ \
  -H "Authorization: Bearer YOUR_TOKEN"
page
integer
default:"1"
Page number for pagination
page_size
integer
default:"50"
Number of items per page (max: 10000)
name
string
Filter by stream name (case-insensitive contains)
channel_group_name
string
Filter by channel group name (comma-separated for multiple)
m3u_account
integer
Filter by M3U account ID
m3u_account_name
string
Filter by M3U account name
m3u_account_is_active
boolean
Filter by M3U account active status
tvg_id
string
Filter by TVG ID (case-insensitive contains)
assigned
integer
Filter streams assigned to specific channel ID
unassigned
boolean
Show only unassigned streams (true/false)
hide_stale
boolean
Hide stale streams (true/false)
ids
string
Comma-separated list of stream IDs to retrieve
count
integer
Total number of streams
next
string
URL to next page
previous
string
URL to previous page
results
array
Array of stream objects

Get Stream IDs

curl -X GET https://your-instance.com/api/channels/streams/ids/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Returns only the IDs of streams matching the applied filters. Accepts same filter parameters as List Streams.
ids
array
Array of stream IDs

Get Stream Groups

curl -X GET https://your-instance.com/api/channels/streams/groups/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Returns unique channel group names that are linked to streams.
groups
array
Array of channel group names

Create Stream

curl -X POST https://your-instance.com/api/channels/streams/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO",
    "url": "http://example.com/stream.m3u8",
    "tvg_id": "hbo.us"
  }'

Update Stream

curl -X PUT https://your-instance.com/api/channels/streams/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO HD",
    "url": "http://example.com/stream-hd.m3u8"
  }'

Delete Stream

curl -X DELETE https://your-instance.com/api/channels/streams/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Bulk Delete Streams

curl -X POST https://your-instance.com/api/channels/streams/bulk-delete/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [1, 2, 3, 4, 5]
  }'
ids
array
required
Array of stream IDs to delete

Channels

List Channels

curl -X GET https://your-instance.com/api/channels/channels/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Supports filtering, searching, and ordering via query parameters.

Create Channel

curl -X POST https://your-instance.com/api/channels/channels/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO",
    "number": 101,
    "enabled": true
  }'

Update Channel

curl -X PUT https://your-instance.com/api/channels/channels/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO HD",
    "number": 101
  }'

Delete Channel

curl -X DELETE https://your-instance.com/api/channels/channels/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Bulk Delete Channels

curl -X POST https://your-instance.com/api/channels/channels/bulk-delete/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [1, 2, 3]
  }'

Get Channel Streams

curl -X GET https://your-instance.com/api/channels/channels/123/streams/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Returns all streams associated with a specific channel.

Channel Groups

List Channel Groups

curl -X GET https://your-instance.com/api/channels/groups/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Channel Group

curl -X POST https://your-instance.com/api/channels/groups/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Premium Channels"
  }'

Update Channel Group

curl -X PUT https://your-instance.com/api/channels/groups/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Premium HD Channels"
  }'

Delete Channel Group

curl -X DELETE https://your-instance.com/api/channels/groups/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Logos

List Logos

curl -X GET https://your-instance.com/api/channels/logos/ \
  -H "Authorization: Bearer YOUR_TOKEN"
id
integer
Logo ID
name
string
Logo name
url
string
Original logo URL
cache_url
string
Cached logo URL served by Dispatcharr
channel_count
integer
Number of channels using this logo
is_used
boolean
Whether the logo is used by any channels
channel_names
array
Names of channels using this logo (up to 5)
curl -X POST https://your-instance.com/api/channels/logos/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO Logo",
    "url": "https://example.com/hbo-logo.png"
  }'
curl -X PUT https://your-instance.com/api/channels/logos/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "HBO HD Logo",
    "url": "https://example.com/hbo-hd-logo.png"
  }'
curl -X DELETE https://your-instance.com/api/channels/logos/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Bulk Delete Logos

curl -X POST https://your-instance.com/api/channels/logos/bulk-delete/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [1, 2, 3]
  }'

Cleanup Unused Logos

curl -X POST https://your-instance.com/api/channels/logos/cleanup/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Deletes all logos that are not currently used by any channels.

Channel Profiles

List Profiles

curl -X GET https://your-instance.com/api/channels/profiles/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Profile

curl -X POST https://your-instance.com/api/channels/profiles/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Kids Profile",
    "description": "Family-friendly channels only"
  }'

Update Profile

curl -X PUT https://your-instance.com/api/channels/profiles/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Kids & Family"
  }'

Delete Profile

curl -X DELETE https://your-instance.com/api/channels/profiles/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Update Channel Membership

curl -X PUT https://your-instance.com/api/channels/profiles/123/channels/456/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true
  }'
Update whether a specific channel is enabled in a profile.

Bulk Update Channel Membership

curl -X POST https://your-instance.com/api/channels/profiles/123/channels/bulk-update/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "memberships": [
      {"channel_id": 1, "enabled": true},
      {"channel_id": 2, "enabled": false}
    ]
  }'

DVR Recordings

List Recordings

curl -X GET https://your-instance.com/api/channels/recordings/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Recording

curl -X POST https://your-instance.com/api/channels/recordings/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "channel_id": 123,
    "program_id": 456,
    "start_time": "2026-03-03T20:00:00Z",
    "end_time": "2026-03-03T22:00:00Z"
  }'

Update Recording

curl -X PUT https://your-instance.com/api/channels/recordings/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "completed"
  }'

Delete Recording

curl -X DELETE https://your-instance.com/api/channels/recordings/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Bulk Delete Upcoming Recordings

curl -X POST https://your-instance.com/api/channels/recordings/bulk-delete-upcoming/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "ids": [1, 2, 3]
  }'

Recurring Recording Rules

List Recurring Rules

curl -X GET https://your-instance.com/api/channels/recurring-rules/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Create Recurring Rule

curl -X POST https://your-instance.com/api/channels/recurring-rules/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tvg_id": "series.us",
    "title": "My Series",
    "record_new_only": true
  }'

Update Recurring Rule

curl -X PUT https://your-instance.com/api/channels/recurring-rules/123/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "record_new_only": false
  }'

Delete Recurring Rule

curl -X DELETE https://your-instance.com/api/channels/recurring-rules/123/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Series Rules

List Series Rules

curl -X GET https://your-instance.com/api/channels/series-rules/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Delete Series Rule

curl -X DELETE https://your-instance.com/api/channels/series-rules/series.tvg.id/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Evaluate Series Rules

curl -X POST https://your-instance.com/api/channels/series-rules/evaluate/ \
  -H "Authorization: Bearer YOUR_TOKEN"
Triggers evaluation of all series rules to create upcoming recordings.

Bulk Remove Series Recordings

curl -X POST https://your-instance.com/api/channels/series-rules/bulk-remove/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "tvg_ids": ["series1.us", "series2.us"]
  }'

Comskip Configuration

Get Comskip Config

curl -X GET https://your-instance.com/api/channels/dvr/comskip-config/ \
  -H "Authorization: Bearer YOUR_TOKEN"

Update Comskip Config

curl -X PUT https://your-instance.com/api/channels/dvr/comskip-config/ \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": true,
    "config": "detect_method=43\n"
  }'