Livepush Developers

Players

Create a player

POST https://octopus.livepush.io/players

Base URL https://octopus.livepush.io — Core Streams & Media APIs

Creates a standalone player. Unlike a stream embed, a player can carry several sources (streams, videos or URLs) behind one embed.

Requires a token with CanCreatePlayers.

Authorization

Send a valid access token in the Authorization header.

  • bearerAuth — Bearer token (JWT)
headers.txt
Authorization: Bearer YOUR_API_TOKEN

Try it

POST https://octopus.livepush.io/players — This call changes live data on your account.

Request body

application/json required

  • name string required
Example request body response.json
{
  "name": "Lobby screen"
}

Code samples

request.sh
curl -X POST 'https://octopus.livepush.io/players' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "Lobby screen"
  }'
const response = await fetch('https://octopus.livepush.io/players', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    "name": "Lobby screen"
  }),
});

if (!response.ok) {
  throw new Error(`Livepush API error ${response.status}`);
}

const data = await response.json();
import requests

headers = {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json',
}

payload = {
    "name": "Lobby screen"
}

response = requests.post('https://octopus.livepush.io/players', headers=headers, json=payload, timeout=30)
response.raise_for_status()
data = response.json()

Responses

Player created.

application/json

  • id string
  • embedId string
    Identifier used in the embed URL.
  • user string
    Owning account.
  • name string
  • config PlayerConfig
    Embed configuration for a standalone player — the player equivalent of the /streams/{stream_id}/embed/* endpoints. Note that PUT /players/{player_id}/config replaces this object wholesale rather than merging, so always send the complete configuration. Unknown fields are stripped. The player surface is narrower than the stream embed surface: there is no equivalent of chat_config, plugins, mode/cdn, mode/external or preferred_destination.
    • embedTitle string
    • embedColor string
    • embedAutoplay boolean
    • embedAbr boolean
      Adaptive bitrate playback.
    • embedLiveRewind boolean
    • embedPremier boolean
    • embedPremierText string
    • embedOfflineText string
    • embedOfflineTextAlt string
    • embedPassword string
      write-only
    • embedDomains string[]
      Allowed hosting domains. Empty allows every domain.
    • embedGEOList string[]
      Allowed country codes. Empty allows every country.
    • embedDisableViewersCount boolean
    • embedDisablePauseControl boolean
    • embedCoverId string
    • embedCoverFileName string
    • embedChannelIconURL string
    • embedChannelIconSize string
    • embedChannelIconPosition string
    • embedChannelIconLayout string
    • embedChannelIconAnchorURL string
    • maxConcurrentViewers integer
      Hard cap on simultaneous viewers.
  • sources PlayerSource[]
    • type string
      Which of the three source fields is in use.
      streamvideourl
    • stream string
      Stream ID, when type is stream.
    • video string
      Video ID, when type is video.
    • url string
      Playable URL, when type is url.
    • isDisabled boolean
  • isLocked boolean
  • sessionLockedTill string<date-time>
  • isDisabled boolean
  • unsafeContent boolean
  • createdAt string<date-time>
  • updatedAt string<date-time>
Example 200 response response.json
{
  "id": "pl_xxxxxxxxxxxx",
  "embedId": "em_xxxxxxxxxxxx",
  "user": "string",
  "name": "Lobby screen",
  "config": {
    "embedTitle": "Lobby screen",
    "embedColor": "#66d72f",
    "embedAutoplay": true,
    "embedAbr": false,
    "embedLiveRewind": false,
    "embedPremier": false,
    "embedPremierText": "string",
    "embedOfflineText": "string",
    "embedOfflineTextAlt": "string",
    "embedPassword": "string",
    "embedDomains": [
      "string"
    ],
    "embedGEOList": [
      "string"
    ],
    "embedDisableViewersCount": false,
    "embedDisablePauseControl": false,
    "embedCoverId": "string",
    "embedCoverFileName": "string",
    "embedChannelIconURL": "string",
    "embedChannelIconSize": "string",
    "embedChannelIconPosition": "string",
    "embedChannelIconLayout": "string",
    "embedChannelIconAnchorURL": "string",
    "maxConcurrentViewers": 0
  },
  "sources": [
    {
      "type": "stream",
      "stream": "st_xxxxxxxxxxxxx",
      "video": "vd_xxxxxxxxxxxx",
      "url": "string",
      "isDisabled": false
    }
  ],
  "isLocked": false,
  "sessionLockedTill": "2026-01-31T09:00:00.000Z",
  "isDisabled": false,
  "unsafeContent": false,
  "createdAt": "2026-01-31T09:00:00.000Z",
  "updatedAt": "2026-01-31T09:00:00.000Z"
}

No response body.