Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.
POST
/
v1
/
run-chained-ffmpeg-commands
Run Chained FFmpeg Commands which share input and output files
Prefer chained commands over multiple separate run-ffmpeg-command calls for multi-step pipelines — one round-trip, lower latency, and outputs from earlier commands can feed later ones.
Request model for submitting chained FFmpeg commands.
This model allows submitting multiple FFmpeg commands that run sequentially. Input files can be shared between commands. Output files from earlier commands
can be used as inputs to later commands.
Dictionary mapping file aliases to their publicly accessible paths,
file name should appear in the end of the url, keys are alphanumeric, with underscore allowed, must start with 'in_'.
You can use public file urls, google drive, dropbox, rendi stored files, s3 stored files, etc. as long as they are publicly accessible.
FFmpeg command strings using {{alias}} placeholders for input and output files. Each string is a separate ffmpeg command. Can contain up to 10 commands. The output files will be stored in storage for later access.
Input files can be used in all specified commands. Output files from previous commands can be used as input files in later commands. If you wish to use an output file from a previous command as input file in a later command, make sure to use -i right before the output file alias.
Input file keys should start with 'in_' prefix, for example: in_video1. Output file keys should start with 'out_' prefix, for example: out_1.
If you're using an automation platform where curly brackets are used special as characters (like make.com, zapier, or other) add backslashes before the curly brackets, for example, replace {{in_1}} with backslashes and brackets \{\{in_1\}\}.
Number of virtual CPUs to use for a single ffmpeg command, the default is 8, up to your account's maximum. Multiple commands can run in parallel as long as their total vCPU usage doesn't exceed your quota.
Metadata to be stored with the command, useful for webhooks and custom tracking and reporting. Up to 10 key-value pairs; each key and each string value must be at most 512 characters.
If true, the command's output files are placed in private storage and can only be downloaded via a presigned URL (request one by passing presigned_ttl_seconds on the poll endpoint). Not available on free plans.
Example:
false
Response
Successfully submitted chained FFmpeg commands
Response model for command submission.
Contains the unique identifier assigned to the submitted command that can be used
to poll for status and retrieve results.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Rendi - FFmpeg API","description":"Rendi - FFmpeg API - Documentation","colors":{"primary":"#6BB666","light":"#F3FFB7","dark":"#6BB666"},"logo":{"light":"https://mintcdn.com/rendi/UkCjje3cRpAu-Pzn/logo/rendi_light.svg?fit=max\u0026auto=format\u0026n=UkCjje3cRpAu-Pzn\u0026q=85\u0026s=9221ec14a8479069fb9656f72cb52c3c","dark":"https://mintcdn.com/rendi/UkCjje3cRpAu-Pzn/logo/rendi_dark.svg?fit=max\u0026auto=format\u0026n=UkCjje3cRpAu-Pzn\u0026q=85\u0026s=6f9b0a9e2ae19a1062d9415927758188","href":"https://rendi.dev/"},"favicon":"https://mintcdn.com/rendi/UkCjje3cRpAu-Pzn/favicon_rendi.svg?fit=max\u0026auto=format\u0026n=UkCjje3cRpAu-Pzn\u0026q=85\u0026s=5b2fa0a0cfb3e3bb80e6d6e2f26eadb6","appearance":{"default":"light"},"navbar":{"links":[{"href":"https://github.com/orgs/rendi-api/discussions","label":"Support"},{"href":"https://app.rendi.dev/sign-in","label":"Sign In"}],"primary":{"type":"button","label":"Get Started","href":"https://app.rendi.dev/sign-up?loc=docs-top-right"}},"footer":{"socials":{"x":"https://x.com/rendi_dev","youtube":"https://www.youtube.com/playlist?list=PLJafqrbyIUfzM4MM6wKeN4qkwCviI3IHw","github":"https://github.com/rendi-api/ffmpeg-cheatsheet"}},"seo":{"metatags":{"description":"Learn how to run FFmpeg online easily using Rendi’s FFmpeg API - no installation needed. Fast, scalable, and reliable FFmpeg as a Service.","og:site_name":"Rendi - FFmpeg API - Documentation","og:description":"Learn how to run FFmpeg online easily using Rendi’s FFmpeg API - no installation needed. Fast, scalable, and reliable FFmpeg as a Service.","og:url":"https://rendi.dev/docs","og:locale":"en_US","og:logo":"/logo/rendi_logo.svg","twitter:description":"Learn how to run FFmpeg online easily - no installation needed. Fast, scalable, and reliable FFmpeg as a Service."}},"integrations":{"ga4":{"measurementId":"G-TX18XXSKL8"},"gtm":{"tagId":"GTM-5892H3NR"},"hotjar":{"hjid":"5186749","hjsv":"6"},"mixpanel":{"projectToken":"28dc0233f8ad77a5de6722a2dddabaf5"}},"contextual":{"options":["view","copy","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/rendi-api/ffmpeg-cheatsheet"},{"anchor":"System Status","icon":"display-chart-up","href":"https://status.rendi.dev"},{"anchor":"YouTube","icon":"youtube","href":"https://youtube.com/playlist?list=PLJafqrbyIUfzM4MM6wKeN4qkwCviI3IHw\u0026si=VqyZiQMBqJrbrngc"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"rendi","hasAudioNarration":false,"actualSubdomain":"rendi","customDomains":["rendi.dev"],"gitSource":{"type":"github","owner":"rendi-api","repo":"rendi-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"feedback":{"thumbs":true},"entitlements":{},"buildId":"6ae74578f7d3a0f8561dcd62","clientVersion":"0.0.4087","searchFilterCounts":[{"language":"default","tag":"Documentation","count":26},{"language":"default","tag":"API Reference","count":14},{"language":"default","tag":"Examples","count":14},{"language":"default","tag":"Features","count":6},{"language":"default","tag":"File Storage","count":4},{"language":"default","tag":"Listing Assets","count":4},{"language":"default","tag":"Generate","count":4},{"language":"default","tag":"Deleting Assets","count":3},{"language":"default","tag":"Get Started","count":3},{"language":"default","tag":"Convert","count":3}]},"assistantConfig":{},"basePath":"/docs","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/endpoint/run-chained-ffmpeg-commands","slug":"/api-reference/endpoint/run-chained-ffmpeg-commands","pageMetadata":{"title":"Run Chained FFmpeg Commands","openapi":"POST /v1/run-chained-ffmpeg-commands","description":"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.","href":"/api-reference/endpoint/run-chained-ffmpeg-commands"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={code:`code`,p:`p`,..._provideComponents(),...props.components},{Note}=_components;if(!Note)_missingMdxReference(`Note`,true);return _jsx(Note,{children:_jsxs(_components.p,{children:[`Prefer chained commands over multiple separate `,_jsx(_components.code,{children:`run-ffmpeg-command`}),` calls for multi-step pipelines — one round-trip, lower latency, and outputs from earlier commands can feed later ones.`]})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Run Chained FFmpeg Commands","openapi":"POST /v1/run-chained-ffmpeg-commands","description":"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.","href":"/api-reference/endpoint/run-chained-ffmpeg-commands"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["API","FFmpeg Commands"],"summary":"Run Chained FFmpeg Commands which share input and output files","description":"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.","operationId":"run_chained_ffmpeg_commands_v1_run_chained_ffmpeg_commands_post","requestBody":"9b66c6ea-9d13-41be-b01e-29566d61ddf0","responses":{"200":"31260426-1dd1-4f0b-b352-760d10e92cf3","401":"ba3e88e2-6900-4688-95f0-d9d637933f73","403":"b71e7cff-98b4-45f5-b0b2-19c27b8d12ac","422":"e434f76b-55a7-4e30-b89f-a7fa180858e2","429":"e80966bb-cd4f-4ff7-95b3-399aab14f152"},"security":["bd166ad0-8e3b-46da-8aae-9fff5f23b771"],"method":"post","type":"path","servers":["d582982c-db85-4362-982a-9f76c7a080f9"],"path":"/v1/run-chained-ffmpeg-commands","baseUrlOptions":["https://api.rendi.dev"],"title":"Run Chained FFmpeg Commands which share input and output files","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"input_files":{"additionalProperties":{"type":"string","uniqueKey":"input_files.additionalProperties","typeLabel":"string"},"type":"object","title":"Input Files","description":"Dictionary mapping file aliases to their publicly accessible paths, \n file name should appear in the end of the url, keys are alphanumeric, with underscore allowed, must start with 'in_'. \n You can use public file urls, google drive, dropbox, rendi stored files, s3 stored files, etc. as long as they are publicly accessible.","examples":[{"in_1":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_intro.mp4","in_2":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_outro.mp4"}],"isRequired":true,"uniqueKey":"input_files","typeLabel":"Input Files · object"},"output_files":{"additionalProperties":{"type":"string","uniqueKey":"output_files.additionalProperties","typeLabel":"string"},"type":"object","title":"Output Files","description":"Dictionary mapping file aliases to their desired output file names, keys are alphanumeric, with underscore allowed, must start with 'out_'","examples":[{"out_1":"output_one.mp4","out_2":"output_two.mp4"}],"isRequired":true,"uniqueKey":"output_files","typeLabel":"Output Files · object"},"ffmpeg_commands":{"items":{"type":"string","uniqueKey":"ffmpeg_commands.items.[INDEX]","typeLabel":"string"},"type":"array","title":"Ffmpeg Commands","description":"FFmpeg command strings using {{alias}} placeholders for input and output files. Each string is a separate ffmpeg command. Can contain up to 10 commands. The output files will be stored in storage for later access.\nInput files can be used in all specified commands. Output files from previous commands can be used as input files in later commands. If you wish to use an output file from a previous command as input file in a later command, make sure to use `-i` right before the output file alias.\nInput file keys should start with 'in_' prefix, for example: in_video1. Output file keys should start with 'out_' prefix, for example: out_1.\nIf you're using an automation platform where curly brackets are used special as characters (like make.com, zapier, or other) add backslashes before the curly brackets, for example, replace {{in_1}} with backslashes and brackets \\\\{\\\\{in_1\\\\}\\\\}.","examples":[["-i {{in_1}} -i {{in_2}} -filter_complex \"[0:v][1:v]hstack=inputs=2[v]\" -map \"[v]\" {{out_1}}","-i {{out_1}} -ss 00:17 -vframes 1 {{out_2}}"]],"isRequired":true,"uniqueKey":"ffmpeg_commands","typeLabel":"string[]"},"max_command_run_seconds":{"type":"number","exclusiveMinimum":0,"title":"Max Command Run Seconds","description":"Maximum allowed runtime in seconds for a single FFmpeg command, the default is 300 seconds","examples":[300],"uniqueKey":"max_command_run_seconds","typeLabel":"number"},"vcpu_count":{"type":"integer","exclusiveMinimum":0,"title":"Vcpu Count","description":"Number of virtual CPUs to use for a single ffmpeg command, the default is 8, up to your account's maximum. Multiple commands can run in parallel as long as their total vCPU usage doesn't exceed your quota.","examples":[8],"uniqueKey":"vcpu_count","typeLabel":"integer"},"metadata":{"oneOf":[{"type":"object","title":"Metadata","description":"Metadata to be stored with the command, useful for webhooks and custom tracking and reporting. Up to 10 key-value pairs; each key and each string value must be at most 512 characters.","maxProperties":10,"minProperties":0,"example":{"key":"value"},"additionalProperties":{"oneOf":[{"type":"string","uniqueKey":"metadata.oneOf.0.additionalProperties.oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"metadata.oneOf.0.additionalProperties.oneOf.1","typeLabel":"integer"},{"type":"number","uniqueKey":"metadata.oneOf.0.additionalProperties.oneOf.2","typeLabel":"number"},{"type":"boolean","uniqueKey":"metadata.oneOf.0.additionalProperties.oneOf.3","typeLabel":"boolean"}],"uniqueKey":"metadata.oneOf.0.additionalProperties","typeLabel":"string | integer | number | boolean"},"uniqueKey":"metadata.oneOf.0","typeLabel":"Metadata · object"},{"type":"null","title":"Metadata","description":"Metadata to be stored with the command, useful for webhooks and custom tracking and reporting. Up to 10 key-value pairs; each key and each string value must be at most 512 characters.","example":{"key":"value"},"uniqueKey":"metadata.oneOf.1","typeLabel":"null"}],"uniqueKey":"metadata","typeLabel":"Metadata · object | null"},"is_private":{"type":"boolean","title":"Is Private","description":"If true, the command's output files are placed in private storage and can only be downloaded via a presigned URL (request one by passing `presigned_ttl_seconds` on the poll endpoint). Not available on free plans.","default":false,"examples":[false],"uniqueKey":"is_private","typeLabel":"boolean"}},"type":"object","required":["input_files","output_files","ffmpeg_commands"],"title":"FFmpegChainedCommandsRequest","description":"Request model for submitting chained FFmpeg commands.\n\nThis model allows submitting multiple FFmpeg commands that run sequentially. Input files can be shared between commands. Output files from earlier commands\ncan be used as inputs to later commands.","example":{"ffmpeg_commands":["-i {{in_1}} -i {{in_2}} -filter_complex \"[0:v][1:v]hstack=inputs=2[v]\" -map [v] {{out_1}}","-i {{out_1}} -vframes 1 {{out_2}}"],"input_files":{"in_1":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_intro.mp4","in_2":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_outro.mp4"},"max_command_run_seconds":300,"metadata":{"key":"value"},"output_files":{"out_1":"output_concatenated.mp4","out_2":"thumbnail.jpg"},"vcpu_count":8},"uniqueKey":"","typeLabel":"FFmpegChainedCommandsRequest · object"},"examples":{"Example":{"title":"Example","value":{"ffmpeg_commands":["-i {{in_1}} -i {{in_2}} -filter_complex \"[0:v][1:v]hstack=inputs=2[v]\" -map [v] {{out_1}}","-i {{out_1}} -vframes 1 {{out_2}}"],"input_files":{"in_1":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_intro.mp4","in_2":"https://storage.rendi.dev/sample/big_buck_bunny_720p_5sec_outro.mp4"},"max_command_run_seconds":300,"metadata":{"key":"value"},"output_files":{"out_1":"output_concatenated.mp4","out_2":"thumbnail.jpg"},"vcpu_count":8}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"31260426-1dd1-4f0b-b352-760d10e92cf3":{"description":"Successfully submitted chained FFmpeg commands","content":{"application/json":{"schema":{"properties":{"command_id":{"type":"string","format":"uuid","title":"Command Id","description":"Unique identifier for the submitted command","examples":["123e4567-e89b-12d3-a456-426614174000"],"isRequired":true,"uniqueKey":"command_id","typeLabel":"string\u003cuuid>"}},"type":"object","required":["command_id"],"title":"RunCommandResponse","description":"Response model for command submission.\n\nContains the unique identifier assigned to the submitted command that can be used\nto poll for status and retrieve results.","uniqueKey":"","typeLabel":"RunCommandResponse · object"},"example":{"command_id":"123e4567-e89b-12d3-a456-426614174000"},"examples":{"Example":{"title":"Example","value":{"command_id":"123e4567-e89b-12d3-a456-426614174000"}}},"exampleType":"examples"}},"exampleType":"examples"},"ba3e88e2-6900-4688-95f0-d9d637933f73":{"description":"Invalid API key","content":{"application/json":{"example":{"detail":"Invalid authorization key"},"examples":{"Example":{"title":"Example","value":{"detail":"Invalid authorization key"}}},"exampleType":"examples"}},"exampleType":"examples"},"b71e7cff-98b4-45f5-b0b2-19c27b8d12ac":{"description":"Account quota exceeded or plan does not support chained commands","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"e434f76b-55a7-4e30-b89f-a7fa180858e2":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"e80966bb-cd4f-4ff7-95b3-399aab14f152":{"description":"Rate limit exceeded","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"bd166ad0-8e3b-46da-8aae-9fff5f23b771":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-KEY","scopes":[],"schemeName":"APIKeyHeader"}}},"servers":{"d582982c-db85-4362-982a-9f76c7a080f9":{"url":"https://api.rendi.dev","description":"Rendi - FFmpeg API"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"X-API-KEY","scopes":[],"schemeName":"APIKeyHeader"},"schema":{"title":"X-API-KEY","type":"string","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"APIKeyHeader","name":"X-API-KEY"}],"title":"APIKeyHeader"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"rendi","siteName":"Rendi - FFmpeg API","title":"Run Chained FFmpeg Commands - Rendi - FFmpeg API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-23T12:01:22.477Z","originalFileLocation":"api-reference/endpoint/run-chained-ffmpeg-commands.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Rendi - FFmpeg API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Run Chained FFmpeg Commands - Rendi - FFmpeg API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to run FFmpeg online easily using Rendi’s FFmpeg API - no installation needed. Fast, scalable, and reliable FFmpeg as a Service.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Rendi - FFmpeg API - Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://rendi.mintlify.site/docs/_mintlify/api/og/v2?division=Running+FFmpeg\u0026amp;title=Run+Chained+FFmpeg+Commands\u0026amp;description=Submit+multiple+FFmpeg+commands+where+following+commands+can+depend+on+output+of+previous+commands.+++++++++Running+chained+FFmpeg+commands+is+faster+than+runni\u0026amp;theme=20f28108fb429c5ee8009a96\u0026amp;signature=7f20fbbf42fc1a1cd7a884fd2e37a8b741db44262a246fe38737e72b4240edcb\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Run Chained FFmpeg Commands - Rendi - FFmpeg API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to run FFmpeg online easily - no installation needed. Fast, scalable, and reliable FFmpeg as a Service.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://rendi.mintlify.site/docs/_mintlify/api/og/v2?division=Running+FFmpeg\u0026amp;title=Run+Chained+FFmpeg+Commands\u0026amp;description=Submit+multiple+FFmpeg+commands+where+following+commands+can+depend+on+output+of+previous+commands.+++++++++Running+chained+FFmpeg+commands+is+faster+than+runni\u0026amp;theme=20f28108fb429c5ee8009a96\u0026amp;signature=7f20fbbf42fc1a1cd7a884fd2e37a8b741db44262a246fe38737e72b4240edcb\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/docs/mintlify-assets/_mintlify/favicons/rendi/yMbVXDfCy7ERSCJP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Rendi - FFmpeg API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6BB666\">\u003cmeta data-mint-head name=\"og:locale\" content=\"en_US\">\u003cmeta data-mint-head name=\"og:logo\" content=\"/logo/rendi_logo.svg\">\u003clink data-mint-head rel=\"canonical\" href=\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/docs/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/api-reference/endpoint/run-chained-ffmpeg-commands.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://rendi.dev/#organization\",\"name\":\"Rendi - FFmpeg API\",\"url\":\"https://rendi.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/rendi/UkCjje3cRpAu-Pzn/logo/rendi_light.svg?fit=max\u0026auto=format\u0026n=UkCjje3cRpAu-Pzn\u0026q=85\u0026s=9221ec14a8479069fb9656f72cb52c3c\"}},{\"@type\":\"WebSite\",\"@id\":\"https://rendi.dev/docs#website\",\"name\":\"Rendi - FFmpeg API\",\"url\":\"https://rendi.dev/docs\",\"publisher\":{\"@id\":\"https://rendi.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands#webpage\",\"url\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands\",\"name\":\"Run Chained FFmpeg Commands\",\"description\":\"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.\",\"dateModified\":\"2026-04-23T12:01:22.477Z\",\"isPartOf\":{\"@id\":\"https://rendi.dev/docs#website\"},\"breadcrumb\":{\"@id\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Running FFmpeg\",\"item\":\"https://rendi.dev/docs/api-reference/endpoint/run-ffmpeg-command\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Run Chained FFmpeg Commands\",\"item\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands#apireference\",\"headline\":\"Run Chained FFmpeg Commands\",\"name\":\"Run Chained FFmpeg Commands\",\"description\":\"Submit multiple FFmpeg commands where following commands can depend on output of previous commands. Running chained FFmpeg commands is faster than running each command separately because we re-use system and network resources between the multiple ffmpeg commands. Processing quota is shared between the commands, and is more efficient than running each command separately.\",\"url\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands\",\"mainEntityOfPage\":{\"@id\":\"https://rendi.dev/docs/api-reference/endpoint/run-chained-ffmpeg-commands#webpage\"},\"dateModified\":\"2026-04-23T12:01:22.477Z\",\"publisher\":{\"@id\":\"https://rendi.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://rendi.dev/docs#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Rendi - FFmpeg API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Rendi - FFmpeg API","nav":{"global":{"anchors":[{"anchor":"GitHub","icon":"github","href":"https://github.com/rendi-api/ffmpeg-cheatsheet"},{"anchor":"System Status","icon":"display-chart-up","href":"https://status.rendi.dev"},{"anchor":"YouTube","icon":"youtube","href":"https://youtube.com/playlist?list=PLJafqrbyIUfzM4MM6wKeN4qkwCviI3IHw\u0026si=VqyZiQMBqJrbrngc"}]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"API Documentation","pages":[{"title":"API Reference","href":"/api-reference/introduction"}]},{"group":"Running FFmpeg","pages":[{"title":"Run FFmpeg Command","openapi":"POST /v1/run-ffmpeg-command","description":"Submit an FFmpeg command for processing with input and output file specifications.","href":"/api-reference/endpoint/run-ffmpeg-command"},{"title":"Run Chained FFmpeg Commands","openapi":"POST /v1/run-chained-ffmpeg-commands","href":"/api-reference/endpoint/run-chained-ffmpeg-commands"}]},{"group":"Listing Assets","pages":[{"title":"Poll FFmpeg Command","openapi":"GET /v1/commands/{command_id}","description":"Get the status of a previously submitted FFmpeg command. Works for regular commands and chained commands.","href":"/api-reference/endpoint/poll-command"},{"title":"List FFmpeg Commands","openapi":"GET /v1/commands","href":"/api-reference/endpoint/list-commands"},{"title":"Get File","openapi":"GET /v1/files/{file_id}","href":"/api-reference/endpoint/get-file"},{"title":"List Stored Files","openapi":"GET /v1/files","href":"/api-reference/endpoint/list-files"}]},{"group":"File Storage","pages":[{"title":"FFprobe and store a file","openapi":"POST /v1/files/store-file","href":"/api-reference/endpoint/store-file"},{"title":"Initiate a Multipart Upload","openapi":"POST /v1/files/init-upload","href":"/api-reference/endpoint/init-upload"},{"title":"Complete a Multipart Upload","openapi":"POST /v1/files/{file_id}/complete-upload","href":"/api-reference/endpoint/complete-upload"},{"title":"Abort a Multipart Upload","openapi":"POST /v1/files/{file_id}/abort-upload","href":"/api-reference/endpoint/abort-upload"}]},{"group":"Deleting Assets","pages":[{"title":"Delete Command Files","openapi":"DELETE /v1/commands/{command_id}/files","href":"/api-reference/endpoint/delete-command-files"},{"title":"Delete File","openapi":"DELETE /v1/files/{file_id}","href":"/api-reference/endpoint/delete-file"},{"title":"Delete Files in Bulk","openapi":"POST /v1/files/bulk-delete","href":"/api-reference/endpoint/delete-files"}]}]}]},"basePath":"","title":"Run Chained FFmpeg Commands - Rendi - FFmpeg API","buildId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","deploymentId":"dpl_BSPUBxEoKhhK7HzXVDPxdPvWx4xc","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-Do6EtGSl.js","utils-id4tQ6My.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-Byrixac4.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-nakYa3Zl.js","snippetPresets-Bq-pUS7h.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-CujTC_9K.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-FneVUsVu.js","shallow-DY9WpUCz.js","getApiPlaygroundDisplay-Bz8WpPfA.js","CodeSnippet-DgCuJg4G.js","CodeSnippets-Dub9c4T0.js","Page-CePXnjd1.js","getPastedJson-xdI8y2XB.js","icon--yVw5vkr.js","MethodPill-C47t7MdS.js","DuplicateIcon-BzwJ2LeC.js","createIcon-BzggGy84.js","DynamicMarkdown-AlxJK8VR.js","SectionHeading-CMlwFxdK.js","axios-vUo_bRtp.js","Markdown-BNgNrPsi.js","clsx-apD-Q0Oo.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-qmLwQyWY.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Dc4qTkWx.js"]}