Skip to content
Start here

Create a live input

client.stream.liveInputs.create(LiveInputCreateParams { account_id, defaultCreator, deleteRecordingAfterDays, 3 more } params, RequestOptionsoptions?): LiveInput { created, deleteRecordingAfterDays, enabled, 11 more }
POST/accounts/{account_id}/stream/live_inputs

Creates a live input, and returns credentials that you or your users can use to stream live video to Cloudflare Stream.

Security
API Token

The preferred authorization scheme for interacting with the Cloudflare API. Create a token.

Example:Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY
API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

Example:X-Auth-Email: user@example.com

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

Example:X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194
Accepted Permissions (at least one required)
Stream Write
ParametersExpand Collapse
params: LiveInputCreateParams { account_id, defaultCreator, deleteRecordingAfterDays, 3 more }
account_id: string

Path param: Identifier.

maxLength32
defaultCreator?: string

Body param: Sets the creator ID asssociated with this live input.

deleteRecordingAfterDays?: number

Body param: Indicates the number of days after which the live inputs recordings will be deleted. When a stream completes and the recording is ready, the value is used to calculate a scheduled deletion date for that recording. Omit the field to indicate no change, or include with a null value to remove an existing scheduled deletion.

minimum30
enabled?: boolean

Body param: Indicates whether the live input is enabled and can accept streams.

meta?: unknown

Body param: A user modifiable key-value store used to reference other systems of record for managing live inputs.

recording?: Recording

Body param: Records the input to a Cloudflare Stream video. Behavior depends on the mode. In most cases, the video will initially be viewable as a live video and transition to on-demand after a condition is satisfied.

allowedOrigins?: Array<string>

Lists the origins allowed to display videos created with this input. Enter allowed origin domains in an array and use * for wildcard subdomains. An empty array allows videos to be viewed on any origin.

hideLiveViewerCount?: boolean

Disables reporting the number of live viewers when this property is set to true.

mode?: "off" | "automatic"

Specifies the recording behavior for the live input. Set this value to off to prevent a recording. Set the value to automatic to begin a recording and transition to on-demand after Stream Live stops receiving input.

One of the following:
"off"
"automatic"
requireSignedURLs?: boolean

Indicates if a video using the live input has the requireSignedURLs property set. Also enforces access controls on any video recording of the livestream with the live input.

timeoutSeconds?: number

Determines the amount of time a live input configured in automatic mode should wait before a recording transitions from live to on-demand. 0 is recommended for most use cases and indicates the platform default should be used.

ReturnsExpand Collapse
LiveInput { created, deleteRecordingAfterDays, enabled, 11 more }

Details about a live input.

created?: string

The date and time the live input was created.

formatdate-time
deleteRecordingAfterDays?: number

Indicates the number of days after which the live inputs recordings will be deleted. When a stream completes and the recording is ready, the value is used to calculate a scheduled deletion date for that recording. Omit the field to indicate no change, or include with a null value to remove an existing scheduled deletion.

minimum30
enabled?: boolean

Indicates whether the live input is enabled and can accept streams.

meta?: unknown

A user modifiable key-value store used to reference other systems of record for managing live inputs.

modified?: string

The date and time the live input was last modified.

formatdate-time
recording?: Recording { allowedOrigins, hideLiveViewerCount, mode, 2 more }

Records the input to a Cloudflare Stream video. Behavior depends on the mode. In most cases, the video will initially be viewable as a live video and transition to on-demand after a condition is satisfied.

allowedOrigins?: Array<string>

Lists the origins allowed to display videos created with this input. Enter allowed origin domains in an array and use * for wildcard subdomains. An empty array allows videos to be viewed on any origin.

hideLiveViewerCount?: boolean

Disables reporting the number of live viewers when this property is set to true.

mode?: "off" | "automatic"

Specifies the recording behavior for the live input. Set this value to off to prevent a recording. Set the value to automatic to begin a recording and transition to on-demand after Stream Live stops receiving input.

One of the following:
"off"
"automatic"
requireSignedURLs?: boolean

Indicates if a video using the live input has the requireSignedURLs property set. Also enforces access controls on any video recording of the livestream with the live input.

timeoutSeconds?: number

Determines the amount of time a live input configured in automatic mode should wait before a recording transitions from live to on-demand. 0 is recommended for most use cases and indicates the platform default should be used.

rtmps?: Rtmps { streamKey, url }

Details for streaming to an live input using RTMPS.

streamKey?: string

The secret key to use when streaming via RTMPS to a live input.

url?: string

The RTMPS URL you provide to the broadcaster, which they stream live video to.

rtmpsPlayback?: RtmpsPlayback { streamKey, url }

Details for playback from an live input using RTMPS.

streamKey?: string

The secret key to use for playback via RTMPS.

url?: string

The URL used to play live video over RTMPS.

srt?: Srt { passphrase, streamId, url }

Details for streaming to a live input using SRT.

passphrase?: string

The secret key to use when streaming via SRT to a live input.

streamId?: string

The identifier of the live input to use when streaming via SRT.

url?: string

The SRT URL you provide to the broadcaster, which they stream live video to.

srtPlayback?: SrtPlayback { passphrase, streamId, url }

Details for playback from an live input using SRT.

passphrase?: string

The secret key to use for playback via SRT.

streamId?: string

The identifier of the live input to use for playback via SRT.

url?: string

The URL used to play live video over SRT.

status?: "connected" | "reconnected" | "reconnecting" | 5 more | null

The connection status of a live input.

One of the following:
"connected"
"reconnected"
"reconnecting"
"client_disconnect"
"ttl_exceeded"
"failed_to_connect"
"failed_to_reconnect"
"new_configuration_accepted"
uid?: string

A unique identifier for a live input.

maxLength32
webRTC?: WebRtc { url }

Details for streaming to a live input using WebRTC.

url?: string

The WebRTC URL you provide to the broadcaster, which they stream live video to.

webRTCPlayback?: WebRtcPlayback { url }

Details for playback from a live input using WebRTC.

url?: string

The URL used to play live video over WebRTC.

Create a live input

import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const liveInput = await client.stream.liveInputs.create({
  account_id: '023e105f4ecef8ad9ca31a8372d0c353',
});

console.log(liveInput.uid);
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "created": "2014-01-02T02:20:00Z",
    "deleteRecordingAfterDays": 45,
    "enabled": true,
    "meta": {
      "name": "test stream 1"
    },
    "modified": "2014-01-02T02:20:00Z",
    "recording": {
      "allowedOrigins": [
        "example.com"
      ],
      "hideLiveViewerCount": false,
      "mode": "off",
      "requireSignedURLs": false,
      "timeoutSeconds": 0
    },
    "rtmps": {
      "streamKey": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "rtmpsPlayback": {
      "streamKey": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "srt": {
      "passphrase": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "streamId": "f256e6ea9341d51eea64c9454659e576",
      "url": "srt://live.cloudflare.com:778"
    },
    "srtPlayback": {
      "passphrase": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "streamId": "f256e6ea9341d51eea64c9454659e576",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "status": "connected",
    "uid": "66be4bf738797e01e1fca35a7bdecdcd",
    "webRTC": {
      "url": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/b236bde30eb07b9d01318940e5fc3edake34a3efb3896e18f2dc277ce6cc993ad/webRTC/publish"
    },
    "webRTCPlayback": {
      "url": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/b236bde30eb07b9d01318940e5fc3edake34a3efb3896e18f2dc277ce6cc993ad/webRTC/play"
    }
  }
}
Returns Examples
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "success": true,
  "result": {
    "created": "2014-01-02T02:20:00Z",
    "deleteRecordingAfterDays": 45,
    "enabled": true,
    "meta": {
      "name": "test stream 1"
    },
    "modified": "2014-01-02T02:20:00Z",
    "recording": {
      "allowedOrigins": [
        "example.com"
      ],
      "hideLiveViewerCount": false,
      "mode": "off",
      "requireSignedURLs": false,
      "timeoutSeconds": 0
    },
    "rtmps": {
      "streamKey": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "rtmpsPlayback": {
      "streamKey": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "srt": {
      "passphrase": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "streamId": "f256e6ea9341d51eea64c9454659e576",
      "url": "srt://live.cloudflare.com:778"
    },
    "srtPlayback": {
      "passphrase": "2fb3cb9f17e68a2568d6ebed8d5505eak3ceaf8c9b1f395e1b76b79332497cada",
      "streamId": "f256e6ea9341d51eea64c9454659e576",
      "url": "rtmps://live.cloudflare.com:443/live/"
    },
    "status": "connected",
    "uid": "66be4bf738797e01e1fca35a7bdecdcd",
    "webRTC": {
      "url": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/b236bde30eb07b9d01318940e5fc3edake34a3efb3896e18f2dc277ce6cc993ad/webRTC/publish"
    },
    "webRTCPlayback": {
      "url": "https://customer-m033z5x00ks6nunl.cloudflarestream.com/b236bde30eb07b9d01318940e5fc3edake34a3efb3896e18f2dc277ce6cc993ad/webRTC/play"
    }
  }
}