{
  "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.net/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": "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": "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."
      }
    }
  ]
}