Overview
APIs
- Asset
- Livestream
- Generate
- Multistream target
- Session
- Access control
- Webhook
- Task
- Playback
- Transcode
- Viewership
Livestream
Create a livestream
The only parameter you are required to set is the name of your stream,
but we also highly recommend that you define transcoding profiles
parameter that suits your specific broadcasting configuration.
If you do not define transcoding rendition profiles when creating the
stream, a default set of profiles will be used. These profiles include
240p, 360p, 480p and 720p.
The playback policy is set to public by default for new streams. It can
also be added upon the creation of a new stream by adding
"playbackPolicy": {"type": "jwt"}
POST
/
stream
import { Livepeer } from "livepeer";
import { Profile, TranscodeProfileEncoder, TranscodeProfileProfile, Type } from "livepeer/models/components";
const livepeer = new Livepeer({
apiKey: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await livepeer.stream.create({
name: "test_stream",
pull: {
source: "https://myservice.com/live/stream.flv",
headers: {
"Authorization": "Bearer 123",
},
location: {
lat: 39.739,
lon: -104.988,
},
},
playbackPolicy: {
type: Type.Webhook,
webhookId: "1bde4o2i6xycudoy",
webhookContext: {
"streamerId": "my-custom-id",
},
refreshInterval: 600,
},
profiles: [
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
fps: 30,
fpsDen: 1,
quality: 23,
gop: "2",
profile: Profile.H264Baseline,
},
],
record: false,
recordingSpec: {
profiles: [
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
quality: 23,
fps: 30,
fpsDen: 1,
gop: "2",
profile: TranscodeProfileProfile.H264Baseline,
encoder: TranscodeProfileEncoder.H264,
},
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
quality: 23,
fps: 30,
fpsDen: 1,
gop: "2",
profile: TranscodeProfileProfile.H264Baseline,
encoder: TranscodeProfileEncoder.H264,
},
],
},
multistream: {
targets: [
{
profile: "720p0",
videoOnly: false,
id: "PUSH123",
spec: {
name: "My target",
url: "rtmps://live.my-service.tv/channel/secretKey",
},
},
],
},
});
// Handle the result
console.log(result);
}
run();
{
"id": "de7818e7-610a-4057-8f6f-b785dc1e6f88",
"name": "test_stream",
"kind": "stream",
"creatorId": {
"type": "unverified",
"value": "user123"
},
"userTags": {},
"lastSeen": 1587667174725,
"sourceSegments": 1,
"transcodedSegments": 2,
"sourceSegmentsDuration": 1,
"transcodedSegmentsDuration": 2,
"sourceBytes": 1,
"transcodedBytes": 2,
"ingestRate": 1,
"outgoingRate": 2,
"isActive": true,
"isHealthy": null,
"issues": null,
"createdByTokenName": "abc-123-xyz-456",
"createdAt": 1587667174725,
"parentId": "de7818e7-610a-4057-8f6f-b785dc1e6f88",
"streamKey": "hgebdhhigq",
"pull": {
"source": "https://myservice.com/live/stream.flv",
"headers": {
"Authorization": "Bearer 123"
},
"isMobile": 0,
"location": {
"lat": 39.739,
"lon": -104.988
}
},
"playbackId": "eaw4nk06ts2d0mzb",
"playbackPolicy": {
"type": "webhook",
"webhookId": "1bde4o2i6xycudoy",
"webhookContext": {
"streamerId": "my-custom-id"
},
"refreshInterval": 600,
"allowedOrigins": [
"<string>"
]
},
"profiles": [
{
"name": "240p0",
"fps": 0,
"bitrate": 250000,
"width": 426,
"height": 240
},
{
"name": "360p0",
"fps": 0,
"bitrate": 800000,
"width": 640,
"height": 360
},
{
"name": "480p0",
"fps": 0,
"bitrate": 1600000,
"width": 854,
"height": 480
},
{
"name": "720p0",
"fps": 0,
"bitrate": 3000000,
"width": 1280,
"height": 720
}
],
"projectId": "aac12556-4d65-4d34-9fb6-d1f0985eb0a9",
"record": false,
"recordingSpec": {
"profiles": [
{
"width": 1280,
"name": "720p",
"height": 720,
"bitrate": 3000000,
"quality": 23,
"fps": 30,
"fpsDen": 1,
"gop": 2,
"profile": "H264Baseline",
"encoder": "H.264"
}
]
},
"multistream": {
"targets": [
{
"id": "PUSH123",
"profile": "720p"
}
]
},
"suspended": true,
"lastTerminatedAt": 1713281212993,
"userId": "we7818e7-610a-4057-8f6f-b785dc1e6f88",
"renditions": {}
}
Authorizations
Bearer authentication header of the form Bearer <token>
, where <token>
is your auth token.
Body
application/json
Response
201
application/json
Success
The response is of type object
.
Was this page helpful?
import { Livepeer } from "livepeer";
import { Profile, TranscodeProfileEncoder, TranscodeProfileProfile, Type } from "livepeer/models/components";
const livepeer = new Livepeer({
apiKey: "<YOUR_BEARER_TOKEN_HERE>",
});
async function run() {
const result = await livepeer.stream.create({
name: "test_stream",
pull: {
source: "https://myservice.com/live/stream.flv",
headers: {
"Authorization": "Bearer 123",
},
location: {
lat: 39.739,
lon: -104.988,
},
},
playbackPolicy: {
type: Type.Webhook,
webhookId: "1bde4o2i6xycudoy",
webhookContext: {
"streamerId": "my-custom-id",
},
refreshInterval: 600,
},
profiles: [
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
fps: 30,
fpsDen: 1,
quality: 23,
gop: "2",
profile: Profile.H264Baseline,
},
],
record: false,
recordingSpec: {
profiles: [
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
quality: 23,
fps: 30,
fpsDen: 1,
gop: "2",
profile: TranscodeProfileProfile.H264Baseline,
encoder: TranscodeProfileEncoder.H264,
},
{
width: 1280,
name: "720p",
height: 720,
bitrate: 3000000,
quality: 23,
fps: 30,
fpsDen: 1,
gop: "2",
profile: TranscodeProfileProfile.H264Baseline,
encoder: TranscodeProfileEncoder.H264,
},
],
},
multistream: {
targets: [
{
profile: "720p0",
videoOnly: false,
id: "PUSH123",
spec: {
name: "My target",
url: "rtmps://live.my-service.tv/channel/secretKey",
},
},
],
},
});
// Handle the result
console.log(result);
}
run();
{
"id": "de7818e7-610a-4057-8f6f-b785dc1e6f88",
"name": "test_stream",
"kind": "stream",
"creatorId": {
"type": "unverified",
"value": "user123"
},
"userTags": {},
"lastSeen": 1587667174725,
"sourceSegments": 1,
"transcodedSegments": 2,
"sourceSegmentsDuration": 1,
"transcodedSegmentsDuration": 2,
"sourceBytes": 1,
"transcodedBytes": 2,
"ingestRate": 1,
"outgoingRate": 2,
"isActive": true,
"isHealthy": null,
"issues": null,
"createdByTokenName": "abc-123-xyz-456",
"createdAt": 1587667174725,
"parentId": "de7818e7-610a-4057-8f6f-b785dc1e6f88",
"streamKey": "hgebdhhigq",
"pull": {
"source": "https://myservice.com/live/stream.flv",
"headers": {
"Authorization": "Bearer 123"
},
"isMobile": 0,
"location": {
"lat": 39.739,
"lon": -104.988
}
},
"playbackId": "eaw4nk06ts2d0mzb",
"playbackPolicy": {
"type": "webhook",
"webhookId": "1bde4o2i6xycudoy",
"webhookContext": {
"streamerId": "my-custom-id"
},
"refreshInterval": 600,
"allowedOrigins": [
"<string>"
]
},
"profiles": [
{
"name": "240p0",
"fps": 0,
"bitrate": 250000,
"width": 426,
"height": 240
},
{
"name": "360p0",
"fps": 0,
"bitrate": 800000,
"width": 640,
"height": 360
},
{
"name": "480p0",
"fps": 0,
"bitrate": 1600000,
"width": 854,
"height": 480
},
{
"name": "720p0",
"fps": 0,
"bitrate": 3000000,
"width": 1280,
"height": 720
}
],
"projectId": "aac12556-4d65-4d34-9fb6-d1f0985eb0a9",
"record": false,
"recordingSpec": {
"profiles": [
{
"width": 1280,
"name": "720p",
"height": 720,
"bitrate": 3000000,
"quality": 23,
"fps": 30,
"fpsDen": 1,
"gop": 2,
"profile": "H264Baseline",
"encoder": "H.264"
}
]
},
"multistream": {
"targets": [
{
"id": "PUSH123",
"profile": "720p"
}
]
},
"suspended": true,
"lastTerminatedAt": 1713281212993,
"userId": "we7818e7-610a-4057-8f6f-b785dc1e6f88",
"renditions": {}
}
Assistant
Responses are generated using AI and may contain mistakes.