POST
/
v1
/
lip-sync
curl --request POST \
  --url https://api.magichour.ai/v1/lip-sync \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Lip Sync video",
  "height": 960,
  "width": 512,
  "start_seconds": 0,
  "end_seconds": 15,
  "max_fps_limit": 12,
  "assets": {
    "audio_file_path": "api-assets/id/1234.mp3",
    "video_source": "file",
    "video_file_path": "api-assets/id/1234.mp4",
    "youtube_url": "<string>"
  }
}'
{
  "id": "clx7uu86w0a5qp55yxz315r6r",
  "estimated_frame_cost": 450
}

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
Body
start_seconds
number
required

The start time of the input video in seconds

Required range: x >= 0
Example:

0

end_seconds
number
required

The end time of the input video in seconds

Required range: x >= 0.1
Example:

15

assets
object
required

Provide the assets for lip-sync. For video, The video_source field determines whether video_file_path or youtube_url field is used

name
string
default:Lip Sync - dateTime

The name of video

Example:

"Lip Sync video"

height
integer

Used to determine the dimensions of the output video.

  • If height is provided, width will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
  • If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.

Note: if the video's original resolution is less than the maximum, the video will not be resized.

See our pricing page for more details.

Required range: x >= 64
Example:

960

width
integer

Used to determine the dimensions of the output video.

  • If width is provided, height will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio.
  • If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.

Note: if the video's original resolution is less than the maximum, the video will not be resized.

See our pricing page for more details.

Required range: x >= 64
Example:

512

max_fps_limit
number

Defines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessary frame usage in scenarios where high FPS is not required.

Required range: x >= 1
Example:

12

Response

200
application/json

Success

id
string
required

Unique ID of the video. This value can be used in the get video project API to fetch additional details such as status

Example:

"clx7uu86w0a5qp55yxz315r6r"

estimated_frame_cost
integer
required

Estimated cost of the video in terms of number of frames needed to render the video. Frames will be adjusted when the video completes

Example:

450