Image to Live Photo

Bring a still photo to life: generate a short video of about 4 seconds in which whatever should move (water, foliage, mist, a person's breathing and blinking, and so on) moves naturally according to the content, with slight camera movement, as if a brief clip had been filmed on location.

Two delivery formats are available via output_format: an MP4 video by default, or an Android motion photo — a single .jpg file with the video embedded after the still image, which supported Android galleries play on long press. Both formats cost the same.

Notes: the output uses a standard aspect ratio, which may not exactly match the source image; the resulting video has no audio track.

Before / After

Before

Before

After

Create Task

Basic Information

ItemValue
Request MethodPOST
Request Path/task/image_to_live
Content-Typeapplication/json
AuthenticationRaw API key in the Authorization header

Request Body

ParameterTypeRequiredDefaultDescription
file_idstringYes-Uploaded image file ID
output_formatstringNomp4Delivery format. mp4 = a short video of about 4 seconds; motion_photo = an Android motion photo (a single .jpg, with the video also returned separately). See Output Specification

Request Example

curl -X POST https://api.ai-mcn.tv:10000/task/image_to_live \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id": "537489015178246"}'

Requesting an Android motion photo:

curl -X POST https://api.ai-mcn.tv:10000/task/image_to_live \
  -H "Authorization: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"file_id": "537489015178246", "output_format": "motion_photo"}'

Success Example

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "task_type": "image_to_live",
    "status": "queued"
  }
}

Query Task Result

Basic Information

ItemValue
Request MethodGET
Request Path/task/image_to_live/{task_id}
AuthenticationRaw API key in the Authorization header

Output Result (output_result)

ParameterTypeDescription
file_idstringPrimary output file ID — the video when output_format=mp4, the motion photo (.jpg) when output_format=motion_photo
download_urlstringDownload path for the primary output
video_file_idstringFile ID of the video itself (only when output_format=motion_photo)
video_download_urlstringDownload path for the video itself (only when output_format=motion_photo)

Success Example

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "file_id": "537489015178248",
      "download_url": "/download/a1/output.mp4"
    },
    "create_time": "2026-04-05T08:00:00Z",
    "update_time": "2026-04-05T08:00:30Z"
  }
}

With output_format=motion_photo, the motion photo is the primary output and the video is returned alongside it:

{
  "code": 200,
  "msg": "success",
  "data": {
    "task_id": "537489015178247",
    "status": "completed",
    "progress": 100,
    "output_result": {
      "file_id": "537489015178248",
      "download_url": "/download/a1/output.jpg",
      "video_file_id": "537489015178249",
      "video_download_url": "/download/a1/output.mp4"
    },
    "create_time": "2026-04-05T08:00:00Z",
    "update_time": "2026-04-05T08:00:30Z"
  }
}

Output Specification

ItemDetails
Container / codecMP4 (H.264)
DurationAbout 4.5 seconds
Frame rate24 fps
AudioNone (the output is a silent video)
Resolution720P tier, selected automatically from the input aspect ratio (see below)
File sizeTypically 1–4 MB, depending on visual complexity

Output Aspect Ratios

The service reads the aspect ratio of the input image and generates at the closest standard ratio:

Input aspect ratioOutput size
16:9 (landscape)1280 × 736
4:3 (landscape)1280 × 960
3:4 (portrait)736 × 1280
1:1 (square)Square tier

Note: the output uses a standard aspect ratio, which may not exactly match the source image, so the edges of the frame can be cropped slightly. This is most noticeable for portrait images — a 3:4 source is rendered as a taller portrait video, with some of the left and right edges cropped away. If the composition matters, use Image Aspect Ratio Conversion to bring the source to the target ratio before calling this endpoint.

Android Motion Photo (output_format=motion_photo)

The primary output is a single .jpg file: the video above is embedded verbatim after the still image, with its position declared in the image metadata. It is also an ordinary picture — any image viewer opens it normally, while Android galleries that support the standard recognise it as a motion photo and play it on long press.

ItemDescription
ContainerJPEG (still image + embedded MP4, single file)
Still imageKeeps the source resolution, centre-cropped to the video's aspect ratio so the still and the motion share one composition
Embedded videoByte-for-byte identical to the output_format=mp4 output; never re-encoded
File sizeTypically 5-10 MB (still image plus video)
Companion outputThe video itself is also returned as video_file_id / video_download_url and can be downloaded separately

Compatibility boundaries (please confirm these fit your use case before integrating):

  • Android: galleries on Pixel, Xiaomi, Samsung and other devices that support the standard recognise and play it.
  • iOS: Apple uses a different format (a Live Photo is a HEIC + MOV pair), so iOS does not recognise this output. It appears as an ordinary still image, which opens normally without errors.
  • Some devices: vendor implementations vary, and a few models may show the file as a still image only.

What the Motion Looks Like

  • Elements that would naturally move do so according to the content: ripples on water, foliage swaying in the wind, drifting clouds and mist, moving traffic and pedestrians, rising steam, a person's natural breathing and blinking, and so on.
  • The camera moves slightly (a slow push-in, a gentle pan, or a subtle handheld drift), so the result feels like a brief clip filmed on location rather than a frozen frame.
  • The subject's appearance, pose, clothing and the overall composition stay consistent with the source image; no people or objects are added or removed.

Processing Time

A single task usually takes 6–9 minutes, including queueing. Tasks run asynchronously — poll status through the query endpoint instead of waiting synchronously.

Usage Notes

  • Input image: jpg / jpeg / png / bmp / webp are supported. Photos with a clear subject and complete composition work best; scenes containing water, foliage, clouds or crowds produce the most natural motion.
  • Regenerating: submitting the same image again produces a different result, so you can retry if you are not satisfied with the output.
  • Billing: charged per call, regardless of the output duration. See the pricing guide for the current price.

Error Codes

Error CodeHTTP StatusDescriptionResolution
6013400Missing file_idPass the file_id field
6016400Invalid output_format valueUse either mp4 or motion_photo
6014400File type does not match the taskUpload an image file
6004404File not foundVerify the file_id
6502401Authentication failedCheck the Authorization header
6202402Insufficient balanceRecharge in the Dashboard