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.
Non-fatal warnings returned with the response.
Errors returned with the response.