Skip to main content
ArtEmotion
Video

VEED Subtitles

Credit-based pricing. Supports reference video.

Output
video

Inputs

  • Reference video (required)

Example prompt

Upload any video to get professional burned-in subtitles — 28 animated style presets, 100+ languages, 98%+ accuracy
Try this prompt →
LLM-ready

API & LLM schema

Exact request contract for this model. Agents can fetch it from /api/v1/models?id=veed/subtitles.

POST/api/v1/generate17 fields · 3 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.
presetstringRequiredEach style defines fonts, colors, layout, and animation. Two tiers with different pricing: - Dynamic presets (2x multiplier): glass, whisper, glide2, · Allowed: glass, whisper, glide2, fusion, glide, terminal, handwritten, backdrop, backdrop2, simple, plain, beans, corpo, boo, shadeplay, casper, capri, lowkey, vinta, diego, ali, slay, kitty, hustle, karl, sprout, flex, mint, rizz, vegas
translation_languagestringOptionalTranslate subtitles to this language (e.g. 'es-ES', 'fr-FR', 'ja-JP', 'zh-TW'). When set, output subtitles are translated from the source audio language. Leave blank to keep the source language.
languagestringOptionalImproves transcription accuracy, and should match the source audio (not output subtitles). · Allowed: af-ZA, am-ET, ar-AE, ar-BH, ar-DZ, ar-EG, ar-IL, ar-IQ, ar-JO, ar-KW, ar-LB, ar-MA, ar-OM, ar-PS, ar-QA, ar-SA, ar-TN, ast-ES, az-AZ, ba, bas, be-BY, bg-BG, br, bs-BA, ca-ES, ceb-PH, ckb-IQ, cs-CZ, cy-GB, da-DK, de-DE, dyu, el-GR, en-AU, en-GB, en-IN, en-NZ, en-US, eo, es-AR, es-BO, es-CL, es-CO, es-CR, es-DO, es-EC, es-ES, es-GT, es-HN, es-MX, es-NI, es-PA, es-PE, es-PR, es-PY, es-SV, es-US, es-UY, es-VE, et-EE, eu-ES, fa-IR, ff, fi-FI, fil-PH, fo, fr-CA, fr-FR, fy, ga, gd, gl-ES, ha-NG, haw, he-IL, hr-HR, hsb, ht, hu-HU, hy-AM, id-ID, ig, is-IS, it-IT, ja-JP, ja-Latn-JP, jv-ID, ka-GE, kab, kam-KE, kea-CV, kk-KZ, ko-KR, ku, ky-KG, la, lb-LU, lg, lij, ln-CD, lo-LA, lt-LT, luo-KE, lv-LV, mg, mi-NZ, mk-MK, mn-MN, ms-MY, mt-MT, nb-NO, nl-NL, nn, nso-ZA, ny-MW, oc-FR, pl-PL, ps-AF, pt-BR, pt-PT, ro-RO, roh, ru-RU, rw-RW, sah, sk-SK, sl-SI, sm, sn-ZW, so-SO, sq-AL, sr-Latn-RS, sr-RS, srd, ss, su-ID, sv-SE, sw-KE, sw-TZ, tg-TJ, th-TH, tk, tn, tok, ton, tr-TR, ts-ZA, tt, uk-UA, umb-AO, ur-IN, ur-PK, uz-UZ, vi-VN, vro, wo-SN, xh-ZA, yi, yo-NG, yue-Hant-HK, zh, zh-HK, zh-TW, zu-ZA
srt_file_urlstringOptionalUpload or paste a URL to your .srt subtitles file. When provided, transcription is skipped.
srt_contentstringOptionalPaste raw SRT subtitle text. Alternative to srt_file_url. When provided, transcription is skipped.
shadowstringOptionalImproves readability over bright or busy backgrounds. · Allowed: none, min, mid, max
positionstringOptionalVertical placement of static subtitles on screen. · Allowed: top, center, bottom
text_customizationsobjectOptionalOverride the preset's text styling — JSON object with optional 'baseline' (all words) and 'highlighted' (key words) entries, each accepting 'font' (Google Font name), 'weight' (100-900, ≥700 renders bold) and 'color' (hex). E.g. {"baseline":{"font":"Montserrat","weight":700,"color":"#FFFFFF"},"highlighted":{"color":"#FFD700"}}
vocabularyobjectOptionalCustom vocabulary to fix transcription of brand names, products or jargon — JSON array of up to 100 entries, each with 'word' (correct spelling) and 'replaces' (1-20 common misspellings, matched case-insensitively). E.g. [{"word":"VEED","replaces":["veed","V E E D"]}]. Ignored when an SRT source is provided.
video_urlstringRequiredFormat: uri
Minimal request example
{
  "model_id": "veed/subtitles",
  "preset": "glass",
  "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=veed%2Fsubtitles",
  "title": "VEED Subtitles generation request",
  "description": "Request body accepted by POST /api/v1/generate for veed/subtitles.",
  "type": "object",
  "properties": {
    "model_id": {
      "type": "string",
      "const": "veed/subtitles",
      "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"
    },
    "preset": {
      "title": "Preset",
      "description": "Each style defines fonts, colors, layout, and animation. Two tiers with different pricing: - Dynamic presets (2x multiplier): glass, whisper, glide2,",
      "type": "string",
      "enum": [
        "glass",
        "whisper",
        "glide2",
        "fusion",
        "glide",
        "terminal",
        "handwritten",
        "backdrop",
        "backdrop2",
        "simple",
        "plain",
        "beans",
        "corpo",
        "boo",
        "shadeplay",
        "casper",
        "capri",
        "lowkey",
        "vinta",
        "diego",
        "ali",
        "slay",
        "kitty",
        "hustle",
        "karl",
        "sprout",
        "flex",
        "mint",
        "rizz",
        "vegas"
      ]
    },
    "translation_language": {
      "title": "Translation Language",
      "description": "Translate subtitles to this language (e.g. 'es-ES', 'fr-FR', 'ja-JP', 'zh-TW'). When set, output subtitles are translated from the source audio language. Leave blank to keep the source language.",
      "type": "string"
    },
    "language": {
      "title": "Language",
      "description": "Improves transcription accuracy, and should match the source audio (not output subtitles).",
      "type": "string",
      "enum": [
        "af-ZA",
        "am-ET",
        "ar-AE",
        "ar-BH",
        "ar-DZ",
        "ar-EG",
        "ar-IL",
        "ar-IQ",
        "ar-JO",
        "ar-KW",
        "ar-LB",
        "ar-MA",
        "ar-OM",
        "ar-PS",
        "ar-QA",
        "ar-SA",
        "ar-TN",
        "ast-ES",
        "az-AZ",
        "ba",
        "bas",
        "be-BY",
        "bg-BG",
        "br",
        "bs-BA",
        "ca-ES",
        "ceb-PH",
        "ckb-IQ",
        "cs-CZ",
        "cy-GB",
        "da-DK",
        "de-DE",
        "dyu",
        "el-GR",
        "en-AU",
        "en-GB",
        "en-IN",
        "en-NZ",
        "en-US",
        "eo",
        "es-AR",
        "es-BO",
        "es-CL",
        "es-CO",
        "es-CR",
        "es-DO",
        "es-EC",
        "es-ES",
        "es-GT",
        "es-HN",
        "es-MX",
        "es-NI",
        "es-PA",
        "es-PE",
        "es-PR",
        "es-PY",
        "es-SV",
        "es-US",
        "es-UY",
        "es-VE",
        "et-EE",
        "eu-ES",
        "fa-IR",
        "ff",
        "fi-FI",
        "fil-PH",
        "fo",
        "fr-CA",
        "fr-FR",
        "fy",
        "ga",
        "gd",
        "gl-ES",
        "ha-NG",
        "haw",
        "he-IL",
        "hr-HR",
        "hsb",
        "ht",
        "hu-HU",
        "hy-AM",
        "id-ID",
        "ig",
        "is-IS",
        "it-IT",
        "ja-JP",
        "ja-Latn-JP",
        "jv-ID",
        "ka-GE",
        "kab",
        "kam-KE",
        "kea-CV",
        "kk-KZ",
        "ko-KR",
        "ku",
        "ky-KG",
        "la",
        "lb-LU",
        "lg",
        "lij",
        "ln-CD",
        "lo-LA",
        "lt-LT",
        "luo-KE",
        "lv-LV",
        "mg",
        "mi-NZ",
        "mk-MK",
        "mn-MN",
        "ms-MY",
        "mt-MT",
        "nb-NO",
        "nl-NL",
        "nn",
        "nso-ZA",
        "ny-MW",
        "oc-FR",
        "pl-PL",
        "ps-AF",
        "pt-BR",
        "pt-PT",
        "ro-RO",
        "roh",
        "ru-RU",
        "rw-RW",
        "sah",
        "sk-SK",
        "sl-SI",
        "sm",
        "sn-ZW",
        "so-SO",
        "sq-AL",
        "sr-Latn-RS",
        "sr-RS",
        "srd",
        "ss",
        "su-ID",
        "sv-SE",
        "sw-KE",
        "sw-TZ",
        "tg-TJ",
        "th-TH",
        "tk",
        "tn",
        "tok",
        "ton",
        "tr-TR",
        "ts-ZA",
        "tt",
        "uk-UA",
        "umb-AO",
        "ur-IN",
        "ur-PK",
        "uz-UZ",
        "vi-VN",
        "vro",
        "wo-SN",
        "xh-ZA",
        "yi",
        "yo-NG",
        "yue-Hant-HK",
        "zh",
        "zh-HK",
        "zh-TW",
        "zu-ZA"
      ]
    },
    "srt_file_url": {
      "title": "Srt File Url",
      "description": "Upload or paste a URL to your .srt subtitles file. When provided, transcription is skipped.",
      "type": "string"
    },
    "srt_content": {
      "title": "Srt Content",
      "description": "Paste raw SRT subtitle text. Alternative to srt_file_url. When provided, transcription is skipped.",
      "type": "string"
    },
    "shadow": {
      "title": "Shadow",
      "description": "Improves readability over bright or busy backgrounds.",
      "type": "string",
      "enum": [
        "none",
        "min",
        "mid",
        "max"
      ]
    },
    "position": {
      "title": "Position",
      "description": "Vertical placement of static subtitles on screen.",
      "type": "string",
      "enum": [
        "top",
        "center",
        "bottom"
      ]
    },
    "text_customizations": {
      "title": "Text Customizations",
      "description": "Override the preset's text styling — JSON object with optional 'baseline' (all words) and 'highlighted' (key words) entries, each accepting 'font' (Google Font name), 'weight' (100-900, ≥700 renders bold) and 'color' (hex). E.g. {\"baseline\":{\"font\":\"Montserrat\",\"weight\":700,\"color\":\"#FFFFFF\"},\"highlighted\":{\"color\":\"#FFD700\"}}",
      "type": "object",
      "additionalProperties": true
    },
    "vocabulary": {
      "title": "Vocabulary",
      "description": "Custom vocabulary to fix transcription of brand names, products or jargon — JSON array of up to 100 entries, each with 'word' (correct spelling) and 'replaces' (1-20 common misspellings, matched case-insensitively). E.g. [{\"word\":\"VEED\",\"replaces\":[\"veed\",\"V E E D\"]}]. Ignored when an SRT source is provided.",
      "type": "object",
      "additionalProperties": true
    },
    "video_url": {
      "type": "string",
      "format": "uri"
    }
  },
  "required": [
    "model_id",
    "preset",
    "video_url"
  ],
  "additionalProperties": false
}

FAQ

How much does VEED Subtitles 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 VEED Subtitles fails?

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

Can I call VEED Subtitles from the API?

Yes. Use POST /api/v1/generate with model_id: "veed/subtitles". 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 VEED Subtitles?

Start now →

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