Templates

Roblox rant

Send a rant script and Vsub splits it into sentences, narrates each one with the high pitch Roblox voice and captions it over gameplay. Creation returns immediately, so poll the video or listen with webhooks.

POST/v1/roblox-videos

Create a Roblox rant video

Starts a new video, credits are charged the same way as videos created in the app.
Body
scriptrequired
string
The rant to narrate. Split into one item per sentence, exactly like the Import script button in the app, so each sentence gets its own line of narration and captions. Up to 5,000 characters.
voiceId
string
ElevenLabs voice to narrate with. Defaults to Adam. List the ids with Voices.
default: pNInz6obpgDQGcFmaJgB
voicePitch
number, 50 to 180
Pitch of the narration as a percentage of the voice’s natural pitch. The high default is what gives the template its Roblox sound, drop it towards 100 for a normal voice.
default: 140
voiceStyle
object
Fine tunes the narration. Every field is a percentage, matching the voice sliders in the editor. Pass only the ones you want to change, see voiceStyle fields.
captionWordLimit
number, 1 to 10
How many words appear on screen at a time.
default: 6
autoAddEmoji
boolean
Sprinkles emojis into the captions automatically.
default: true
render
object
Export the mp4 as soon as the narration is ready, taking the same fields as the render endpoint, see render fields. Pass an empty object to accept the defaults. Left out, the video stays an editable project you can render later. Rendering charges export credits and requires a paid plan.
webhookUrl
string
HTTPS callback fired once the video reaches a terminal status. See Webhooks for details.
voiceStyle fields
voiceStyle.stability
number, 0 to 100
Lower values let the voice vary more between takes, higher values keep it flat and predictable.
default: 100
voiceStyle.similarityBoost
number, 0 to 100
How closely the output sticks to the original voice.
default: 75
voiceStyle.style
number, 0 to 100
Style exaggeration. Higher values push the delivery harder, at some cost to stability.
default: 0
voiceStyle.speed
number, 70 to 120
Speaking rate as a percentage of the voice’s natural pace.
default: 100
render fields
render.format
"standard" | "greenscreen"
Standard renders the finished video. Green screen drops the background and renders the captions and overlays on a solid green fill, ready to key out in your own editor.
default: standard
render.frameRate
30 | 60
Frames per second. Rendering costs 30 credits per minute of video at 30fps and 60 credits per minute at 60fps.
default: 30
Request
curl -X POST "https://api.vsub.io/v1/roblox-videos" \
  -H "Authorization: Bearer vp_a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90" \
  -H "Content-Type: application/json" \
  -d '{
    "script": "I need to talk about my last game. My teammate quit in the first minute. Then he came back and blamed me.",
    "captionWordLimit": 6,
    "webhookUrl": "https://your-app.example.com/hooks/vsub-video"
  }'
Response 200
{
  "id": "9f0c1d5e-3a1b-4c2f-9d7e-8b1a2c3d4e5f",
  "status": "processing",
  "step": "create-vocal",
  "render": false,
  "createdAt": "2026-08-05T09:20:11.000Z",
  "editorUrl": "https://vsub.io/workspace/editor/9f0c1d5e-3a1b-4c2f-9d7e-8b1a2c3d4e5f"
}

Generation runs in the background. Follow the video with Video status or let a webhook tell you when it's done.