{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/auphonic/main/json-schema/auphonic-output-file-request-schema.json",
  "title": "OutputFileRequest",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/auphonic-openapi.yaml#/components/schemas/OutputFileRequest",
  "type": "object",
  "required": [
    "format"
  ],
  "properties": {
    "format": {
      "type": "string",
      "description": "Output format. Audio: mp3, mp3-vbr, aac (M4A/MP4), vorbis (OGG), opus, flac, alac, wav, wav-24bit.\nVideo: video (same format as input), audiogram (waveform video).\nOther: input (original file), descr (production description), stats (processing statistics),\nchaps (chapter marks txt), psc (Podlove Simple Chapters), pod2chaps (Podcasting 2.0 Chapters JSON),\ncut-list (filler/silence cut list), image (cover image), tracks (individual multitrack tracks as zip).\nSpeech recognition: speech (data as json/xml), subtitle (srt/webvtt), transcript (html/txt).\n",
      "enum": [
        "mp3",
        "mp3-vbr",
        "aac",
        "vorbis",
        "opus",
        "flac",
        "alac",
        "wav",
        "wav-24bit",
        "video",
        "audiogram",
        "input",
        "descr",
        "stats",
        "chaps",
        "psc",
        "pod2chaps",
        "cut-list",
        "image",
        "tracks",
        "speech",
        "subtitle",
        "transcript"
      ]
    },
    "bitrate": {
      "type": "integer",
      "description": "Bitrate in kbps (for lossy formats). If not set, the default bitrate for the format is used. Query available bitrates via /api/info/output_files.json."
    },
    "mono_mixdown": {
      "type": "boolean",
      "description": "Create a mono mixdown of the output",
      "default": false
    },
    "split_on_chapters": {
      "type": "boolean",
      "description": "Split the output file on chapter marks",
      "default": false
    },
    "suffix": {
      "type": "string",
      "description": "Suffix added before file extension (e.g. '-small' → 'basename-small.mp3')"
    },
    "ending": {
      "type": "string",
      "description": "File extension override (e.g. 'm4a' for AAC, 'wav.zip' or 'flac.zip' for tracks format, 'ReaperRegions.csv' or 'DaVinciResolve.edl' for cut-list)"
    },
    "filename": {
      "type": "string",
      "description": "Full output filename override (must have correct extension). Takes priority over suffix/ending/output_basename."
    },
    "outgoing_services": {
      "type": "array",
      "description": "UUIDs of outgoing services to send this file to. If not set, all output files are sent to all services.",
      "items": {
        "type": "string"
      }
    },
    "burn_in_subtitles": {
      "allOf": [
        {
          "$ref": "#/$defs/BurnInSubtitles"
        }
      ],
      "description": "Burn subtitles into the video with the given styling. Only applies to the `video`\nformat and requires a speech recognition output on the production. Ignored otherwise.\nReplaces the styling as a whole — omitted properties reset to their defaults rather\nthan merging, so always send the full styling.\n"
    }
  },
  "$defs": {
    "BurnInSubtitles": {
      "type": "object",
      "description": "Styling for subtitles burned into a video output.",
      "properties": {
        "enabled": {
          "type": "boolean",
          "default": false,
          "description": "Burn subtitles into the video."
        },
        "font": {
          "type": "string",
          "default": "default",
          "description": "Font slug. Query the available fonts (and other subtitle option values) via the `burn_in_subtitles` block on video formats in /api/info/output_files.json."
        },
        "font_size": {
          "type": "integer",
          "minimum": 8,
          "maximum": 200,
          "default": 22
        },
        "bold": {
          "type": "boolean",
          "default": false
        },
        "italic": {
          "type": "boolean",
          "default": false
        },
        "underline": {
          "type": "boolean",
          "default": false
        },
        "uppercase": {
          "type": "boolean",
          "default": false,
          "description": "Render all subtitle text in UPPERCASE."
        },
        "color": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "default": "#000000",
          "description": "Base-style accent color as \"#rrggbb\"."
        },
        "highlight_color": {
          "type": "string",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "default": "#dc2626",
          "description": "Active-word color for the color/border/glow word-highlight modes."
        },
        "style_mode": {
          "type": "string",
          "default": "color_bg",
          "enum": [
            "plain",
            "color_outline",
            "white_outline",
            "color_bg",
            "white_bg"
          ]
        },
        "h_align": {
          "type": "string",
          "default": "center",
          "enum": [
            "left",
            "center",
            "right"
          ]
        },
        "v_align": {
          "type": "string",
          "default": "raised_bottom",
          "enum": [
            "top",
            "middle",
            "raised_bottom",
            "bottom"
          ]
        },
        "word_highlight": {
          "type": "string",
          "default": "highlight",
          "enum": [
            "none",
            "karaoke",
            "reveal",
            "highlight",
            "highlight_bold",
            "border",
            "glow"
          ],
          "description": "Per-word effect. border, glow and reveal cannot be combined with an opaque-box\nstyle (color_bg/white_bg) and are rejected with a validation error.\n"
        }
      }
    }
  }
}