Storm docs logo
Search the docs.../
Explore Storm Products

Application Create

Creates a new streaming application.

Request

PropertyValue
MethodPOST
URL/api/applications
Content-Typeapplication/json
AuthenticationBearer Token
Request
Code iconbash
curl -X POST "{BASE_URL}/api/applications" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"key": "value"}'

Request Body

ParameterTypeRequiredDescription
data.attributes.namestringYesApplication name (unique)
data.attributes.type"mono" | "origin" | "transcode" | "edge"YesApplication type

Additional settings are passed as nested objects within data.attributes. Required settings depend on the application type:

SettingDescriptionMONOORIGINTRANSCODEEDGE
generalSettingsGeneral application settings
ingestSettingsStream ingest configuration--
playbackSettingsPlayback and viewer settings--
streamSecuritySettingsToken protection and domain access--
liveTranscodingSettingsLive transcoding presets-
dvrSettingsDVR/time-shift settings--
recordingSettingsRecording configuration-
streamKeyAliasSettingsStream key alias discovery--
streamingClusterSettingsCluster connection configuration-

For detailed field descriptions of each settings section, see the corresponding update endpoint documentation.

Request Body (MONO)
Code iconjson
{
  "data": {
    "attributes": {
      "name": "live",
      "type": "mono",
      "generalSettings": {
        "description": "Main live streaming application",
        "broadcastLimit": 50,
        "statInterval": 2,
        "autoThumbnail": {
          "enabled": true,
          "interval": 10,
          "thumbWidth": 100,
          "thumbHeight": 100
        }
      },
      "ingestSettings": {
        "allowStreamIngest": true,
        "autoStreamPublish": true,
        "allowStreamOverwrite": false,
        "authorizationEnabled": false
      },
      "playbackSettings": {
        "totalViewerLimit": null,
        "streamViewerLimit": 100,
        "frameBufferSize": 5,
        "harnessTypes": ["storm-hls", "storm-mse", "rtmp"]
      },
      "streamSecuritySettings": {
        "tokenProtectionEnabled": true,
        "hashAlgorithm": "sha256",
        "tokenLifespan": 3600,
        "secret": "my-secret-key",
        "domainAccessRights": [
          { "type": "allow", "domain": "*" }
        ]
      },
      "liveTranscodingSettings": {
        "enabled": true,
        "enabledPresets": ["360p", "720p"]
      },
      "dvrSettings": {
        "enabled": false,
        "cacheSize": 100
      },
      "recordingSettings": {
        "enabled": false
      },
      "streamKeyAliasSettings": {
        "enabled": true,
        "autoDiscovery": {
          "enabled": true,
          "requestURL": "https://api.example.com/alias/${streamKey}",
          "xApiKey": "bd34ddawe34v51rxw6tbn",
          "expireTime": 3600
        }
      }
    }
  }
}
Request Body (EDGE)
Code iconjson
{
  "data": {
    "attributes": {
      "name": "edge",
      "type": "edge",
      "generalSettings": {
        "description": "Edge server",
        "broadcastLimit": 50,
        "statInterval": 2
      },
      "streamingClusterSettings": {
        "nodeHostname": "edge.example.com",
        "nodePort": 1935,
        "nodeIsSSL": false,
        "copyOnPublish": false,
        "clusterManagers": [
          {
            "hostname": "supervisor.example.com",
            "port": 8080,
            "isSSL": false,
            "priority": 1,
            "secret": "cluster-secret"
          }
        ]
      },
      "playbackSettings": {
        "totalViewerLimit": null,
        "streamViewerLimit": 100,
        "frameBufferSize": 5,
        "harnessTypes": ["storm-hls", "storm-mse", "rtmp"]
      },
      "streamSecuritySettings": {
        "tokenProtectionEnabled": false,
        "domainAccessRights": [
          { "type": "allow", "domain": "*" }
        ]
      },
      "dvrSettings": {
        "enabled": false,
        "cacheSize": 100
      },
      "recordingSettings": {
        "enabled": false
      },
      "streamKeyAliasSettings": {
        "enabled": false
      }
    }
  }
}

Response Body

ParameterTypeDescription
data.namestringApplication name
data.type"MONO" | "ORIGIN" | "TRANSCODE" | "EDGE"Application type
messagestringResponse status message

Response includes all settings with editable and value properties. See the Application Settings endpoint for the full response structure.

Metadata

ParameterTypeDescription
meta.executionTimeintegerRequest processing time in milliseconds
meta.generatedAtintegerResponse generation timestamp (Unix timestamp in ms)
Successful Response (201)
Code iconjson
{
  "data": {
    "name": "mono",
    "type": "MONO",
    "generalSettings": {
      "attributes": {
        "description": { "editable": true, "value": "Main live streaming application" },
        "broadcastLimit": { "editable": true, "value": 50 },
        "statInterval": { "editable": true, "value": 2 },
        "autoThumbnail": {
          "enabled": { "editable": true, "value": true },
          "interval": { "editable": true, "value": 10 },
          "thumbWidth": { "editable": true, "value": 100 },
          "thumbHeight": { "editable": true, "value": 100 }
        }
      }
    },
    "ingestSettings": { "attributes": { "..." : "..." } },
    "playbackSettings": { "attributes": { "..." : "..." } },
    "streamSecuritySettings": { "attributes": { "..." : "..." } },
    "liveTranscodingSettings": { "attributes": { "..." : "..." } },
    "dvrSettings": { "attributes": { "..." : "..." } },
    "recordingSettings": { "attributes": { "..." : "..." } },
    "streamKeyAliasSettings": { "attributes": { "..." : "..." } }
  },
  "meta": {
    "executionTime": 143,
    "generatedAt": 1766055804481
  },
  "message": "New application created successfully"
}

Error Response (4xx/5xx)

ParameterTypeDescription
messagestringHuman-readable error message
Application Name Already Exists (409)
Code iconjson
{
  "message": "Application name already exists: {appName}"
}
Error Response
Code iconjson
{
  "message": "Error message"
}
Support Needed?

Create a free ticket and our support team will provide you necessary assistance.

Blog
Support
About us
Patents
Term of use
Privacy policy
Contact
©2026 Storm Streaming Media. All Rights Reserved.