---
title: "Concatenate Videos and Images"
method: POST
path: "/concat"
tags: ["Edit"]
---

# Concatenate Videos and Images

`POST /concat`

## Request

- Base URL: `https://video-api.picsart.io/v1`
- URL: `https://video-api.picsart.io/v1/concat`
- Auth: API key in header `X-Picsart-API-Key`

Concatenate several videos clips and images with transitions into one timeline. Helpful when adding intro/outro- or creating slideshows.

## Request body

- object
  - `items` object[]: List of videos and images to combine into a slideshow.
    - `video_url` string, uri, nullable: Source video URL. (Use either image_url or video_url.)
    - `volume` integer, nullable: Control the video volume. Adjust from 0 to 100. 0 will mute the video completely and 100 will have it at max.
    - `image_url` string, uri, nullable: Source image URL. (Use either image_url or video_url.)
    - `scale` 'fit' | 'fill', nullable: Fit is where the longer side (width/height) fits the video canvas (e.g. see the width and height params). Fill is where the shorter side fits the background. Fit is the default.
    - `duration` integer, nullable: Duration of the image in milliseconds. Applies only if the image_url is provided.
    - `transition` 'none' | 'fade' | 'zoom_in' | 'zoom_out' | 'spin' | 'fly_in_from_left' | 'fly_in_from_right' | 'fly_in_from_top' | 'fly_in_from_bottom' | 'fly_out_to_left' | 'fly_out_to_right' | 'fly_out_to_bottom' | 'fly_out_to_top'
  - `width` integer, nullable: Width of the output video canvas. Unit is px.
  - `height` integer, nullable: Height of the output video canvas. Unit is px.
  - `scale` 'fit' | 'fill', nullable: Fit is where the longer side fits the background. Fill is where the shorter side fits. Options are as follows: * fit * fill
  - `bg_audio_url` string, uri, nullable: Background audio/sound URL.
  - `bg_audio_repeat` boolean, nullable: Use true to repeat the audion in the background for the whole video duration or false if you want to play the audio only once.
  - `bg_audio_volume` integer, nullable: Control the audio volume. Adjust from 0 to 100. 0 will mute the audio completely and 100 will have it at max.
  - `export` object
    - `format` 'MOV' | 'MP4' | 'WEBM' | 'GIF': Optionally select one of the output video formats (MP4 is chosen if left blank). Container options are as follows * MOV * MP4 * WEBM * GIF
    - `frame_rate` integer: The output video frame rate.
    - `bitrate` integer: The output video bitrate in kb/s. Leave empty to set automatically and optimize accordingly.

## Response `202`

Request successfully accepted for an asynchronous transformation.

- object
  - `transaction_id` string, nullable
  - `status` 'success' | 'error' | 'processing' | 'queued'

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `402`: Payment Required
- `403`: Forbidden
- `404`: Not Found
- `405`: Method Not Allowed
- `413`: Request Entity Too Large
- `415`: Unsupported Media Type
- `429`: Too Many Requests
- `431`: Request Header Fields Too Large
- `500`: Internal Server Error
- `503`: Service Unavailable
- `529`: Overloaded. The model provider is overloaded and could not complete this request. Please retry shortly, or switch to a different model.

---

[API](https://skmtc.dev/picsart/apis/picsart-programmable-video-apis.md) - [All operations](https://skmtc.dev/picsart/apis/picsart-programmable-video-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/picsart/apis/picsart-programmable-video-apis/revisions/e3f1d0bea43b?raw)
