Merge Videos

Combine 2-50 video URLs into a single MP4 with optional crossfade or fade transitions. 1 credit per merge.

New: Combine multiple video clips into a single MP4 with a single API call. Supports hard cuts, crossfade, and fade-to-black transitions. All inputs are automatically normalized to the target resolution.

Pricing

OperationCreditsPrice (Pro Yearly)Price (Pro Monthly)
Merge (any transition)1$0.006$0.012

Credits are deducted upfront. Refunded automatically if the merge fails.


Endpoint

POST https://vicsee.com/api/v1/tools/merge-videos

See Authentication for API key setup.

Parameters

ParameterTypeRequiredDescription
videosarrayYesArray of video objects (2-50). Each object has url (string, required) and optional trim object with start/end (numbers, seconds).
transitionstringNo"none" (default) = hard cut. "crossfade" = smooth blend. "fade" = fade through black.
transition_durationnumberNoTransition duration in seconds (0.1-5.0). Default: 0.5. Only used when transition is not "none".
resolutionstringNoOutput resolution as WIDTHxHEIGHT. Default: "1080x1920". All inputs are scaled and padded to fit.

Example Request

curl -X POST https://vicsee.com/api/v1/tools/merge-videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "videos": [
      { "url": "https://example.com/scene1.mp4" },
      { "url": "https://example.com/scene2.mp4" },
      { "url": "https://example.com/scene3.mp4" }
    ],
    "transition": "crossfade",
    "transition_duration": 0.5
  }'

Response

{
  "success": true,
  "data": {
    "id": "task_abc123",
    "model": "merge-videos",
    "status": "completed",
    "output": {
      "url": "https://assets.vicsee.com/vicsee/dew/2026-02-28-xyz/merge.mp4",
      "duration": 15.5,
      "videoCount": 3
    },
    "creditsUsed": 1,
    "creditsRemaining": 499,
    "createdAt": "2026-02-28T12:00:00.000Z"
  }
}

The response returns immediately with the merged video URL — no polling needed. The duration field contains the output video duration in seconds.


Trim Example

Trim each clip before merging — useful when you only need a segment of each video:

curl -X POST https://vicsee.com/api/v1/tools/merge-videos \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "videos": [
      { "url": "https://example.com/intro.mp4", "trim": { "end": 3.0 } },
      { "url": "https://example.com/main.mp4", "trim": { "start": 2.0, "end": 10.0 } },
      { "url": "https://example.com/outro.mp4", "trim": { "start": 1.0 } }
    ]
  }'

Transitions

None (default): Hard cut between clips. Fastest processing — no re-encoding overlap between clips.

Crossfade: Smooth blend where the outgoing clip fades out while the incoming clip fades in simultaneously. Best for scenes that flow together.

Fade: Fade through black — the outgoing clip fades to black, then the incoming clip fades in from black. Best for distinct scene changes.


Limits

ConstraintValue
Minimum videos2
Maximum videos50
Supported formatsMP4, MOV, WebM
Transition duration0.1-5.0 seconds
ResolutionAny (default: 1080x1920)

Errors

CodeHTTPDescription
MISSING_VIDEOS400videos array not provided
TOO_FEW_VIDEOS400Less than 2 videos
TOO_MANY_VIDEOS400More than 50 videos
INVALID_VIDEO_URL400Video URL missing or invalid
INVALID_TRANSITION400Transition not "none", "crossfade", or "fade"
INVALID_TRANSITION_DURATION400Duration not between 0.1 and 5.0
INSUFFICIENT_CREDITS402Not enough credits
MERGE_FAILED500FFmpeg merge failed