Creates a stream key for the account, choosing its ingest region (us or br). One live per stream key: the plan limit surfaces here, as 400 the plan has no slot available to create stream key.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
POST /live_stream_key
Creates a stream key for the authenticated account. The key holds the stream_key value and the RTMP server your encoder publishes to, and its id is what you pass as stream_key_id when creating a live.
AuthorizationRequires a valid Panda API token sent in the
Authorizationheader (no Bearer prefix).
One live per stream key. A key sustains a single live at a time — to run two lives simultaneously you need two keys. How many keys you can create comes from your plan, so the plan limit surfaces here, when creating the key, and not when creating the live:400 the plan has no slot available to create stream key.
The first key of the account is marked as the default automatically, even when you sendset_default: false.
HTTP Method & Path
POST /live_stream_key
Base URL: https://api-v2.pandavideo.com.br
Authentication Requirements
| Security Scheme | Header | Note |
|---|---|---|
| API Key | Authorization | Panda API token (without Bearer prefix) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | header | string | Yes | Panda API token (without Bearer prefix) |
This endpoint takes no path or query parameters.
Request Body
Content-Type: application/json
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
title | string | Yes | — | Display name of the key. Minimum 3 characters. |
region | string | No | us | Where the stream is ingested: us or br. It fixes the region of every live created with this key. |
set_default | boolean | No | false | Makes this the account's default key, clearing default on the other keys. |
subaccount_id | string (uuid) | No | — | Parent accounts only: creates the key inside a sub-account they own. |
Unknown fields are rejected. The body validates withadditionalProperties: false— any key outside the table above returns400.
regionis not listed in the interactive request builder yet. The API accepts the field, but the "Try It!" panel on this page is generated from a schema that still does not declare it. Send it from your own client — see the cURL below.
regionis where you publish, not where your viewers are. It selects the server that receives the signal from your encoder. Picking the wrong one only makes your encoder publish further away; delivery to viewers does not depend on this field. It also affects the per-minute rate. A key created with a fixed region wins over theregionsent when creating a live.
Example Request
{ "title": "Canal principal", "region": "br", "set_default": false }Response
Success Response (200)
{
"id": "{stream_key_id}",
"stream_key": "{stream_key}",
"title": "Canal principal",
"region": "br",
"set_default": false,
"subaccount_id": null,
"created_at": "2026-09-07T02:30:00.000Z"
}| Field | Type | Description |
|---|---|---|
id | string (uuid) | Identifier of the key — pass it as stream_key_id in Create live. |
stream_key | string (uuid) | The secret value the encoder (OBS) uses. Never expose it client-side. |
title | string | Display name. |
region | string | Ingest region of the key: us or br. |
set_default | boolean | Reflects the default flag requested for this key. |
subaccount_id | string (uuid) · null | Owning sub-account, or null when the key belongs to the account itself. |
created_at | string (ISO 8601) | Creation timestamp. |
Default flag naming. The create response carries the flag asset_default, while GET /live_stream_key returns it asdefaulton each item. When you need the authoritative value, read the list — and remember that the first key of the account is forced to default no matter what you sent.
Error Responses
400 Bad Request
{ "errCode": "BadRequest", "errMsg": "the plan has no slot available to create stream key" }Other 400 messages returned by this endpoint:
"Subaccounts are not allowed to create stream keys"— the token belongs to a sub-account."subaccount not found."/"invalid subaccount."— thesubaccount_idis not owned by the caller."customer not found"/"subscription not found"— billing record missing for the account.- Validation error when
titleis absent or shorter than 3 characters.
401 Unauthorized — missing or invalid API token.
404 Not Found — "User not found".
500 Internal Server Error — server-side error.
Example Usage
cURL — create a key in the br region
br regioncurl -X POST "https://api-v2.pandavideo.com.br/live_stream_key" \
-H "Authorization: {api_key}" \
-H "Content-Type: application/json" \
-d '{ "title": "Canal principal", "region": "br", "set_default": false }'Related
- Stream Keys — list the keys of the account, with
regionandis_attached. - Update/Reset Live Stream Key — rename a key or rotate its secret.
- Delete Live Stream Key — remove a key.
- Create live — use the key
idasstream_key_id.
