---
updatedAt: 2026-08-13T11:04:20.000Z
agentTools:
  projectIndex: https://docs.picsart.io/llms.txt
---

# Create a Video highlight

Create a highlights video from the original one. This picks highlight clips and concatenates them into one output video.


<br />

<Tabs>
  <Tab title="Limitations">
    * Supported source video formats are WEBM, MP4 and MOV.
    * The input video file cannot be bigger than 100MB.
    * The maximum resolution at the input should not be bigger than 1920x1080.
  </Tab>

  <Tab title="Getting the Result">
    This is an asynchronous process. Use the provided transaction identifier to pull the result with [Get the Video result](https://docs.picsart.io/reference/video-getresult).
  </Tab>

  <Tab title="Authorization">
    Accessing our powerful API requires an API key. Make sure it's included in your request header **X-Picsart-API-Key** for smooth authorization.
  </Tab>
</Tabs>

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "version": "1.0",
    "title": "Picsart Programmable Video APIs",
    "description": "[Official technical documentation portal](https://docs.picsart.io/)\n[Developer Guidelines](https://picsart.io/terms)\n"
  },
  "servers": [
    {
      "url": "https://video-api.picsart.io/v1",
      "description": "Production"
    }
  ],
  "paths": {
    "/concat/highlights": {
      "summary": "Create a Video highlight",
      "post": {
        "operationId": "video-concat-highlights",
        "description": "Create a highlights video from the original one. This picks highlight clips and concatenates them into one output video.\n",
        "tags": [
          "Edit"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/VideoParameters"
                  },
                  {
                    "$ref": "#/components/schemas/ConcatSegmentsParameters"
                  },
                  {
                    "$ref": "#/components/schemas/ExportParameters"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "202": {
            "$ref": "#/components/responses/202"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "402": {
            "$ref": "#/components/responses/402"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "405": {
            "$ref": "#/components/responses/405"
          },
          "413": {
            "$ref": "#/components/responses/413"
          },
          "415": {
            "$ref": "#/components/responses/415"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "431": {
            "$ref": "#/components/responses/431"
          },
          "500": {
            "$ref": "#/components/responses/500"
          },
          "503": {
            "$ref": "#/components/responses/503"
          },
          "529": {
            "$ref": "#/components/responses/529"
          }
        }
      }
    }
  },
  "security": [
    {
      "apiKey": []
    }
  ],
  "components": {
    "schemas": {
      "VideoParameters": {
        "type": "object",
        "properties": {
          "video_url": {
            "type": "string",
            "description": "Source video URL.",
            "maxLength": 2083,
            "minLength": 1,
            "format": "uri"
          }
        }
      },
      "ExportParameters": {
        "type": "object",
        "properties": {
          "export": {
            "type": "object",
            "properties": {
              "format": {
                "type": "string",
                "default": "MP4",
                "enum": [
                  "MOV",
                  "MP4",
                  "WEBM",
                  "GIF"
                ],
                "description": "Optionally select one of the output video formats (MP4 is chosen if left blank). Container options are as follows\n  * MOV\n  * MP4\n  * WEBM\n  * GIF\n"
              },
              "frame_rate": {
                "type": "integer",
                "default": 30,
                "minimum": 1,
                "maximum": 60,
                "description": "The output video frame rate."
              },
              "bitrate": {
                "type": "integer",
                "minimum": 1,
                "maximum": 10000,
                "description": "The output video bitrate in kb/s. Leave empty to set automatically and optimize accordingly."
              }
            },
            "default": {
              "format": "MP4",
              "frame_rate": 30
            }
          }
        }
      },
      "ConcatSegmentsParameters": {
        "type": "object",
        "properties": {
          "trim_segments": {
            "type": "array",
            "description": "List of segments to combine/merge.",
            "items": {
              "type": "object",
              "properties": {
                "start": {
                  "type": "integer",
                  "default": 0,
                  "minimum": 0,
                  "nullable": false,
                  "description": "The start time of the segment in milliseconds."
                },
                "end": {
                  "type": "integer",
                  "minimum": 1,
                  "nullable": false,
                  "description": "The end time of the segment in milliseconds."
                },
                "transition": {
                  "type": "string",
                  "enum": [
                    "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"
                  ],
                  "default": "none",
                  "nullable": true,
                  "description": "The transition between segments."
                }
              },
              "required": [
                "start",
                "end"
              ]
            },
            "minItems": 2,
            "maxItems": 10
          }
        }
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string"
          },
          "detail": {
            "type": "string"
          }
        },
        "required": [
          "detail"
        ]
      },
      "401_Error": {
        "type": "object",
        "properties": {
          "code": {
            "type": "integer",
            "example": 401
          },
          "message": {
            "type": "string",
            "example": "Unauthorized"
          },
          "detail": {
            "type": "string"
          }
        },
        "required": [
          "detail"
        ]
      }
    },
    "responses": {
      "202": {
        "description": "Request successfully accepted for an asynchronous transformation.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "transaction_id": {
                  "type": "string",
                  "nullable": true
                },
                "status": {
                  "type": "string",
                  "enum": [
                    "success",
                    "error",
                    "processing",
                    "queued"
                  ],
                  "nullable": false
                }
              }
            },
            "example": {
              "value": {
                "transaction_id": "931aed0a-5efd-4b62-9712-069b7147eec5",
                "status": "processing"
              }
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "400": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "401": {
        "description": "Unauthorized",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/401_Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "402": {
        "description": "Payment Required",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "403": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "404": {
        "description": "Not Found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "405": {
        "description": "Method Not Allowed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "413": {
        "description": "Request Entity Too Large",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "415": {
        "description": "Unsupported Media Type",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "429": {
        "description": "Too Many Requests",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "431": {
        "description": "Request Header Fields Too Large",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "500": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "503": {
        "description": "Service Unavailable",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      },
      "529": {
        "description": "Overloaded. The model provider is overloaded and could not complete this request. Please retry shortly, or switch to a different model.\n",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        },
        "headers": {
          "X-Picsart-Correlation-Id": {
            "schema": {
              "type": "string"
            },
            "description": "The id which will help for troubleshooting request chain in the system."
          },
          "X-Picsart-Ratelimit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The number of available calls within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Limit": {
            "schema": {
              "type": "integer"
            },
            "description": "The total number of requests that can be done within the timeframe. See the X-Picsart-Ratelimit-Reset-Time."
          },
          "X-Picsart-Ratelimit-Reset-Time": {
            "schema": {
              "type": "integer"
            },
            "description": "The time when the used request count resets and the number of available calls gets equal to the total number."
          },
          "X-Picsart-Credit-Available": {
            "schema": {
              "type": "integer"
            },
            "description": "The remaining number of the credits on the balance."
          }
        }
      }
    },
    "securitySchemes": {
      "apiKey": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Picsart-API-Key"
      }
    }
  }
}
```