{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/auphonic/main/json-schema/auphonic-multi-input-file-request-schema.json",
  "title": "MultiInputFileRequest",
  "description": "A multitrack track, intro, outro, or insert file.\n**Use `type: multitrack` for each individual audio track** in a multitrack production.\nSee the [intro/outro documentation](https://auphonic.com/help/api/details.html#adding-intro-and-outro) for details on intros/outros.\n",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/auphonic-openapi.yaml#/components/schemas/MultiInputFileRequest",
  "type": "object",
  "required": [
    "type"
  ],
  "properties": {
    "type": {
      "type": "string",
      "description": "**Use `multitrack` to add an audio track** to the multitrack mix (e.g. a speaker microphone or music track).\nintro/outro: played before/after main audio (see [intro/outro documentation](https://auphonic.com/help/api/details.html#adding-intro-and-outro)).\ninsert: inserted at offset position.\n",
      "enum": [
        "intro",
        "outro",
        "insert",
        "multitrack"
      ]
    },
    "id": {
      "type": "string",
      "description": "Identifier for the track. Used as form field name for direct file upload, and as a readable label for multitrack tracks."
    },
    "input_file": {
      "type": "string",
      "description": "Filename on external service or HTTP URL"
    },
    "service": {
      "type": "string",
      "description": "UUID of external service for the input file"
    },
    "offset": {
      "type": "number",
      "description": "Offset in seconds. For multitrack: when the track starts (0 = aligned with first track). For intro: overlap with next audio. For outro: overlap with previous audio. For insert: position in main audio file."
    },
    "backforeground": {
      "type": "string",
      "description": "Fore/background method for intro/outro files. Not supported for inserts or\nmultitrack tracks (multitrack uses `algorithms.backforeground` instead).\n`foreground` (default): play at same level as main audio (use this when you\ninsert a fade yourself). `background`: mix the whole intro/outro at a reduced\nlevel. `ducking`: lower the level automatically while main-track speech is active.\n",
      "enum": [
        "foreground",
        "background",
        "ducking"
      ],
      "default": "foreground"
    },
    "backgroundgain": {
      "type": "integer",
      "description": "Background level in dB for intro/outro files. Only valid when\n`backforeground` is `background` or `ducking`; sending it with\n`backforeground: foreground` or on an insert returns a 400 error.\n",
      "enum": [
        -3,
        -6,
        -8,
        -10,
        -12,
        -14,
        -16,
        -18,
        -20,
        -22,
        -24,
        -26
      ],
      "default": -18
    },
    "ducking_fadetime": {
      "type": "integer",
      "description": "Ducking fade in/out length (ms) for intro/outro files. Only valid when\n`backforeground` is `ducking`; sending it with any other `backforeground`\nvalue or on an insert returns a 400 error.\n",
      "enum": [
        125,
        250,
        375,
        500,
        750,
        1000,
        1500,
        2000
      ],
      "default": 500
    },
    "algorithms": {
      "$ref": "#/$defs/TrackAlgorithms"
    }
  },
  "$defs": {
    "Segment": {
      "type": "object",
      "description": "A segment defines unique noise reduction settings for a specific time range of the audio.\nSegments must be contiguous: no gaps or overlaps, and each segment's start must equal the previous segment's stop.\n",
      "required": [
        "start",
        "stop"
      ],
      "properties": {
        "start": {
          "type": "number",
          "description": "Segment start time in seconds (must be >= 0)"
        },
        "stop": {
          "type": "number",
          "description": "Segment end time in seconds (must be > start)"
        },
        "denoisemethod": {
          "type": "string",
          "description": "Noise reduction method for this segment. speech: removes everything except speech. music: preserves speech/music/effects, removes noise. classic: classic noise reduction. off: disable noise reduction.",
          "enum": [
            "speech",
            "music",
            "classic",
            "off"
          ]
        },
        "denoiseamount": {
          "type": "integer",
          "description": "Noise reduction amount in dB for this segment (0=full/auto, -1=off). Available for speech, music, classic.",
          "enum": [
            0,
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "deverbamount": {
          "type": "integer",
          "description": "Reverb reduction amount in dB for this segment (0=full/auto, -1=off). Available for speech and music methods.",
          "enum": [
            0,
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "debreathamount": {
          "type": "integer",
          "description": "Breath reduction amount in dB for this segment (-1=off). Available for speech method only.",
          "enum": [
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "filtermethod": {
          "type": "string",
          "description": "Filter method for this segment. Set to 'off' to disable filtering for this segment.",
          "enum": [
            "hipfilter",
            "autoeq",
            "bwe",
            "studiovoice",
            "off"
          ]
        }
      }
    },
    "TrackAlgorithms": {
      "type": [
        "object",
        "null"
      ],
      "description": "Per-track audio processing algorithm parameters for multitrack productions.\n",
      "properties": {
        "filtering": {
          "type": "boolean",
          "description": "Enable adaptive filtering",
          "default": true
        },
        "filtermethod": {
          "type": "string",
          "description": "Filter method",
          "enum": [
            "hipfilter",
            "autoeq",
            "bwe",
            "studiovoice"
          ],
          "default": "hipfilter"
        },
        "denoise": {
          "type": "boolean",
          "description": "Enable noise and hum reduction. Classifies regions with different background noises and automatically removes noise and hum.",
          "default": false
        },
        "denoisemethod": {
          "type": "string",
          "description": "Denoise method for per-track noise reduction",
          "enum": [
            "classic",
            "static",
            "dynamic",
            "speech_isolation"
          ],
          "default": "classic"
        },
        "denoiseamount": {
          "type": "integer",
          "description": "Noise reduction amount in dB (0=auto, -1=off, 3-100)",
          "default": 0,
          "enum": [
            0,
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "deverbamount": {
          "type": "integer",
          "description": "Reverb reduction amount in dB (0=full 100 dB, -1=off, 3-100). Requires denoisemethod static, dynamic or speech_isolation.",
          "default": 0,
          "enum": [
            0,
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "debreathamount": {
          "type": "integer",
          "description": "Breath reduction amount in dB (-1=off, 3-100). Requires denoisemethod dynamic or speech_isolation.",
          "default": -1,
          "enum": [
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            36,
            100
          ]
        },
        "dehum": {
          "type": "integer",
          "description": "Hum reduction base frequency (0=auto, 50 or 60 Hz). Used with denoisemethod classic.",
          "enum": [
            0,
            50,
            60
          ],
          "default": 0
        },
        "dehumamount": {
          "type": "integer",
          "description": "Hum reduction amount in dB (0=auto, -1=off, 3-100). Used with denoisemethod classic.",
          "default": 0,
          "enum": [
            0,
            -1,
            3,
            6,
            9,
            12,
            15,
            18,
            24,
            30,
            100
          ]
        },
        "backforeground": {
          "type": "string",
          "description": "Fore/background classification for this track",
          "enum": [
            "auto",
            "foreground",
            "background",
            "unchanged",
            "ducking"
          ],
          "default": "auto"
        },
        "backgroundgain": {
          "type": "number",
          "description": "Background gain in dB (default: -18). Applied when track is set to background.",
          "default": -18,
          "enum": [
            -3,
            -6,
            -8,
            -10,
            -12,
            -14,
            -16,
            -18,
            -20,
            -22,
            -24,
            -26
          ]
        },
        "ducking_fadetime": {
          "type": "number",
          "description": "Ducking fade time in ms (default: 500). Applied when backforeground is ducking.",
          "default": 500,
          "enum": [
            125,
            250,
            375,
            500,
            750,
            1000,
            1500,
            2000
          ]
        },
        "loop_trim": {
          "type": "boolean",
          "description": "Automatically loop (lengthen) or trim (shorten) this track to match the length of the\nlongest track that does not have `loop_trim` enabled. Useful, for example, to loop a\nbackground music track so it covers the entire length of the speech track. If every\ntrack has `loop_trim` enabled, the longest track is used as the reference instead.\n",
          "default": false
        },
        "gain": {
          "type": "number",
          "description": "Gain adjustment in dB",
          "default": 0,
          "enum": [
            -30,
            -23,
            -18,
            -15,
            -12,
            -8,
            -6,
            -5,
            -4,
            -3,
            -2,
            0,
            2,
            3,
            4,
            5,
            6
          ]
        },
        "levelerstrength": {
          "type": "integer",
          "description": "Leveler strength (0-100)",
          "default": 100,
          "enum": [
            0,
            10,
            20,
            30,
            40,
            50,
            60,
            70,
            80,
            90,
            100
          ]
        },
        "compressor": {
          "type": "string",
          "description": "Compressor",
          "enum": [
            "auto",
            "soft",
            "medium",
            "hard",
            "off"
          ],
          "default": "auto"
        },
        "pan": {
          "type": "string",
          "description": "Stereo panning",
          "enum": [
            "L100",
            "L75",
            "L50",
            "L25",
            "L20",
            "L15",
            "L10",
            "L05",
            "C",
            "R05",
            "R10",
            "R15",
            "R20",
            "R25",
            "R50",
            "R75",
            "R100"
          ]
        },
        "msclassifier": {
          "type": "string",
          "description": "MusicSpeech classifier — set to speech or music to override automatic classification",
          "enum": [
            "on",
            "speech",
            "music"
          ],
          "default": "on"
        },
        "segments": {
          "type": "array",
          "description": "Denoise segments with per-segment settings. Allows applying different noise reduction\nsettings to specific parts of the track. Segments must be contiguous.\nRequires `denoise: true` to take effect. Segment times are relative to the track file.\n",
          "items": {
            "$ref": "#/$defs/Segment"
          }
        }
      }
    }
  }
}