Skip to main content

Studio Protocol referencev4.0.502

Protocol v1 uses stable endpoints and versioned JSON envelopes. It supports official Remotion Element payloads.

Versions

protocolVersion versions discovery, targeting, requests, responses, and errors. The Element version independently versions the payload schema.

Discovery

Discovery request
GET /api/studio-protocol

A compatible Studio responds with:

Discovery response
{ "protocol": "remotion-studio-protocol", "protocolVersion": 1, "studioVersion": "4.0.502", "capabilities": { "install": [ { "payloadType": "remotion-element", "payloadVersions": [1] } ] }, "projectName": "My video", "installTarget": { "id": "opaque-target-token", "expiresAt": 1780000000000, "compositionId": "Main", "lastFocusedAt": 1779999999000 } }

installTarget is null when Studio is compatible but no writable, recently focused composition is available.

Installation request

Installation request
POST /api/studio-protocol/install Content-Type: application/json
Installation request body
{ "protocol": "remotion-studio-protocol", "protocolVersion": 1, "targetId": "opaque-target-token", "payload": { "type": "remotion-element", "version": 1, "durationInFrames": 90, "element": { "displayName": "Lower Third", "slug": "lower-third", "sourceCode": "export const LowerThird = () => null;", "dependencies": [], "dimensions": {"width": 900, "height": 260} } } }

Create this object with createElementPayload() instead of serializing it manually.

Success response

Installation response
{ "protocol": "remotion-studio-protocol", "protocolVersion": 1, "status": "awaiting-confirmation" }

The response confirms delivery, not installation completion.

Error response

Error response
{ "protocol": "remotion-studio-protocol", "protocolVersion": 1, "status": "error", "error": { "code": "target-expired", "message": "The selected Studio target is no longer available." } }

Invalid requests return 400, disallowed origins return 403, unsupported methods return 405, and unavailable targets return 409.

Target tokens

A target token is opaque, short-lived, single-use, and bound to one connected Studio client and composition snapshot. The server does not select another target during installation.

CORS

The server returns an explicit allowed origin, never *. Preflight responses include support for Content-Type and Private Network Access.

See also