Create Stream Keys

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.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

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.

📘

Authorization

Requires a valid Panda API token sent in the Authorization header (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 send set_default: false.

HTTP Method & Path

POST /live_stream_key

Base URL: https://api-v2.pandavideo.com.br

Authentication Requirements

Security SchemeHeaderNote
API KeyAuthorizationPanda API token (without Bearer prefix)

Parameters

NameInTypeRequiredDescription
AuthorizationheaderstringYesPanda API token (without Bearer prefix)

This endpoint takes no path or query parameters.

Request Body

Content-Type: application/json

FieldTypeRequiredDefaultDescription
titlestringYesDisplay name of the key. Minimum 3 characters.
regionstringNousWhere the stream is ingested: us or br. It fixes the region of every live created with this key.
set_defaultbooleanNofalseMakes this the account's default key, clearing default on the other keys.
subaccount_idstring (uuid)NoParent accounts only: creates the key inside a sub-account they own.
🚧

Unknown fields are rejected. The body validates with additionalProperties: false — any key outside the table above returns 400.

🚧

region is 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.

📘

region is 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 the region sent 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"
}
FieldTypeDescription
idstring (uuid)Identifier of the key — pass it as stream_key_id in Create live.
stream_keystring (uuid)The secret value the encoder (OBS) uses. Never expose it client-side.
titlestringDisplay name.
regionstringIngest region of the key: us or br.
set_defaultbooleanReflects the default flag requested for this key.
subaccount_idstring (uuid) · nullOwning sub-account, or null when the key belongs to the account itself.
created_atstring (ISO 8601)Creation timestamp.
🚧

Default flag naming. The create response carries the flag as set_default, while GET /live_stream_key returns it as default on 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." — the subaccount_id is not owned by the caller.
  • "customer not found" / "subscription not found" — billing record missing for the account.
  • Validation error when title is 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

curl -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

Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json