Skip to main content
ArtEmotion
Video

Auto Subtitle

Credit-based pricing. Supports reference video.

Output
video

Inputs

  • Reference video (required)

Example prompt

Upload a video to auto-generate styled subtitles burned directly into the footage
Try this prompt →
LLM-ready

API & LLM schema

Exact request contract for this model. Agents can fetch it from /api/v1/models?id=fal-ai/workflow-utilities/auto-subtitle.

POST/api/v1/generate22 fields · 2 required
FieldTypeRequirementContract
model_idconstantRequiredArtEmotion model identifier.
extraobjectOptionalModel-specific settings may also be nested here.
max_creditsnumberOptionalReject before submission if the estimated list price exceeds this cap. · Range: 1–…
webhook_urlstringOptionalFormat: uri
webhook_secretstringOptionalOptional model input.
folder_idstringOptionalOptional model input.
promptstringOptionalOptional model input.
positionstringOptionalVertical position of subtitles · Allowed: top, center, bottom · Default: bottom
font_namestringOptionalAny Google Font name from fonts.google.com (e.g., 'Montserrat', 'Poppins', 'BBH Sans Hegarty') · Default: Montserrat
background_colorstringOptionalBackground color behind text ('none' or 'transparent' for no background) · Allowed: black, white, red, green, blue, yellow, orange, purple, pink, brown, gray, cyan, magenta, none, transparent · Default: none
background_opacitynumberOptionalBackground opacity (0.0 = fully transparent, 1.0 = fully opaque) · Default: 0 · Range: 0–1
font_colorstringOptionalSubtitle text color for non-active words · Allowed: white, black, red, green, blue, yellow, orange, purple, pink, brown, gray, cyan, magenta · Default: white
languagestringOptionalLanguage code for transcription (e.g., 'en', 'es', 'fr', 'de', 'it', 'pt', 'nl', 'ja', 'zh', 'ko') or 3-letter ISO code (e.g., 'eng', 'spa', 'fra') · Default: en
y_offsetnumberOptionalVertical offset in pixels (positive = move down, negative = move up) · Default: 75 · Range: -200–200
stroke_colorstringOptionalText stroke/outline color · Allowed: black, white, red, green, blue, yellow, orange, purple, pink, brown, gray, cyan, magenta · Default: black
words_per_subtitlenumberOptionalMaximum number of words per subtitle segment. Use 1 for single-word display, 2-3 for short phrases, or 8-12 for full sentences. · Default: 3 · Range: 1–12
enable_animationbooleanOptionalEnable animation effects for subtitles (bounce style entrance) · Default: true
stroke_widthnumberOptionalText stroke/outline width in pixels (0 for no stroke) · Default: 3 · Range: 0–10
font_weightstringOptionalFont weight (TikTok style typically uses bold or black) · Allowed: normal, bold, black · Default: bold
font_sizenumberOptionalFont size for subtitles (TikTok style uses larger text) · Default: 100 · Range: 20–150
highlight_colorstringOptionalColor for the currently speaking word (karaoke-style highlight) · Allowed: white, black, red, green, blue, yellow, orange, purple, pink, brown, gray, cyan, magenta · Default: purple
video_urlstringRequiredFormat: uri
Minimal request example
{
  "model_id": "fal-ai/workflow-utilities/auto-subtitle",
  "video_url": "https://example.com/video"
}
Raw JSON Schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://www.artemotion.ai/api/v1/models?id=fal-ai%2Fworkflow-utilities%2Fauto-subtitle",
  "title": "Auto Subtitle generation request",
  "description": "Request body accepted by POST /api/v1/generate for fal-ai/workflow-utilities/auto-subtitle.",
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "const": "fal-ai/workflow-utilities/auto-subtitle",
      "description": "ArtEmotion model identifier."
    },
    "extra": {
      "type": "object",
      "additionalProperties": true,
      "description": "Model-specific settings may also be nested here."
    },
    "max_credits": {
      "type": "number",
      "minimum": 1,
      "description": "Reject before submission if the estimated list price exceeds this cap."
    },
    "webhook_url": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048
    },
    "webhook_secret": {
      "type": "string",
      "maxLength": 512
    },
    "folder_id": {
      "type": "string"
    },
    "prompt": {
      "type": "string"
    },
    "position": {
      "title": "Position",
      "description": "Vertical position of subtitles",
      "default": "bottom",
      "type": "string",
      "enum": [
        "top",
        "center",
        "bottom"
      ]
    },
    "font_name": {
      "title": "Font Name",
      "description": "Any Google Font name from fonts.google.com (e.g., 'Montserrat', 'Poppins', 'BBH Sans Hegarty')",
      "default": "Montserrat",
      "type": "string"
    },
    "background_color": {
      "title": "Background Color",
      "description": "Background color behind text ('none' or 'transparent' for no background)",
      "default": "none",
      "type": "string",
      "enum": [
        "black",
        "white",
        "red",
        "green",
        "blue",
        "yellow",
        "orange",
        "purple",
        "pink",
        "brown",
        "gray",
        "cyan",
        "magenta",
        "none",
        "transparent"
      ]
    },
    "background_opacity": {
      "title": "Background Opacity",
      "description": "Background opacity (0.0 = fully transparent, 1.0 = fully opaque)",
      "default": 0,
      "type": "number",
      "minimum": 0,
      "maximum": 1
    },
    "font_color": {
      "title": "Font Color",
      "description": "Subtitle text color for non-active words",
      "default": "white",
      "type": "string",
      "enum": [
        "white",
        "black",
        "red",
        "green",
        "blue",
        "yellow",
        "orange",
        "purple",
        "pink",
        "brown",
        "gray",
        "cyan",
        "magenta"
      ]
    },
    "language": {
      "title": "Language",
      "description": "Language code for transcription (e.g., 'en', 'es', 'fr', 'de', 'it', 'pt', 'nl', 'ja', 'zh', 'ko') or 3-letter ISO code (e.g., 'eng', 'spa', 'fra')",
      "default": "en",
      "type": "string"
    },
    "y_offset": {
      "title": "Y Offset",
      "description": "Vertical offset in pixels (positive = move down, negative = move up)",
      "default": 75,
      "type": "number",
      "minimum": -200,
      "maximum": 200,
      "multipleOf": 1
    },
    "stroke_color": {
      "title": "Stroke Color",
      "description": "Text stroke/outline color",
      "default": "black",
      "type": "string",
      "enum": [
        "black",
        "white",
        "red",
        "green",
        "blue",
        "yellow",
        "orange",
        "purple",
        "pink",
        "brown",
        "gray",
        "cyan",
        "magenta"
      ]
    },
    "words_per_subtitle": {
      "title": "Words Per Subtitle",
      "description": "Maximum number of words per subtitle segment. Use 1 for single-word display, 2-3 for short phrases, or 8-12 for full sentences.",
      "default": 3,
      "type": "number",
      "minimum": 1,
      "maximum": 12,
      "multipleOf": 1
    },
    "enable_animation": {
      "title": "Enable Animation",
      "description": "Enable animation effects for subtitles (bounce style entrance)",
      "default": true,
      "type": "boolean"
    },
    "stroke_width": {
      "title": "Stroke Width",
      "description": "Text stroke/outline width in pixels (0 for no stroke)",
      "default": 3,
      "type": "number",
      "minimum": 0,
      "maximum": 10,
      "multipleOf": 1
    },
    "font_weight": {
      "title": "Font Weight",
      "description": "Font weight (TikTok style typically uses bold or black)",
      "default": "bold",
      "type": "string",
      "enum": [
        "normal",
        "bold",
        "black"
      ]
    },
    "font_size": {
      "title": "Font Size",
      "description": "Font size for subtitles (TikTok style uses larger text)",
      "default": 100,
      "type": "number",
      "minimum": 20,
      "maximum": 150,
      "multipleOf": 1
    },
    "highlight_color": {
      "title": "Highlight Color",
      "description": "Color for the currently speaking word (karaoke-style highlight)",
      "default": "purple",
      "type": "string",
      "enum": [
        "white",
        "black",
        "red",
        "green",
        "blue",
        "yellow",
        "orange",
        "purple",
        "pink",
        "brown",
        "gray",
        "cyan",
        "magenta"
      ]
    },
    "video_url": {
      "type": "string",
      "format": "uri"
    }
  },
  "required": [
    "model_id",
    "video_url"
  ],
  "additionalProperties": false
}

FAQ

How much does Auto Subtitle cost on ArtEmotion?

Credit-based pricing. You pay in ArtEmotion credits — every plan and top-up converts USD to credits at a fixed rate.

Do I get my credits back if Auto Subtitle fails?

Yes — failed generations are never charged. The credits are released back to your balance automatically.

Can I call Auto Subtitle from the API?

Yes. Use POST /api/v1/generate with model_id: "fal-ai/workflow-utilities/auto-subtitle". See the API reference for the full schema.

Where are my generations stored?

Every output is saved to your personal Library. You can export or delete everything any time from Privacy & deletion.

Ready to generate with Auto Subtitle?

Start now →

No commitment. New accounts get 50 free credits on signup. See pricing.