{
  "info": {
    "name": "FFMPEG API",
    "description": "Public Postman collection generated from FFMPEG API endpoint metadata. Set the `apiKey` collection variable before sending requests.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "auth": {
    "type": "apikey",
    "apikey": [
      {
        "key": "key",
        "value": "X-API-Key",
        "type": "string"
      },
      {
        "key": "value",
        "value": "{{apiKey}}",
        "type": "string"
      },
      {
        "key": "in",
        "value": "header",
        "type": "string"
      }
    ]
  },
  "variable": [
    {
      "key": "baseUrl",
      "value": "https://ffmpegapi.site/api"
    },
    {
      "key": "apiKey",
      "value": ""
    },
    {
      "key": "jobId",
      "value": "job_abc123"
    }
  ],
  "item": [
    {
      "name": "Image and Audio Merge",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/merge_image_audio",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "merge_image_audio"
          ]
        },
        "description": "Combines one or more image/audio pairs. Each image is shown for the duration of its matching audio file, then the next image is displayed when the next audio begins. JSON requests should use image_urls and audio_urls arrays for multi-pair videos, or legacy image and audio strings for a single pair. Optional image transitions and a default slow zoom effect are supported.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"image_urls\": [\n    \"https://example.com/intro.jpg\",\n    \"https://example.com/chapter-1.jpg\"\n  ],\n  \"audio_urls\": [\n    \"https://example.com/intro.mp3\",\n    \"https://example.com/chapter-1.mp3\"\n  ],\n  \"transition_effect\": \"fade\",\n  \"transition_duration\": 0.75,\n  \"dimensions\": \"1280x720\",\n  \"zoom_effect\": true,\n  \"async\": false\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Video Merge",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/merge_videos",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "merge_videos"
          ]
        },
        "description": "Downloads one or more videos, normalizes them when needed, and concatenates them. Optional audio replacement, output dimensions, subtitle burn-in, and watermark overlay are supported.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_urls\": [\n    \"https://example.com/intro.mp4\",\n    \"https://example.com/main.mp4\"\n  ],\n  \"dimensions\": \"1920x1080\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Neonvideo Merge Videos",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/neonvideo_merge_videos",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "neonvideo_merge_videos"
          ]
        },
        "description": "Downloads one or more videos, normalizes and concatenates them, and can append an outro video that keeps its own audio. Optional audio replacement, output dimensions, subtitle burn-in, and watermark overlay are supported.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_urls\": [\n    \"https://example.com/intro.mp4\",\n    \"https://example.com/main.mp4\"\n  ],\n  \"outro_url\": \"https://example.com/outro.mp4\",\n  \"dimensions\": \"1920x1080\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Video Loop",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/video_loop",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "video_loop"
          ]
        },
        "description": "Repeats one video a fixed number of times, or calculates the loop count needed to match a provided audio track. Optional watermark overlay is supported.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/clip.mp4\",\n  \"number_of_loops\": 3\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Endless Loop",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/endless_loop",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "endless_loop"
          ]
        },
        "description": "Repeats one video until the requested duration in seconds is reached. The final loop is trimmed when the target duration is not an exact multiple of the source video length. Optional watermark overlay is supported.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/clip.mp4\",\n  \"duration\": 1205\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Picture in Picture",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/picture_in_picture",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "picture_in_picture"
          ]
        },
        "description": "Creates a picture-in-picture composition using a main video and an overlay video with configurable position, scale, and audio source.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"main_video_url\": \"https://example.com/main.mp4\",\n  \"pip_video_url\": \"https://example.com/overlay.mp4\",\n  \"position\": \"top-right\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Add Watermark",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/add_watermark",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "add_watermark"
          ]
        },
        "description": "Adds a watermark image to a video with configurable placement and scale.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"watermark_url\": \"https://example.com/logo.png\",\n  \"position\": \"bottom-right\",\n  \"scale\": 0.2\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Add Subtitles",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/add_subtitles",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "add_subtitles"
          ]
        },
        "description": "Downloads a video and an ASS/SSA subtitle file, then burns the subtitles into the output video.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"subtitle_url\": \"https://example.com/subtitles.ass\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Split Audio",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/split_audio",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "split_audio"
          ]
        },
        "description": "Splits an audio file into a requested number of equal-duration parts.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"audio_url\": \"https://example.com/podcast.mp3\",\n  \"parts\": 3\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Split Audio by Segments",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/split_audio_segments",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "split_audio_segments"
          ]
        },
        "description": "Creates audio segments of a specified length in seconds.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"audio_url\": \"https://example.com/podcast.mp3\",\n  \"segment_duration\": 10\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Split Audio by Time",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/split_audio_time",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "split_audio_time"
          ]
        },
        "description": "Returns the audio between start_time and end_time, both in milliseconds.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"audio_url\": \"https://example.com/audio.mp3\",\n  \"start_time\": 1000,\n  \"end_time\": 11000\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Trim Audio",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/trim_audio",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "trim_audio"
          ]
        },
        "description": "Downloads an audio file and trims it to the requested duration, with optional fade-out.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"audio_url\": \"https://example.com/song.mp3\",\n  \"desired_length\": 30,\n  \"fade_duration\": 2\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Trim Video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/trim_video",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "trim_video"
          ]
        },
        "description": "Downloads a video and returns the segment between start_time and end_time in seconds.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"start_time\": 5,\n  \"end_time\": 20\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Split Video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/split_video",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "split_video"
          ]
        },
        "description": "Splits a video at split_at_seconds. If omitted, the split point defaults to half of the video duration.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"split_at_seconds\": 12.5\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Get First Frame Image",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get_first_frame_image",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get_first_frame_image"
          ]
        },
        "description": "Downloads a video and returns an image URL for the first frame.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Get Last Frame Image",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/get_last_frame_image",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "get_last_frame_image"
          ]
        },
        "description": "Downloads a video and returns an image URL for the last frame.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Convert to Vertical",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/convert_to_vertical",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "convert_to_vertical"
          ]
        },
        "description": "Creates a mobile-oriented vertical output and can apply an optional watermark.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/landscape.mp4\",\n  \"watermark_url\": \"https://example.com/logo.png\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "TikTok Portrait Converter",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/convert_to_tiktok_portrait",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "convert_to_tiktok_portrait"
          ]
        },
        "description": "Crops and scales source video into 1080x1920 portrait format, with optional watermark and outro video.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/landscape.mp4\",\n  \"outro_video_url\": \"https://example.com/outro.mp4\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Extract Audio as MP3",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/extract_audio_mp3",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "extract_audio_mp3"
          ]
        },
        "description": "Downloads a video and returns an MP3 audio file.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"bitrate\": \"192k\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Convert Video to GIF",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/convert_video_to_gif",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "convert_video_to_gif"
          ]
        },
        "description": "Downloads a video and creates a GIF. Optional chroma key transparency supports solid-color backgrounds such as green screen.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/clip.mp4\",\n  \"transparent_background\": true,\n  \"chromakey_color\": \"0x00FF00\",\n  \"fps\": 10\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Compress Video",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/compress_video",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "compress_video"
          ]
        },
        "description": "Downloads a video and compresses it to MP4 using quality-first CRF settings by default. Optional max dimensions avoid upscaling and optional target_size_mb uses best-effort bitrate compression for upload limits. Use async=true for large videos; hosted defaults reject inputs over 500 MB and automatically queue known inputs over 100 MB for background processing.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"crf\": 28,\n  \"preset\": \"medium\",\n  \"max_width\": 1280,\n  \"audio_bitrate\": \"128k\",\n  \"async\": true\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "AI Captions",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/videos/add-tiktok-captions",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "videos",
            "add-tiktok-captions"
          ]
        },
        "description": "Extracts audio, transcribes it with word timestamps, and renders styled captions into a video. Also returns caption artifact URLs when available.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"subtitle_style\": \"yellow-bg\",\n  \"position\": \"bottom\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Text Overlay Captions",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/videos/add-text-overlay-captions",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "videos",
            "add-text-overlay-captions"
          ]
        },
        "description": "Displays user-provided text lines over a video, one line every duration_per_line seconds.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"video_url\": \"https://example.com/video.mp4\",\n  \"text\": \"First line\\nSecond line\",\n  \"duration_per_line\": 4\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "YouTube to MP4",
      "request": {
        "method": "POST",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/youtube_to_mp4",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "youtube_to_mp4"
          ]
        },
        "description": "Accepts a standard YouTube watch URL, youtu.be URL, Shorts URL, embed URL, or /v/ URL and returns a downloadable MP4 URL.",
        "body": {
          "mode": "raw",
          "raw": "{\n  \"youtube_url\": \"https://www.youtube.com/watch?v=dQw4w9WgXcQ\"\n}",
          "options": {
            "raw": {
              "language": "json"
            }
          }
        }
      }
    },
    {
      "name": "Job Status",
      "request": {
        "method": "GET",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "url": {
          "raw": "{{baseUrl}}/job/{{jobId}}/status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "job",
            "{{jobId}}",
            "status"
          ]
        },
        "description": "Returns pending, processing, completed, or failed status for a background job submitted with async=true."
      }
    }
  ]
}