Skip to content
Docs

Scenes API

Scenes of an overlay: create, prepare in preview and put them live.

View as Markdown
On this page

Authenticate with a personal token as Authorization: Bearer pxp_...; the operations are also MCP tools unless noted. The full machine-readable definition is in the OpenAPI specification.

OperationMethod and pathScope
List scenesGET /overlays/{overlayId}/scenesoverlays:read
Create scenePOST /overlays/{overlayId}/scenesscenes:write
Rename scene or set its transitionPATCH /overlays/{overlayId}/scenes/{sceneId}scenes:write
Delete sceneDELETE /overlays/{overlayId}/scenes/{sceneId}scenes:write
Duplicate scenePOST /overlays/{overlayId}/scenes/{sceneId}/duplicatescenes:write
Put scene on airPOST /overlays/{overlayId}/scenes/{sceneId}/golivescenes:golive
Create preview of a scenePOST /overlays/{overlayId}/scenes/{sceneId}/previewscenes:write
Take preview to programPOST /overlays/{overlayId}/scenes/{sceneId}/takescenes:golive
Set a layer's state in a scenePATCH /overlays/{overlayId}/scenes/{sceneId}/members/{memberId}scenes:write
Reorder scenesPUT /overlays/{overlayId}/scenes/orderscenes:write

Operations

List scenes

GET/api/v1/overlays/{overlayId}/scenes

Lists the scenes of an overlay and which one is live (activeSceneId).

Scope: overlays:read (Read overlays) · MCP tool: list_scenes · Notes: read only

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
Terminal
curl -X GET "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes" \
  -H "Authorization: Bearer $PX_TOKEN"

Create scene

POST/api/v1/overlays/{overlayId}/scenes

Creates a scene. mode "blank" (default) starts with every layer hidden; "snapshot" copies the current live state. A new scene is never live until you call go_live_scene. Supports the Idempotency-Key header.

Scope: scenes:write (Edit scenes) · MCP tool: create_scene · Notes: supports Idempotency-Key

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
namebodystringrequiredUp to 40 characters
modebodyblank, snapshotoptional
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "..." }'

Rename scene or set its transition

PATCH/api/v1/overlays/{overlayId}/scenes/{sceneId}

Renames a scene and/or sets the transition used when it goes live (morph, fade, slide, zoom, cut; 200-2000 ms).

Scope: scenes:write (Edit scenes) · MCP tool: update_scene

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
namebodystringoptionalUp to 40 characters
transitionTypebodymorph, fade, slide, zoom, cutoptional
transitionMsbodyintegeroptional200 to 2000
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "name": "...", "transitionType": "morph" }'

Delete scene

DELETE/api/v1/overlays/{overlayId}/scenes/{sceneId}

DESTRUCTIVE: deletes a scene. The live scene and the last scene cannot be deleted.

Scope: scenes:write (Edit scenes) · MCP tool: delete_scene · Notes: destructive, needs confirmation in MCP

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
Terminal
curl -X DELETE "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>" \
  -H "Authorization: Bearer $PX_TOKEN"

Duplicate scene

POST/api/v1/overlays/{overlayId}/scenes/{sceneId}/duplicate

Copies a scene (every layer's position, stacking and visibility plus the transition) under "<name> copy". The copy is never live until you call go_live_scene; it counts against the scene limit.

Scope: scenes:write (Edit scenes) · MCP tool: duplicate_scene

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>/duplicate" \
  -H "Authorization: Bearer $PX_TOKEN"

Put scene on air

POST/api/v1/overlays/{overlayId}/scenes/{sceneId}/golive

ON AIR: switches the live stream output to this scene immediately (viewers see it). Prefer preview_scene + take_preview_to_program, or edit scenes offline, when unsure. Preview scenes cannot go live directly.

Scope: scenes:golive (Switch scenes on air) · MCP tool: go_live_scene · Notes: destructive

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
transitionbodymorph, fade, slide, zoom, cutoptionalOne-time transition override for this switch only
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>/golive" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "transition": "morph" }'

Create preview of a scene

POST/api/v1/overlays/{overlayId}/scenes/{sceneId}/preview

Creates an offline preview copy of a scene. Edit it safely (set_scene_member_state), then publish it with take_preview_to_program. Nothing changes on air.

Scope: scenes:write (Edit scenes) · MCP tool: preview_scene

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>/preview" \
  -H "Authorization: Bearer $PX_TOKEN"

Take preview to program

POST/api/v1/overlays/{overlayId}/scenes/{sceneId}/take

ON AIR when the target scene is live: copies a preview scene into the scene it previews and removes the preview. If the target scene is live, viewers see the change immediately.

Scope: scenes:golive (Switch scenes on air) · MCP tool: take_preview_to_program · Notes: destructive

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredThe PREVIEW scene id. At least 1
Terminal
curl -X POST "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>/take" \
  -H "Authorization: Bearer $PX_TOKEN"

Set a layer's state in a scene

PATCH/api/v1/overlays/{overlayId}/scenes/{sceneId}/members/{memberId}

Sets position, stacking and visibility of one layer inside one scene. For a scene that is NOT live this is an offline edit; for the live scene it changes the stream output immediately.

Scope: scenes:write (Edit scenes) · MCP tool: set_scene_member_state

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
sceneIdpathintegerrequiredScene id (from list_scenes). At least 1
memberIdpathintegerrequiredLayer (member) id (from get_overlay or list_members). At least 1
layoutbodyobjectoptionalPlacement in design-space pixels (canvas 1920 wide): x/y move the layer from the canvas center, scale 0.05-4, rot in degrees, opacity 0-1, optional crop (cropL/cropT/cropR/cropB in native px)
zbodyintegeroptionalStacking position (0 = bottom); other layers move to fill the gap. 0 to 1000
hiddenbodybooleanoptionalHide or show the layer (on the live output when this overlay is on air)
expectedRevbodyintegeroptionalOptional guard: the scene rev (offline scene) or overlay rev (live scene) you last saw. At least 0
Terminal
curl -X PATCH "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/<sceneId>/members/<memberId>" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "layout": {}, "z": 1 }'

Reorder scenes

PUT/api/v1/overlays/{overlayId}/scenes/order

Sets the order of the scenes of an overlay (scene tabs, deck buttons and every scene list follow it). order must contain every scene id of the overlay exactly once, previews included; the first id becomes the first (leftmost) tab. Nothing changes on air.

Scope: scenes:write (Edit scenes) · MCP tool: reorder_scenes

NameInTypeRequiredDescription
overlayIdpathstringrequiredOverlay id (from list_overlays). Up to 64 characters
orderbodyarray of integerrequiredAll scene ids of the overlay in the new order (from list_scenes). Up to 100 items
Terminal
curl -X PUT "https://pxstudio.cloud/api/v1/overlays/<overlayId>/scenes/order" \
  -H "Authorization: Bearer $PX_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "order": [] }'

Was this page helpful?