Skip to main content
POST
/
api
/
video
/
render
cURL
curl --request POST \
  --url https://recoup-api.vercel.app/api/video/render \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "compositionId": "SocialPost",
  "inputProps": {
    "videoUrl": "https://fal.media/example.mp4",
    "captionText": "my brain has 100 tabs open",
    "hasAudio": false
  },
  "width": 720,
  "height": 1280,
  "fps": 30,
  "durationInFrames": 240,
  "codec": "h264"
}
'
{
  "status": "processing",
  "runId": "run_abc123def456"
}

Authorizations

x-api-key
string
header
required

Your Recoup API key. Learn more.

Body

application/json

Video render configuration including the composition ID, input props, and output settings

compositionId
string
required

The composition ID to render (e.g., "SocialPost", "UpdatesAnnouncement", "CommitShowcase")

Example:

"SocialPost"

inputProps
object

Input props to pass to the composition. Structure depends on the composition being rendered.

Example:
{
"videoUrl": "https://fal.media/example.mp4",
"captionText": "my brain has 100 tabs open",
"hasAudio": false
}
width
integer
default:720

Output video width in pixels

Required range: 1 <= x <= 3840
Example:

720

height
integer
default:1280

Output video height in pixels

Required range: 1 <= x <= 3840
Example:

1280

fps
integer
default:30

Frames per second for the output video

Required range: 1 <= x <= 60
Example:

30

durationInFrames
integer
default:240

Total number of frames to render. At 30 fps, 240 frames = 8 seconds.

Required range: 1 <= x <= 1800
Example:

240

codec
enum<string>
default:h264

Video codec for the output file

Available options:
h264,
h265,
vp8,
vp9
Example:

"h264"

Response

Render task triggered successfully. Use the returned runId with GET /api/tasks/runs to poll for completion.

status
enum<string>
required

Indicates the render task has been triggered and is processing

Available options:
processing
runId
string
required

The Trigger.dev run ID for the render task. Use this with GET /api/tasks/runs to check the status and retrieve the rendered video URL when complete.

Example:

"run_abc123def456"