Skip to main content
The Stream Manager 2.0 API is the centralized REST interface for managing live streams and infrastructure in Red5 Cloud. You use it to resolve which origin server should receive a published stream, which edge server should serve a subscriber, and how transcoding ladders are provisioned — all from a single authenticated endpoint. Red5 Cloud runs the same Stream Manager API as Red5 Pro, so documentation, SDK helpers, and tooling written for Red5 Pro apply directly to your Red5 Cloud deployment.

Prerequisites

Before making API calls you need two pieces of information from the Dev Resources section of your Red5 Cloud Management Console:
  • Stream Manager URL — the base URL for all API requests (e.g. https://sm.example.red5pro.net)
  • Admin credentials — the admin username and password used to obtain a JWT
The Admin User and Admin Password are available only on the Startup plan and above. If you do not see these fields, upgrade your plan in the Management Console.

Authentication

All Stream Manager 2.0 endpoints require a Bearer JWT in the Authorization header. Obtain a token by posting your admin credentials to the auth endpoint.
1

Locate your credentials

In the Red5 Cloud Management Console, open Dev Resources. Copy the Stream Manager URL, Admin User, and Admin Password from the Stream Manager and Admin User section.
2

Request a JWT

Send a POST request to the auth endpoint with your credentials:
curl -X POST "https://<streamManagerHost>/as/v1/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"username": "<adminUser>", "password": "<adminPassword>"}'
The response contains an accessToken field:
{
  "accessToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
  "tokenType": "Bearer"
}
3

Add the token to subsequent requests

Include the token as a Bearer header on every API call:
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
JWTs expire. If you receive a 401 Unauthorized response, re-authenticate to obtain a fresh token before retrying.

Node group name

Many endpoints require a {nodeGroup} path parameter. This value corresponds to the Deployment Name shown in the Red5 Cloud Management Console for your active deployment.

Key API operations

Get a server for publishing

Before your publisher opens a WebRTC or RTMP connection, ask the Stream Manager for the correct origin server. Pass transcode=false when you do not need adaptive bitrate transcoding.
GET /as/v1/streams/stream/{nodeGroup}/{streamName}?transcode=false
Authorization: Bearer <token>
Example:
curl -X GET \
  "https://<streamManagerHost>/as/v1/streams/stream/myDeployment/myStream?transcode=false" \
  -H "Authorization: Bearer <token>"
Response:
{
  "serverAddress": "192.0.2.10",
  "scope": "live",
  "name": "myStream"
}
Use serverAddress as the host in your publisher’s connection string.

Get a server for subscribing

Subscribers should connect to an edge server, not the origin. Omit the transcode parameter (or pass transcode=false) for a standard playback edge.
GET /as/v1/streams/stream/{nodeGroup}/{streamName}
Authorization: Bearer <token>
Example:
curl -X GET \
  "https://<streamManagerHost>/as/v1/streams/stream/myDeployment/myStream" \
  -H "Authorization: Bearer <token>"
Response:
{
  "serverAddress": "192.0.2.55",
  "scope": "live",
  "name": "myStream"
}
Point your subscriber’s connection to the returned serverAddress.

Create a transcoding provision

A provision defines the ABR (adaptive bitrate) ladder for a stream — the set of quality levels the transcoder produces. You must create the provision before the stream is published.
POST /as/v1/provision/{nodeGroup}
Authorization: Bearer <token>
Content-Type: application/json
Request body:
{
  "streamName": "myStream",
  "region": "us-east-1",
  "streams": [
    {
      "name": "myStream_1",
      "level": 1,
      "videoBR": 2000,
      "videoWidth": 1280,
      "videoHeight": 720,
      "videoFPS": 30,
      "audioBR": 128
    },
    {
      "name": "myStream_2",
      "level": 2,
      "videoBR": 800,
      "videoWidth": 640,
      "videoHeight": 360,
      "videoFPS": 30,
      "audioBR": 64
    }
  ]
}
Each object in streams represents one output rendition. The level field determines playback order — lower numbers are higher quality. Subscribers automatically receive the rendition best suited to their bandwidth.
Set region to the region identifier that matches your Red5 Cloud deployment (e.g. us-east-1 for United States East). The region names are shown on the Deployments page in the Management Console.

Get a transcoder server for publishing

When a provision exists for a stream, direct your publisher to the transcoder rather than a standard origin by passing transcode=true.
GET /as/v1/streams/stream/{nodeGroup}/{streamName}?transcode=true
Authorization: Bearer <token>
Example:
curl -X GET \
  "https://<streamManagerHost>/as/v1/streams/stream/myDeployment/myStream?transcode=true" \
  -H "Authorization: Bearer <token>"
The response returns the transcoder’s serverAddress. Use this as the publisher host instead of a standard origin.

Request summary

Returns the origin server IP for a publisher to connect to. Use this when ABR transcoding is not needed.
Returns an edge server IP for a subscriber to connect to for low-latency playback.
Registers a transcoding ladder for a stream name. Must be called before the stream is published with transcode=true.
Returns the transcoder server IP for a publisher to connect to when a provision exists for the stream.

Full API reference

Red5 Cloud shares the complete Stream Manager 2.0 API with Red5 Pro. For the full endpoint listing, request/response schemas, and error codes, see the Stream Manager 2.0 API reference.