Flowplayer OVP API v3 (3.0.0)
Download OpenAPI specification:Download
This API allows integration of your backend (like content management or publishing systems) with the Flowplayer platform for managing video and livestream assets. It can be used to fetch, list, create, update and delete Livestreams, Live Sources, Playlists, Categories and Videos.
All API requests need to be authenticated by providing the API keys as an header, x-flowplayer-api-key
.
Every API request has a rate limit, applied per the organization the x-flowplayer-api-key
is part of. This means that for the same organization there is a limited number of requests per second that can be done.
By default, every organization can perform 1 request/second of every API. Enterprise organizations can do up to 3 requests/second of every API.
If your organization triggers this rate limit, you'll receive the response status code 429 - Too Many Requests
with a response body { "message" : "Too Many Requests"}
.
Requesting the API
Base url for the API is:
https://api.flowplayer.com/platform/v3/
Endpoint structure
Each asset type has its own path and endpoint in the API with the following structure:
Asset type | Path |
---|---|
Livestreams | /livestreams |
Live Sources | /livesources |
Playlists | /playlists |
Category | /categories |
Video | /videos |
Content type
This API only supports JSON
-format output.
Sample request
A sample request for listing livestreams using the API.
curl https://api.flowplayer.com/platform/v3/livestreams \
-H "x-flowplayer-api-key: {my-api-key}" \
-H "Content-Type: application/json"
Categories can be used to categorize videos and livestreams within a workspace and are useful for creating automatic playlists and recommendations.
Categories are organized as a hierarchical tree structure. A video/livestream belongs to one single category.
List Category
Endpoint for listing a Category
Authorizations:
query Parameters
page | integer <int32> Default: 0 Page number | ||||||||
page_size | integer <int32> Default: 20 Page size | ||||||||
q | string Searches text fields case insensitive and partial (don't require full matches). For Categories, Limit to a specific field with a If you have multiple search terms you can use Examples:
| ||||||||
sort_by | string Default: "name" Value: "name" | ||||||||
sort_order | any Default: "DESC" Enum: "DESC" "ASC" Example: sort_order=ASC The sort order of the response | ||||||||
only_top_level | boolean Default: false Only Categories without parent Categories will be returned if set to | ||||||||
parent_id | string Limit search to Categories with a specific parent Category. When specified, only child Categories with the specified parent will be returned. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "total_count": 20,
- "total_count_in_search": 20,
- "page": 0,
- "page_size": 20,
- "total_pages": 20,
- "assets": [
- {
- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}
]
}
Create Category
Endpoint for creating a Category
Authorizations:
Request Body schema: application/json
name | string Name of the Category |
description | string This is a Category description |
parent_id | string Identifier to the parent Category if one exists. If the Category is on top level and no parent exists, the value is When updating a Category the parent can be removed by setting |
object (WorkspaceSimple) Site/Workspace-object that is the owner of the Playlist |
Responses
Request samples
- Payload
{- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}
Get Category
Endpoint for fetching a Category
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Category |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}
Update Category
Endpoint for updating a Category
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Category |
Request Body schema: application/json
name | string Name of the Category |
description | string This is a Category description |
parent_id | string Identifier to the parent Category if one exists. If the Category is on top level and no parent exists, the value is When updating a Category the parent can be removed by setting |
object (WorkspaceSimple) Site/Workspace-object that is the owner of the Playlist |
Responses
Request samples
- Payload
{- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}
Live sources greatly simplifies livestreaming for those doing a lot of livestreaming and is a unique feature to Flowplayer.
What is live sources
A Live source is a fixed stream name which may be re-used for multiple broadcasts.
Why live sources
We invented the concept of live sources to simplify the process and reduce the errors in livestreaming setup. We do this by allowing you to re-use the stream key several times on different livestreams. This reduces the setup time and also removes possible errors in the configuration since once the configuration is completed it can be re-used.
What type to use
Best option is to always create a STREAM
-type live source and benefit from our optimized encoding and delivery infrastructure.
However, sometimes you may need a different approach for example if you get to use a stream from a different content provider.
In this case creating a REMOTE
-type live source is a great idea to ensure that you get all analytics and can fully benefit from that even though the stream itself comes from a different provider.
List Live Source
Endpoint for listing a Live Source
Authorizations:
query Parameters
page | integer <int32> Default: 0 Page number | ||||||
page_size | integer <int32> Default: 20 Page size | ||||||
q | string Searches text fields case insensitive and partial (does not require full matches). For Live Sources Multiple search terms can be seprated with the Examples:
| ||||||
sort_by | string Default: "name" Value: "name" | ||||||
sort_order | any Default: "DESC" Enum: "DESC" "ASC" Example: sort_order=ASC The sort order of the response | ||||||
type | string Enum: "REMOTE" "STREAM" Returns only Live sources of the specified type. | ||||||
include_shared | boolean Default: false If |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "total_count": 20,
- "total_count_in_search": 20,
- "page": 0,
- "page_size": 20,
- "total_pages": 20,
- "assets": [
- {
- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}
]
}
Create Live Source
Endpoint for creating a Live Source
Authorizations:
Request Body schema: application/json
name | string |
description | string Live source Description |
type | string Default: "STREAM" Enum: "STREAM" "REMOTE" "SHARED" Defines whether this is a |
remote_hls_url | string HLS livestream url for this Live source if the |
Array of objects (WorkspaceSimple) List of Workspaces with access to this Live source, including the Workspace which is owner of this Live source. It's not required to specify the owning Workspace here when creating/updating Live sources. | |
available_for_organization | boolean When set to |
object (WorkspaceSimple) Site/Workspace-object that is the owner of the Playlist |
Responses
Request samples
- Payload
{- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}
Get Live Source
Endpoint for fetching a Live Source
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Live Source |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}
Update Live Source
Endpoint for updating a Live Source
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Live Source |
Request Body schema: application/json
name | string |
description | string Live source Description |
type | string Default: "STREAM" Enum: "STREAM" "REMOTE" "SHARED" Defines whether this is a |
remote_hls_url | string HLS livestream url for this Live source if the |
Array of objects (WorkspaceSimple) List of Workspaces with access to this Live source, including the Workspace which is owner of this Live source. It's not required to specify the owning Workspace here when creating/updating Live sources. | |
available_for_organization | boolean When set to |
Responses
Request samples
- Payload
{- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}
Go live now, schedule for later or start an 24x7 broadcast. The API supports creating, editing and deleting all supported types of livestreams, running from the Flowplayer platform as well as remote sources.
Scheduling type
When working with livestreams you need to define the type of livestream you want to use. We support three different types:
Type | Description |
---|---|
scheduled | Should be used if the livestream should start in the future or right away and have a defined end time. The typical use case would be an planned event, for example a soccer game. |
linear | Should be used when creating a 24x7 linear channel. Linear broadcasts come with some limitations, for example it's not possible to record them. |
simulive | Simulive can be used to simulate a livestream by defining a playlist of existing videos. The videos will be streamed as a livestream in the order specified in the playlist. |
The different types are treated differently by our platform and after creation it's not possible to change type, so it's important that the correct type is selected.
Remote or not
We always recommend to create livestreams using our optimized encoding and delivery infrastructure.
However, sometimes you may need a different approach for example if you get to use a stream from a different content provider.
In this case creating a REMOTE
livestream is the correct approach in order to ensure that you will get fully benefit from our features like analytics, even though the stream itself comes from a different provider.
You'll need to set the remote: true
parameter and specify a stream.viewing_url
to configure a REMOTE
livestream correctly.
List Livestream
Endpoint for listing a Livestream
Authorizations:
query Parameters
page | integer <int32> Default: 0 Page number | ||||||||||||||
page_size | integer <int32> Default: 20 Page size | ||||||||||||||
q | string Example: q=foo:name,custom_fields Search multiple text fields in a search that is case insensitive and does not require full matches. It searches Some examples:
| ||||||||||||||
categories | string Returns assets that have one of the specified Categories. Input should be a comma separated string with Category ids. You can specify up to four Categories in a single query. | ||||||||||||||
sort_by | string Default: "name" Enum: "name" "created_at" "start_time" "stop_time" | ||||||||||||||
sort_order | any Default: "DESC" Enum: "DESC" "ASC" Example: sort_order=ASC The sort order of the response | ||||||||||||||
created_at | string Example: created_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
live_source | string Example: live_source=live_source_id Returns all Livestreams that are connected to the specified Live source | ||||||||||||||
updated_at | string Example: updated_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
start_time | string Example: start_time=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
stop_time | string Example: stop_time=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
remote | boolean Filter |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "total_count": 20,
- "total_count_in_search": 20,
- "page": 0,
- "page_size": 20,
- "total_pages": 20,
- "assets": [
- {
- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "created_at": "2021-01-01T12:33:22Z",
- "updated_at": "2021-01-01T12:33:22Z",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "live_source": {
- "id": "string",
- "name": "string"
}, - "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}
}
]
}
Create Livestream
Endpoint for creating a Livestream
Authorizations:
Request Body schema: application/json
name | string Name of the Livestream |
description | string Livestream Description |
remote | boolean When set to |
object (LiveVideoReplacement) Contains settings for the Video that can be use to replace the Livestream in the player without re-embedding. | |
start_time | string <date-time> Start date and time in ISO 8601 format for the Livestream, for example: Before the start time the Livestream will not be publicly visible when delivered with platform embeds. Instead a count down will be displayed in the player. The start time will also initiate recording if the Livestream has the recording option set to |
stop_time | string <date-time> Stop date and time in ISO 8601 format for the Livestream, for example: This doesn't have any effect for the playback in the player unless This also controls the stop time for recordings. If recording is on for the Livestream it will stop at the stop time. |
category_id | string Unique identifier for the Category the Livestream belongs to. |
scheduling_type | string Enum: "INSTANT" "SCHEDULED" "LINEAR" "SIMULIVE" The type of livestream. Default value is |
object (Record) Contains recording settings for the Livestream | |
Array of objects (CustomField) List of all custom fields defined in the Workspace | |
ad_keywords | string Used for replacing the |
no_ads | boolean When set to |
published | boolean If |
tags | string A comma separated list of tags. |
allow_playback_after_stop_time | boolean When set to |
object (Geoblocking) | |
image_input | string Url to an image file which will be downloaded and imported to the platform, to be used as poster image for the livestream. If the livestream is of The image will replace s previously specified poster image for the asset. |
object (StreamInfo) | |
object (IdRequestCategory) | |
object (IdRequestWorkspaceSimple) site/workspace-object that is the owner of the Livestream | |
object (IdRequestLiveSource) The Live Source that is used for this livestream. To remove a Live Source from the Livestream, set the id of the Live Source to empty string ( "" ).
Example of removing a Live Source:
| |
object (SimuliveRequest) Optional payload in case of simulated live | |
Array of objects (SimulivePlaylistItemRequest) | |
user_id | string Id of the Livestream creator |
Responses
Request samples
- Payload
{- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "image_input": "string",
- "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}, - "category": {
- "id": "string"
}, - "workspace": {
- "id": "string"
}, - "live_source": {
- "id": "string"
}, - "simulive_request": {
- "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD"
}
], - "looped": false
}, - "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD"
}
], - "user_id": "string"
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "created_at": "2021-01-01T12:33:22Z",
- "updated_at": "2021-01-01T12:33:22Z",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "live_source": {
- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}, - "user_id": "string",
- "category": {
- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}, - "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}, - "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}
], - "current_playable": {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}, - "looped": true,
- "recordings": [
- "string"
]
}
Get Livestream
Endpoint for fetching a Livestream
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Livestream |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "created_at": "2021-01-01T12:33:22Z",
- "updated_at": "2021-01-01T12:33:22Z",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "live_source": {
- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}, - "user_id": "string",
- "category": {
- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}, - "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}, - "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}
], - "current_playable": {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}, - "looped": true,
- "recordings": [
- "string"
]
}
Update Livestream
Endpoint for updating a Livestream
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Livestream |
Request Body schema: application/json
name | string Name of the Livestream |
description | string Livestream Description |
remote | boolean When set to |
object (LiveVideoReplacement) Contains settings for the Video that can be use to replace the Livestream in the player without re-embedding. | |
start_time | string <date-time> Start date and time in ISO 8601 format for the Livestream, for example: Before the start time the Livestream will not be publicly visible when delivered with platform embeds. Instead a count down will be displayed in the player. The start time will also initiate recording if the Livestream has the recording option set to |
stop_time | string <date-time> Stop date and time in ISO 8601 format for the Livestream, for example: This doesn't have any effect for the playback in the player unless This also controls the stop time for recordings. If recording is on for the Livestream it will stop at the stop time. |
category_id | string Unique identifier for the Category the Livestream belongs to. |
scheduling_type | string Enum: "INSTANT" "SCHEDULED" "LINEAR" "SIMULIVE" The type of livestream. Default value is |
object (Record) Contains recording settings for the Livestream | |
Array of objects (CustomField) List of all custom fields defined in the Workspace | |
ad_keywords | string Used for replacing the |
no_ads | boolean When set to |
published | boolean If |
tags | string A comma separated list of tags. |
allow_playback_after_stop_time | boolean When set to |
object (Geoblocking) | |
image_input | string Url to an image file which will be downloaded and imported to the platform, to be used as poster image for the livestream. If the livestream is of The image will replace s previously specified poster image for the asset. |
object (StreamInfo) | |
object (IdRequestCategory) | |
object (IdRequestWorkspaceSimple) site/workspace-object that is the owner of the Livestream | |
object (IdRequestLiveSource) The Live Source that is used for this livestream. To remove a Live Source from the Livestream, set the id of the Live Source to empty string ( "" ).
Example of removing a Live Source:
| |
object (SimuliveRequest) Optional payload in case of simulated live | |
Array of objects (SimulivePlaylistItemRequest) | |
user_id | string Id of the Livestream creator |
Responses
Request samples
- Payload
{- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "image_input": "string",
- "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}, - "category": {
- "id": "string"
}, - "workspace": {
- "id": "string"
}, - "live_source": {
- "id": "string"
}, - "simulive_request": {
- "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD"
}
], - "looped": false
}, - "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD"
}
], - "user_id": "string"
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My first Livestream",
- "description": "Description of my first Livestream",
- "remote": true,
- "video": {
- "video_id": "replacing_video_id",
- "display_video": false
}, - "start_time": "2021-01-01T12:00:00Z",
- "stop_time": "2021-01-01T13:00:00Z",
- "category_id": "string",
- "scheduling_type": "INSTANT",
- "record": {
- "record": true,
- "auto_replace_with_recording": true
}, - "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "ad_keywords": "Special ads",
- "no_ads": true,
- "published": true,
- "tags": "foo,bar",
- "allow_playback_after_stop_time": true,
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "created_at": "2021-01-01T12:33:22Z",
- "updated_at": "2021-01-01T12:33:22Z",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "live_source": {
- "name": "string",
- "description": "Description of my first Live source",
- "type": "REMOTE",
- "workspaces": [
- {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}
], - "available_for_organization": true,
- "owner": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "string"
}, - "user_id": "string",
- "category": {
- "name": "My first Category",
- "description": "This is a Category description",
- "parent_id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbb",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd"
}, - "stream": {
- "quality_type": "RES1080PASS",
- "dvr": false,
- "enable_fallback_stream": false,
- "dvr_minutes": 120
}, - "simulive_playlist": [
- {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}
], - "current_playable": {
- "item_id": "string",
- "item_type": "VOD",
- "duration": 62,
- "name": "Video name",
- "description": "Video description",
- "start_time": 0
}, - "looped": true,
- "recordings": [
- "string"
]
}
Live Overlays are images displayed on top of a Livestream. You can have several Live Overlays active on the Livestream on the same time, but only one per template.
The template_id
and the livestream_id
creates a unique identifier a Live Overlay since you only can have one active Live Overlay per Template and Livestream.
Because of Template <-> Livestream relationship you don't need to store unique id:s for Overlays in you system, all you need to know is what template you're using.
Notice that the overlay will only be displayed between the start and stop time of the Livestream. If you are outside that window the overlay will not be displayed regardless of what value you set.
###Get Access ###
Contact support to get access to this feature. By default it will be turned off for all Workspaces and Organizations.
Templates
Flowplayer provides a set of template that can be used by anyone broadcasting a livestream. All templates have a set of replacement values that should be used to add your custom text to the overlay.
Below is a list of all existing templates and their replacement values:
ID | Description | Replacement Values | Default X Position | Default Y Position | Default Opacity |
---|---|---|---|---|---|
scoreboard | Our default scoreboard with black background and white text. Sample: |
|
5 | 5 | 100 |
A minimal sample request to use the scoreboard
template on a Livestream, {my-livestream-id}
using the API:
curl https://api.flowplayer.com/platform/v3/livestreams/{my-livestream-id}/overlays/scoreboard \
-H "x-flowplayer-api-key: {my-api-key}" \
-H "Content-Type: application/json" \
-X PUT -d '{ "fields" : { "HOME" : "NYR", "SCORE" : "1-1", "AWAY" : "SJS" } }'
Create or Update Live Overlay
Endpoint for creating or updating one single Live Overlay for a Livestream.
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Livestream on which the Live Overlay will be displayed |
templateId required | string Unique identifier for the Template that should be used. |
header Parameters
idempotency-key | string Idempotency key is a unique key set by the requesting service that identifies the request to the API. When using the Idempotency key you can prevent short lived Live Overlay being displayed twice. This since idempotency-key provided in the request is compared to the key in the most recently received request for the this Live Overlay and if they are identical the endpoint will not update the Live Overlay. If no Idempotency key is provided it will always update the Live Overlay. |
Request Body schema: application/json
duration_in_seconds | integer <int32> For how long the template will be visible in the Livestream starting from when the request is received on serverside. If not set, or set to -1, the overlay will be visible until the Livestream ends or the Live Overlay is deleted from the Live Overlay. Notice that the overlay will only be displayed between the start and stop time of the Livestream. If you are outside that window the overlay will not be displayed regardless of what value you set. |
position_x | integer <int32> The overlays If not specified it will use the default value for the template. |
position_y | integer <int32> The overlays If not specified it will use the default value for the template. |
object Should contain all need replacement fields and their values for the selected template. Each |
Responses
Request samples
- Payload
{- "duration_in_seconds": 0,
- "position_x": 0,
- "position_y": 0,
- "fields": "\"score\":\"1-1\""
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "idempotency_key": "string",
- "template_id": "string",
- "fields": {
- "property1": { },
- "property2": { }
}, - "visible_from": "2020-03-20T12:00:00+0100",
- "visible_until": "2020-03-20T12:00:00+0100",
- "visible_from_timestamp": 1584702000000,
- "visible_until_timestamp": 1584702000000,
- "updated": "2020-03-20T12:00:00+0100",
- "created": "2020-03-20T12:00:00+0100",
- "updated_timestamp": 0,
- "created_timestamp": 0,
- "position_x": 0,
- "position_y": 0
}
Delete Live Overlay
Endpoint for deleting a Live Overlay
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Live Overlay |
templateId required | string |
Responses
Response samples
- 401
- 403
- 404
- 422
- 429
{- "message": "string"
}
With this API you can easily create, update, fetch, delete and list videos on a workspace or category. The API supports both remote and platform streamed videos.
Creating videos
To create a new video, an input file must be provided to the platform in some way. The Create Video
API requires the source file to be downloadable by http(s) request. If you, need to upload the input file from a local computer we recommend to use the Signed Url approach.
List Video
Endpoint for listing a Video
Authorizations:
query Parameters
page | integer <int32> Default: 0 Page number | ||||||||||||||
page_size | integer <int32> Default: 20 Page size | ||||||||||||||
q | string Example: q=foo:name,custom_fields Search multiple text fields in a search that is case insensitive and does not require full matches. It searches Some examples:
| ||||||||||||||
sort_by | string Default: "name" Enum: "created_at" "name" "published_at" "duration" | ||||||||||||||
sort_order | any Default: "DESC" Enum: "DESC" "ASC" Example: sort_order=ASC The sort order of the response | ||||||||||||||
created_at | string Example: created_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
updated_at | string Example: updated_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
published_at | string Example: published_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
remote | boolean Filter | ||||||||||||||
categories | string Returns assets that have one of the specified Categories. Input should be a comma separated string with Category ids. You can specify up to four Categories in a single query. |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "total_count": 20,
- "total_count_in_search": 20,
- "page": 0,
- "page_size": 20,
- "total_pages": 20,
- "assets": [
- {
- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
]
}
Create Video
Endpoint for creating one single Video. You only need to provide a url to the video file you want to publish as input
and the platform will then download it from your server and make it available through platform.
The example below shows the easiest way to upload a video, you just need the api-key and an downloadable input-url:
curl https://api.flowplayer.com/platform/v3/videos \
-H "x-flowplayer-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-X POST \
-d '{ "input" : "https://edge.flowplayer.org/functional.mp4"}'
To prepare the video for best possible result, please read our prepare Videos for upload document.
Authorizations:
Request Body schema: application/json
name | string The Video name, can be displayed in the player. If not specified, it will default to the input files name. |
description | string The Video description, can be displayed in the player. |
duration | integer <int64> |
unpublish | boolean Default: false If |
unpublish_date | string Date and time in ISO 8601 format when video no longer is available for publishing. After this date the video is not visible in the player if using ovp-plugin to request the video. |
published | boolean This field, together with |
publish_date | string Date and time in ISO 8601 format when video is available for publishing . Before this date the video is not visible in the player if using ovp-plugin to request the video. |
tags | string A comma separated list of tags. |
remote | boolean Default: false When set to |
Array of objects (CustomField) | |
object (IdNameResponseCategory) | |
category_id | string Default: "<The Workspace default Category>" The unique identifier for the Category that the Video belongs to. |
no_ads | boolean When set to |
ad_keywords | string Used for replacing the |
object (IdNameResponseWorkspaceSimple) | |
user_id | string Id for the creator of the Video |
object (Geoblocking) | |
input | string Url that the platform will download, encode and serve to the player. We accept HTTP, HTTPS and FTP addresses. If you want to host the file yourself you should specify the files in If it's not possible to give the platform direct download access to the source file, we recommend you to use the Signed Url approach instead. |
Array of objects (RemoteUrl) If the file should not be hosted and encoded by the platform you can create remote assets. In this array you can specify the video and image file to be registered in the platform, which will hosted on you own servers and delivered through your CDN. Cannot be used together with | |
image_input | string Url to an image file to be downloaded and served by the platform as poster image for the Video. If no image is specified, a poster image created during the encoding process and be set as default image for this Video. |
Responses
Request samples
- Payload
{- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
},
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
Get Video
Endpoint for fetching a Video
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Video |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
Update Video
Endpoint for updating a Video
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Video |
Request Body schema: application/json
name | string The Video name, can be displayed in the player. If not specified, it will default to the input files name. |
description | string The Video description, can be displayed in the player. |
duration | integer <int64> |
unpublish | boolean Default: false If |
unpublish_date | string Date and time in ISO 8601 format when video no longer is available for publishing. After this date the video is not visible in the player if using ovp-plugin to request the video. |
published | boolean This field, together with |
publish_date | string Date and time in ISO 8601 format when video is available for publishing . Before this date the video is not visible in the player if using ovp-plugin to request the video. |
tags | string A comma separated list of tags. |
remote | boolean Default: false When set to |
Array of objects (CustomField) | |
object (IdNameResponseCategory) | |
category_id | string Default: "<The Workspace default Category>" The unique identifier for the Category that the Video belongs to. |
no_ads | boolean When set to |
ad_keywords | string Used for replacing the |
object (IdNameResponseWorkspaceSimple) | |
user_id | string Id for the creator of the Video |
object (Geoblocking) | |
input | string Url that the platform will download, encode and serve to the player. We accept HTTP, HTTPS and FTP addresses. If you want to host the file yourself you should specify the files in If it's not possible to give the platform direct download access to the source file, we recommend you to use the Signed Url approach instead. |
Array of objects (RemoteUrl) If the file should not be hosted and encoded by the platform you can create remote assets. In this array you can specify the video and image file to be registered in the platform, which will hosted on you own servers and delivered through your CDN. Cannot be used together with | |
image_input | string Url to an image file to be downloaded and served by the platform as poster image for the Video. If no image is specified, a poster image created during the encoding process and be set as default image for this Video. |
Responses
Request samples
- Payload
{- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
},
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
Playlists allow you to group videos into a list that plays in sequence in the player.
Selecting Playlist type
There are two types of playlists, MANUAL
and AUTOMATIC
, and what type to choose depends on how you want to manage your playlist.
AUTOMATIC
playlists should be used if you want to filter its content through video metadata, e.g. tags or categories, and the sort order by popularity or publishing date.
If you instead want to control exactly which videos the playlist should contain and in what order they will be displayed, you can use the MANUAL
type.
List Playlist
Endpoint for listing a Playlist
Authorizations:
query Parameters
page | integer <int32> Default: 0 Page number | ||||||||||||||
page_size | integer <int32> Default: 20 Page size | ||||||||||||||
q | string Search multiple text fields. For Playlists it searches | ||||||||||||||
sort_by | string Default: "name" Enum: "created_at" "updated_at" "name" | ||||||||||||||
sort_order | any Default: "DESC" Enum: "DESC" "ASC" Example: sort_order=ASC The sort order of the response | ||||||||||||||
types | string | ||||||||||||||
created_at | string Example: created_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
| ||||||||||||||
updated_at | string Example: updated_at=2021-01-01,2021-02-01 Filter the response based on an assets timespan. The filter can be specified in following formats:
|
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "total_count": 20,
- "total_count_in_search": 20,
- "page": 0,
- "page_size": 20,
- "total_pages": 20,
- "assets": [
- {
- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "items": [
- {
- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
], - "created_at": "string",
- "updated_at": "string"
}
]
}
Create Playlist
Endpoint for creating a Playlist
Authorizations:
Request Body schema: application/json
name | string The Playlist name. |
description | string A description of the playlist |
object (PlaylistConfig) Contains the configuration for | |
type | string Enum: "MANUAL" "AUTOMATIC" "INTELLIGENT" "SIMUPLAYLIST" Contains Video items for |
object (WorkspaceSimple) Site/Workspace-object that is the owner of the Playlist | |
Array of objects (IdRequestPlaylist) Contains Video items for |
Responses
Request samples
- Payload
{- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "items": [
- {
- "id": "string"
}
]
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "items": [
- {
- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
], - "created_at": "string",
- "updated_at": "string"
}
Get Playlist
Endpoint for fetching a Playlist
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Playlist |
Responses
Response samples
- 200
- 401
- 403
- 404
- 422
- 429
{- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "items": [
- {
- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
], - "created_at": "string",
- "updated_at": "string"
}
Update Playlist
Endpoint for updating a Playlist
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Playlist |
Request Body schema: application/json
name | string The Playlist name. |
description | string A description of the playlist |
object (PlaylistConfig) Contains the configuration for | |
type | string Enum: "MANUAL" "AUTOMATIC" "INTELLIGENT" "SIMUPLAYLIST" Contains Video items for |
object (WorkspaceSimple) Site/Workspace-object that is the owner of the Playlist | |
Array of objects (IdRequestPlaylist) Contains Video items for |
Responses
Request samples
- Payload
{- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "items": [
- {
- "id": "string"
}
]
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "name": "My playlist",
- "description": "string",
- "config": {
- "include": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "exclude": {
- "tags": [
- "string"
], - "tag_mode": "ALL",
- "category_id": "string",
- "include_subcategories": true
}, - "limit": 0,
- "ordering": "NAME_A_Z"
}, - "type": "MANUAL",
- "workspace": {
- "id": "cb65a918-ad7d-406a-80d8-09c9c8d0dbbd",
- "name": "My Workspace"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "items": [
- {
- "name": "My video",
- "description": "string",
- "duration": 0,
- "unpublish": false,
- "unpublish_date": "2020-01-01T12:33:22+00:00",
- "published": true,
- "publish_date": "2020-01-01T12:33:22+00:00",
- "tags": "for,bar",
- "remote": false,
- "custom_fields": [
- {
- "key": "string",
- "value": "string"
}
], - "category": {
- "id": "string",
- "name": "string"
}, - "category_id": "<The Workspace default Category>",
- "no_ads": true,
- "ad_keywords": "special_ads",
- "workspace": {
- "id": "string",
- "name": "string"
}, - "user_id": "string",
- "geoblocking": {
- "locations": [
- "pr"
], - "type": "ALLOW"
}, - "id": "9aaaaa9a-1234-56bc-789d-8eeeeee765",
- "created_at": "2020-01-01T12:33:22+00:00",
- "updated_at": "2020-01-01T12:33:22+00:00",
- "state": "FINISHED",
- "encoding_progress": 0,
- "upload_progress": 0,
- "error_message": "string",
- "deactivated": false,
- "encodings": [
- {
- "audio_bitrate": 2300,
- "audio_channel": 2,
- "audio_codec": "aac",
- "audio_sample_rate": 44100,
- "bitrate": 1023,
- "created": "string",
- "format": "string",
- "height": 1080,
- "width": 1920,
- "size": 8325555,
- "video_format": "mp4",
- "video_codec": "h264"
}
], - "subtitles": [
- {
- "srclang": "en",
- "kind": "subtitles",
- "label": "English",
- "default_track": true,
- "in_hls": true,
- "published": true,
- "id": "string",
- "name": "string"
}
], - "drm": {
- "com.widevine.alpha": {
- "license_server": "string",
- "certificate": "string"
}, - "com.apple.fps.1_0": {
- "license_server": "string",
- "certificate": "string"
}, - "com.microsoft.playready": {
- "license_server": "string",
- "certificate": "string"
}
}, - "shallow_copy": true,
- "shallow_copy_source_id": "string",
- "multiple_audio_tracks": true,
- "audio_only": true,
- "upload_type": "WEB_BASED_UI",
- "version": 0,
- "thumbnails": {
- "src": "string"
}, - "chapters": [
- {
- "starts_at": 60,
- "title": "Title 1"
}
], - "animated_preview": "string",
- "animated_previews": [
- {
- "url": "string",
- "type": "string",
- "width": 0,
- "height": 0
}
]
}
], - "created_at": "string",
- "updated_at": "string"
}
Create Transcription
Automated transcription of the video input. Converts audio to text in minutes.
Note that transcription is only available to enterprise customers.
Authorizations:
path Parameters
id required | string Example: 51cd5c07-1583-4f5e-bd81-f1aa11510ea9 Unique identifier for the Transcription |
Request Body schema: application/json
language | string Language code the language that will be use in the transcription process. |
keywords | string Comma-separated list of words or sentences that can help the transcription service deliver a more accurate result. For example, "flowplayer.com" can be easily transcribed as "flowplayer dot com" and by adding "flowplayer.com" to the keywords, the result will be "flowplayer.com" instead of "flowplayer dot com". |
Responses
Request samples
- Payload
{- "language": "sv",
- "keywords": "flowplayer.com,Flowplayer"
}
Response samples
- 200
- 400
- 401
- 403
- 404
- 422
- 429
{- "status": "string",
- "language": "sv",
- "id": "string"
}