Eranol LogoEranol
BlogCommunityDocumentationPricingSign In

General

OverviewGet Started

Universal

Add IntroAdd OutroAudio to VideoBackground AudioCaptions ApiComposeConcatConvert a video file to MP4Convert Audio to Mp3Convert Audio to wavConvert to JPGConvert to WebMConvert to WebPDenoiseExtract audio track from a videoExtract images from a videoGenerate a GIF from a videoHighlightsImageMergeNotifyOverlayProgress BarReframeRemove SilenceThumbnailTikTokTrimVerifyWatermarkZoom

General

DeleteImage StatusStatusTikTok StatusFFmpeg Results

Need help?

Contact Support

Merge

POST

Video merging api with images

Guide

Overview

Video merging api with images

Video Tutorial

Example Request Bodies

Default

{
  "width": 1280,
  "height": 720,
  "images": [
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    }
  ],
  "audio_url": "https://example.com/xY9BCIBv5iBWPFJb9e-ai_tmpsvdc8waw.wav",
  "audio_mode": "video_length",
  "transition": "fade",
  "bg_audio_url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
  "bg_audio_volume": 0.2
}

Example Response

[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Endpoint

Send your requests to the following URL using the specified HTTP method.

POST https://eranol.com/api/v1/ffmpeg/merge

Request Body

Send the following JSON payload in the request body. Adjust the values to match your use case.

json
{
  "width": 1280,
  "height": 720,
  "images": [
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=1",
      "duration": 3
    },
    {
      "url": "https://picsum.photos/1920/1080.jpg?random=2",
      "duration": 3
    }
  ],
  "audio_url": "https://example.com/xY9BCIBv5iBWPFJb9e-ai_tmpsvdc8waw.wav",
  "audio_mode": "video_length",
  "transition": "fade",
  "bg_audio_url": "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
  "bg_audio_volume": 0.2
}

Parameters

All available options for this endpoint. Required parameters are marked accordingly.

ParameterTypeDefaultDescription
imagesarrayrequiredList of image slides
images[].urlstringrequiredImage URL (jpg, png, webp, gif)
images[].durationfloatrequiredDisplay duration in seconds
audio_urlstringrequiredMain audio file URL (mp3, wav, ogg, flac, aac) — plays at 100% volume
bg_audio_urlstringnullOptional background music URL — mixed under the main audio
bg_audio_volumefloat0.2Background music volume (0.0–1.0). Default 0.2 = 20%
widthint1280Output width (16-7680)
heightint720Output height (16-4320)
fpsint24Frames per second (1-120)
fitstringcontaincontain (letterbox) or cover (crop to fill)
transitionstringnonenone (hard cut) or fade (dissolve)
fade_secsfloat0.5Fade duration (only when transition=fade)
video_codecstringlibx264Video encoder
audio_codecstringaacAudio encoder
formatstringmp4Output container format
audio_modestringshortestshortest or video_length

Example Request

Use the following cURL command to make a request to this API endpoint. Replace YOUR_API_KEY with your actual API key from the dashboard.

bash
curl -X POST "https://eranol.com/api/v1/ffmpeg/merge" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"width":1280,"height":720,"images":[{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=1","duration":3},{"url":"https://picsum.photos/1920/1080.jpg?random=2","duration":3}],"audio_url":"https://example.com/xY9BCIBv5iBWPFJb9e-ai_tmpsvdc8waw.wav","audio_mode":"video_length","transition":"fade","bg_audio_url":"https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3","bg_audio_volume":0.2}'

Example Response

Below is an example of a successful JSON response from this endpoint.

json
[
  {
    "job_id": "1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status": "pending",
    "message": "Job created. Poll status_url for progress.",
    "result_url": "https://eranol.com/api/v1/ffmpeg/result/1406c589-a1f4-45d5-8745-aae07bc4de38",
    "status_url": "https://eranol.com/api/v1/ffmpeg/status/1406c589-a1f4-45d5-8745-aae07bc4de38"
  }
]

Response Status

A successful request will return one of the following HTTP status codes.

200 OKRequest was successful and data is returned in the response body.
201 CreatedResource was successfully created.
401 UnauthorizedMissing or invalid API key.
429 Too Many RequestsRate limit exceeded. Try again later.