Create Multistream Stream
Create new Restream (push or pull type)
curl -X POST "https://api.5centscdn.com/v2/streams/publish/new" \
-H "Content-Type: application/json" \
-H "X-API-Key: YOUR_API_KEY" \
-d '{
"_METHOD": "PUT",
"name": "Testt/final",
"codec": "h264",
"type": "push",
"mode": "hls",
"server": "11,211",
"protocols": [
"HLS"
],
"urls": [
"rtmp://rtmp.5centscdn.com:1935/"
],
"audiofix": "N",
"domainlock[enabled]": "Y",
"domainlock[policy]": "Y",
"domainlock[list]": "example.com,docs.example.com",
"domainlock[ips]": "",
"domainlock[noreferer]": "N",
"geoblock[enabled]": "Y",
"geoblock[policy]": "Y",
"geoblock[list]": [],
"geoblock[ips]": "",
"ipaccess[enabled]": "Y",
"ipaccess[policy]": "N",
"ipaccess[list]": "",
"ipaccess[ips]": "",
"ndvr[enabled]": "Y",
"ndvr[retention]": 5,
"record[server]": 1,
"record[enabled]": "Y",
"record[retention]": 3,
"securetoken[enabled]": "Y",
"securetoken[policy]": "D",
"securetoken[list]": "32862cdb6276e19a",
"securetoken[ips]": "",
"securetoken[keyip]": "N",
"securetoken[session]": "0",
"securetoken[timeout]": 3600,
"useragent[enabled]": "Y",
"useragent[policy]": "Y",
"useragent[list]": "",
"useragent[ips]": "",
"useragent[casesensitive]": "N"
}'
import requests
import json
url = "https://api.5centscdn.com/v2/streams/publish/new"
headers = {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
}
data = {
"_METHOD": "PUT",
"name": "Testt/final",
"codec": "h264",
"type": "push",
"mode": "hls",
"server": "11,211",
"protocols": [
"HLS"
],
"urls": [
"rtmp://rtmp.5centscdn.com:1935/"
],
"audiofix": "N",
"domainlock[enabled]": "Y",
"domainlock[policy]": "Y",
"domainlock[list]": "example.com,docs.example.com",
"domainlock[ips]": "",
"domainlock[noreferer]": "N",
"geoblock[enabled]": "Y",
"geoblock[policy]": "Y",
"geoblock[list]": [],
"geoblock[ips]": "",
"ipaccess[enabled]": "Y",
"ipaccess[policy]": "N",
"ipaccess[list]": "",
"ipaccess[ips]": "",
"ndvr[enabled]": "Y",
"ndvr[retention]": 5,
"record[server]": 1,
"record[enabled]": "Y",
"record[retention]": 3,
"securetoken[enabled]": "Y",
"securetoken[policy]": "D",
"securetoken[list]": "32862cdb6276e19a",
"securetoken[ips]": "",
"securetoken[keyip]": "N",
"securetoken[session]": "0",
"securetoken[timeout]": 3600,
"useragent[enabled]": "Y",
"useragent[policy]": "Y",
"useragent[list]": "",
"useragent[ips]": "",
"useragent[casesensitive]": "N"
}
response = requests.post(url, headers=headers, json=data)
print(response.json())
const response = await fetch("https://api.5centscdn.com/v2/streams/publish/new", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-Key": "YOUR_API_KEY"
},
body: JSON.stringify({
"_METHOD": "PUT",
"name": "Testt/final",
"codec": "h264",
"type": "push",
"mode": "hls",
"server": "11,211",
"protocols": [
"HLS"
],
"urls": [
"rtmp://rtmp.5centscdn.com:1935/"
],
"audiofix": "N",
"domainlock[enabled]": "Y",
"domainlock[policy]": "Y",
"domainlock[list]": "example.com,docs.example.com",
"domainlock[ips]": "",
"domainlock[noreferer]": "N",
"geoblock[enabled]": "Y",
"geoblock[policy]": "Y",
"geoblock[list]": [],
"geoblock[ips]": "",
"ipaccess[enabled]": "Y",
"ipaccess[policy]": "N",
"ipaccess[list]": "",
"ipaccess[ips]": "",
"ndvr[enabled]": "Y",
"ndvr[retention]": 5,
"record[server]": 1,
"record[enabled]": "Y",
"record[retention]": 3,
"securetoken[enabled]": "Y",
"securetoken[policy]": "D",
"securetoken[list]": "32862cdb6276e19a",
"securetoken[ips]": "",
"securetoken[keyip]": "N",
"securetoken[session]": "0",
"securetoken[timeout]": 3600,
"useragent[enabled]": "Y",
"useragent[policy]": "Y",
"useragent[list]": "",
"useragent[ips]": "",
"useragent[casesensitive]": "N"
})
});
const data = await response.json();
console.log(data);
package main
import (
"fmt"
"net/http"
"bytes"
"encoding/json"
)
func main() {
data := []byte(`{
"_METHOD": "PUT",
"name": "Testt/final",
"codec": "h264",
"type": "push",
"mode": "hls",
"server": "11,211",
"protocols": [
"HLS"
],
"urls": [
"rtmp://rtmp.5centscdn.com:1935/"
],
"audiofix": "N",
"domainlock[enabled]": "Y",
"domainlock[policy]": "Y",
"domainlock[list]": "example.com,docs.example.com",
"domainlock[ips]": "",
"domainlock[noreferer]": "N",
"geoblock[enabled]": "Y",
"geoblock[policy]": "Y",
"geoblock[list]": [],
"geoblock[ips]": "",
"ipaccess[enabled]": "Y",
"ipaccess[policy]": "N",
"ipaccess[list]": "",
"ipaccess[ips]": "",
"ndvr[enabled]": "Y",
"ndvr[retention]": 5,
"record[server]": 1,
"record[enabled]": "Y",
"record[retention]": 3,
"securetoken[enabled]": "Y",
"securetoken[policy]": "D",
"securetoken[list]": "32862cdb6276e19a",
"securetoken[ips]": "",
"securetoken[keyip]": "N",
"securetoken[session]": "0",
"securetoken[timeout]": 3600,
"useragent[enabled]": "Y",
"useragent[policy]": "Y",
"useragent[list]": "",
"useragent[ips]": "",
"useragent[casesensitive]": "N"
}`)
req, err := http.NewRequest("POST", "https://api.5centscdn.com/v2/streams/publish/new", bytes.NewBuffer(data))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
}
require 'net/http'
require 'json'
uri = URI('https://api.5centscdn.com/v2/streams/publish/new')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/json'
request['X-API-Key'] = 'YOUR_API_KEY'
request.body = '{
"_METHOD": "PUT",
"name": "Testt/final",
"codec": "h264",
"type": "push",
"mode": "hls",
"server": "11,211",
"protocols": [
"HLS"
],
"urls": [
"rtmp://rtmp.5centscdn.com:1935/"
],
"audiofix": "N",
"domainlock[enabled]": "Y",
"domainlock[policy]": "Y",
"domainlock[list]": "example.com,docs.example.com",
"domainlock[ips]": "",
"domainlock[noreferer]": "N",
"geoblock[enabled]": "Y",
"geoblock[policy]": "Y",
"geoblock[list]": [],
"geoblock[ips]": "",
"ipaccess[enabled]": "Y",
"ipaccess[policy]": "N",
"ipaccess[list]": "",
"ipaccess[ips]": "",
"ndvr[enabled]": "Y",
"ndvr[retention]": 5,
"record[server]": 1,
"record[enabled]": "Y",
"record[retention]": 3,
"securetoken[enabled]": "Y",
"securetoken[policy]": "D",
"securetoken[list]": "32862cdb6276e19a",
"securetoken[ips]": "",
"securetoken[keyip]": "N",
"securetoken[session]": "0",
"securetoken[timeout]": 3600,
"useragent[enabled]": "Y",
"useragent[policy]": "Y",
"useragent[list]": "",
"useragent[ips]": "",
"useragent[casesensitive]": "N"
}'
response = http.request(request)
puts response.body
{
"result": "success",
"message": "Stream Created",
"stream": {
"monitoring_id": null,
"type": "publish",
"id": 72440,
"serviceid": 103,
"name": "Testt/final",
"codec": "h264",
"ingests": [
[],
null
],
"protocols": [
[
"HLS"
],
[
"HLS"
]
],
"parentid": null,
"server": "11,211",
"backup": "",
"dedicatedLTC": "0",
"hasAdvancedFeatures": "0",
"monitoring_triggers": null,
"draft": "0",
"disabled": "0",
"created_at": "2026-05-06 06:18:55",
"updated_at": "2026-05-06 06:18:55",
"lastseen_at": false,
"deleted": null,
"ingestsLock": 0,
"protocolsLock": 1,
"status": "Deploying",
"has": {
"rtmp": 1,
"rtsp": 0,
"hls": 0,
"dash": 0,
"rtmpauth": false
},
"fms": {
"server": {
"country": "North America",
"meta": {
"fmsUrl": "rtmp://fms-01-01.5centscdn.com"
}
}
},
"parts": {
"pp": "Testt",
"sn": "final",
"full": "Testtfinal"
},
"restream": {},
"platformsCount": 0,
"ssl_enabled": true,
"hash": "7a68164e7531e26f728a406b45dbbfc6.sdp",
"publish": {
"id": 72440,
"type": "push",
"mode": "hls",
"urls": null,
"audiofix": "N"
},
"ipaccess": {
"enabled": "Y",
"policy": "N",
"list": "",
"ips": "",
"active": "N"
},
"useragent": {
"enabled": "Y",
"policy": "Y",
"list": "",
"ips": "",
"casesensitive": "N",
"active": "N",
"listArr": [
""
]
},
"rtmpauth": {
"password": "",
"active": "N"
},
"transcode": {
"ltc": 0,
"type": "mixed",
"enabled": false,
"isEditable": true
},
"platforms": [],
"messages": {
"warning": [
"No Platforms Created. <a id="addplatform2" style="cursor: pointer;">Click here to Add Platform</a>"
]
},
"adInsertion": null
},
"warnings": null,
"errors": null
}
/streams/publish/new
Target server for requests. Edit to use your own host.
API key (sent in header)
The media type of the request body
HTTP method override for this request. This endpoint accepts POST, but set this to PUT to perform an update operation.
Friendly name for this resource.
Video codec for the stream. Use h264 or h265.
Type identifier for this resource.
Operation mode for this request. Common values: save, delete, clear, replace.
Server ID(s) for the stream. Use comma-separated values for multiple servers.
List of output protocols. Values include HLS, RTMP, DASH, RTSP.
Source pull URL(s) for restream or pull-type streams.
Applicable for pull type streams only. Fixes audio sync issues in the pulled source. Y means enabled, N means disabled.
Enable or disable domain lock. Y means enabled, N means disabled.
Domain lock policy. Y means allow listed domains only.
Comma-separated list of allowed domains.
Comma-separated IPs for domain lock.
Whether to block requests with no referrer header. Y means blocked.
Enable or disable geo block. Y means enabled, N means disabled.
Geo block policy. Y means block listed countries.
List of ISO country codes to block or allow.
Comma-separated IPs for geo block.
Enable or disable IP access control. Y means enabled, N means disabled.
IP access policy. Y means allow, N means deny.
Comma-separated list of IPs for access control.
Additional IP entries for access control.
Enable or disable network DVR. Y means enabled, N means disabled.
DVR retention period in hours.
Recording server ID to use.
Enable or disable recording. Y means enabled, N means disabled.
Recording retention period in days.
Enable or disable secure token. Y means enabled, N means disabled.
Secure token policy. D means dynamic, F means fixed.
Secure token key identifier.
Comma-separated IPs for secure token.
Whether to bind the token to the requester IP. Y means enabled, N means disabled.
Session limit. 0 means unlimited.
Token validity duration in seconds.
Enable or disable user agent filter. Y means enabled, N means disabled.
User agent policy. Y means allow listed agents only.
Comma-separated list of allowed user agents.
IPs for user agent filter.
Whether user agent matching is case-sensitive. Y means enabled, N means disabled.
Request Preview
Response
Response will appear here after sending the request
Authentication
API Key for authentication. Provide your API key in the header.
Body
HTTP method override for this request. This endpoint accepts POST, but set this to PUT to perform an update operation.
PUTOperation mode for this request. Common values: save, delete, clear, replace.
hlsServer ID(s) for the stream. Use comma-separated values for multiple servers.
11,211Source pull URL(s) for restream or pull-type streams.
["rtmp://rtmp.5centscdn.com:1935/"]Applicable for pull type streams only. Fixes audio sync issues in the pulled source. Y means enabled, N means disabled.
NWhether to block requests with no referrer header. Y means blocked.
NEnable or disable IP access control. Y means enabled, N means disabled.
YEnable or disable secure token. Y means enabled, N means disabled.
YWhether to bind the token to the requester IP. Y means enabled, N means disabled.
NEnable or disable user agent filter. Y means enabled, N means disabled.
YWhether user agent matching is case-sensitive. Y means enabled, N means disabled.
NResponses
Status of the API response.
Human-readable message describing the result.
Stream object containing configuration and status details.
Unique monitoring identifier for the stream.
Type identifier for this stream or object.
Unique numeric identifier.
Unique identifier of the service this stream belongs to.
Name of the stream.
Video codec used for the stream.
List of active ingest connection details for each server.
Supported streaming protocols for each server.
Identifier of the parent stream, if this is a child stream.
Server ID or identifier assigned to the stream.
Backup server ID for failover.
Whether a dedicated live transcoding server is allocated for this stream.
Whether advanced features are enabled for this stream.
Monitoring alert trigger configuration for the stream.
Draft status flag. 0 means published; 1 means unpublished draft.
Disabled flag. 0 means active; 1 means disabled.
Timestamp when the stream was created.
Timestamp when the stream was last updated.
Timestamp of last seen activity, or false if never seen.
Deletion timestamp, or null if the stream is not deleted.
Whether the ingest endpoint list is locked from editing.
Whether the supported protocol list is locked from editing.
Current deployment or operational status of the stream.
Flags indicating which streaming protocols are active.
Whether RTMP streaming is enabled. 1 = enabled, 0 = disabled.
Whether RTSP streaming is enabled. 1 = enabled, 0 = disabled.
Whether HLS streaming is enabled. 1 = enabled, 0 = disabled.
Whether DASH streaming is enabled. 1 = enabled, 0 = disabled.
Whether RTMP publish authentication is required.
Flash Media Server ingest configuration for the stream.
Server ID or identifier assigned to the stream.
Geographic region of the ingest server.
Metadata object for the server.
RTMP ingest URL for the assigned FMS server.
Stream name components.
Stream name prefix (part 1, before the slash).
Stream name suffix (part 2, after the slash).
Combined full stream name without the slash separator.
Restream platform configuration object.
Number of external restreaming platforms configured.
Whether HTTPS/SSL is enabled for playback.
Stream hash identifier in SDP-format MD5 hash.
Unique numeric identifier.
Publish type. push for ingest-based, restream for pull-based.
Delivery mode. hls for push, ffmpeg for pull/restream.
Source pull URLs. Present for restream type, null for push.
IP address access control configuration.
Enable or disable this feature.
Policy mode controlling allow/deny behavior.
Comma-separated list of allowed or blocked values.
IP addresses associated with the access control policy.
Whether this policy is currently enforced.
User-agent based access control configuration.
Enable or disable this feature.
Policy mode controlling allow/deny behavior.
Comma-separated list of allowed or blocked values.
IP addresses associated with the access control policy.
Whether user-agent pattern matching is case-sensitive.
Whether this policy is currently enforced.
User-agent filter list as a parsed array.
Whether RTMP publish authentication is required.
Password for RTMP publish authentication.
Whether this policy is currently enforced.
Live transcoding configuration for the stream.
Live transcoding server ID assigned to this stream.
Type identifier for this stream or object.
Enable or disable this feature.
Whether the transcoding configuration can be edited.
List of configured external restreaming platform entries.
Informational messages related to the stream state.
Ad insertion configuration for the stream, or null if not configured.
Non-fatal warnings returned with the response.
Errors returned with the response.