{
  "openapi": "3.0.1",
  "info": {
    "title": "Video Render Engine - Remotion & HTML/CSS to MP4",
    "description": "Render Remotion / React / HTML / CSS / SVG / Canvas compositions to MP4, WebM, MOV or GIF in seconds. Parallel frame sharding across cores and containers, seamless stitching, voiceover and ducked music mixed in. 900 frames of 1080x1920 in 13-28 s. Webhook and standby mode.",
    "version": "0.1",
    "x-build-id": "d4Nlt0xoYBKr4c2J5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/andrew_babo~hyper-video-render-engine/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-andrew_babo-hyper-video-render-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/andrew_babo~hyper-video-render-engine/runs": {
      "post": {
        "operationId": "runs-sync-andrew_babo-hyper-video-render-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/andrew_babo~hyper-video-render-engine/run-sync": {
      "post": {
        "operationId": "run-sync-andrew_babo-hyper-video-render-engine",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "bundleUrl": {
            "title": "Remotion bundle URL (.zip / .tar.gz)",
            "type": "string",
            "description": "Direct link to a built Remotion bundle archive (the folder produced by `npx remotion bundle`, zipped). Leave every source field empty to render the built-in demo composition."
          },
          "serveUrl": {
            "title": "Hosted bundle URL",
            "type": "string",
            "description": "URL of an already-hosted bundle (for example on S3, Cloudflare R2 or Remotion's `deploySite`). Nothing is downloaded — the browser loads it directly."
          },
          "bundleKeyValueStoreKey": {
            "title": "Bundle from a key-value store record",
            "type": "string",
            "description": "Key of a .zip record inside an Apify key-value store. Handy when another Actor produced the bundle."
          },
          "bundleKeyValueStoreId": {
            "title": "Key-value store ID for the bundle",
            "type": "string",
            "description": "Store that holds the bundle record. Defaults to this run's own key-value store."
          },
          "compositionId": {
            "title": "Composition ID",
            "type": "string",
            "description": "The composition to render, as registered in your Root file. Leave empty to render the first composition in the bundle."
          },
          "inputProps": {
            "title": "Input props",
            "type": "object",
            "description": "JSON passed to your composition as props — dynamic text, colours, image URLs, chart data, anything."
          },
          "envVariables": {
            "title": "Environment variables",
            "type": "object",
            "description": "Values exposed to the composition through `process.env` while rendering."
          },
          "startFrame": {
            "title": "Segment start frame",
            "minimum": 0,
            "type": "integer",
            "description": "Segment mode: first frame to render (inclusive). Render each scene as its own run with the same videoConfig, then join the files with ffmpeg -f concat -c copy — every output has zero-based PTS, a 90 kHz timescale and starts on a keyframe."
          },
          "endFrame": {
            "title": "Segment end frame",
            "minimum": 0,
            "type": "integer",
            "description": "Last frame to render (inclusive). Leave empty to render until the end of the composition."
          },
          "videoConfig": {
            "title": "Video settings",
            "type": "object",
            "description": "Overrides for size, frame rate, length and encoding. Anything you leave out is taken from the composition itself.\n\nFields: width, height, fps, durationInFrames, frameRange [from, to], format (mp4 / webm / mov / mkv / gif), codec (h264, h265, vp8, vp9, av1, prores, gif), crf, preset, pixelFormat, proResProfile (4444-xq / 4444 / hq / standard / light / proxy), videoBitrate, audioCodec, audioBitrate, scale, everyNthFrame, muted, imageFormat, jpegQuality.\n\nTransparency: set pixelFormat to yuva420p together with codec vp8, vp9 or prores. PNG frames and the ProRes 4444 profile are switched on for you, and transparent WebM is encoded through a fast parallel libvpx pass instead of the stock one that runs at under one frame per second. Transparent jobs always render in one container. Alpha is dropped with h264/h265 because those formats cannot carry it."
          },
          "sharding": {
            "title": "Speed and sharding",
            "type": "object",
            "description": "How the work is split.\n\nFields: workers (parallel renderers — in local mode one per CPU core, in distributed mode the number of extra containers), concurrencyPerWorker (tabs per renderer, 1 is fastest), mode (auto / local / distributed), distributedThresholdFrames (when auto reaches for extra containers), workerMemoryMbytes (memory per worker container, 8192 = 2 cores each), masterRenders (this container renders its own share alongside the workers, default true).\n\nMeasured on Apify: a 900-frame 1080x1920 render of a heavy template takes 52 s in one 32 GB container and 31 s across 7 x 8 GB workers. A light template does the same 900 frames in 13 s in a single container."
          },
          "audioUrl": {
            "title": "Voiceover / main audio URL",
            "type": "string",
            "description": "Audio file mixed into the finished video. Mixing happens outside the browser, so it costs under a second and never drifts out of sync."
          },
          "audioVolume": {
            "title": "Voiceover volume",
            "type": "string",
            "description": "1 keeps the original level, 0.5 halves it, 2 doubles it."
          },
          "bgmUrl": {
            "title": "Background music URL",
            "type": "string",
            "description": "Music bed. It is looped or trimmed to the length of the video automatically."
          },
          "bgmVolume": {
            "title": "Background music volume",
            "type": "string",
            "description": "Level of the music bed relative to the original file."
          },
          "bgmDucking": {
            "title": "Duck the music under the voice",
            "type": "boolean",
            "description": "Automatically lowers the music whenever the voiceover speaks.",
            "default": true
          },
          "bgmLoop": {
            "title": "Loop the background music",
            "type": "boolean",
            "description": "Repeats short music beds until the video ends.",
            "default": true
          },
          "outputKey": {
            "title": "Output file name",
            "type": "string",
            "description": "Key of the video record in the key-value store. The right extension is added for you.",
            "default": "OUTPUT"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "The full render report is POSTed here as JSON the moment the video is ready."
          },
          "webhookHeaders": {
            "title": "Webhook headers",
            "type": "object",
            "description": "Extra headers for the webhook call, for example an Authorization token."
          },
          "remotionLicenseKey": {
            "title": "Remotion license key",
            "type": "string",
            "description": "Remotion is free for individuals and companies with up to three people; larger companies need a company licence. Paste your key here if you have one."
          },
          "chromiumGl": {
            "title": "Graphics backend",
            "enum": [
              "angle",
              "swangle",
              "vulkan",
              "egl",
              "swiftshader"
            ],
            "type": "string",
            "description": "How Chromium draws the page. angle is measured about 8x faster than swangle on Apify hardware and is used by default; if a machine cannot start it, the render falls back to swangle automatically and says so in warnings.",
            "default": "angle"
          },
          "maxBundleSizeMb": {
            "title": "Maximum bundle size (MB)",
            "minimum": 1,
            "maximum": 8192,
            "type": "integer",
            "description": "Safety limit for the downloaded bundle archive. Downloads larger than this are stopped instead of filling the container.",
            "default": 1024
          },
          "shardTimeoutSecs": {
            "title": "Shard timeout (seconds)",
            "minimum": 30,
            "maximum": 7200,
            "type": "integer",
            "description": "A shard that goes quiet for longer than this is abandoned and retried on a fresh browser.",
            "default": 600
          },
          "failOnRenderError": {
            "title": "Fail the run when the render fails",
            "type": "boolean",
            "description": "Off by default: a failed render still writes an explanatory row and finishes as succeeded, which keeps automated pipelines readable. Turn it on if your orchestrator watches run status instead of output.",
            "default": false
          },
          "verbose": {
            "title": "Verbose logs",
            "type": "boolean",
            "description": "Prints Remotion's full renderer log — useful when a composition misbehaves.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}