POST
/
v3
/
async
/
img2video

This API seamlessly transforms an image into a cohesive video. It is designed to create smooth transitions and animations from static images, making it ideal for producing dynamic visual content for presentations, social media, and marketing campaigns.

This is an asynchronous API; only the task_id will be returned. You should use the task_id to request the Task Result API to retrieve the video generation results.

Request Headers

Content-Type
string
required

Enum: application/json

Authorization
string
required

Bearer authentication format, for example: Bearer {{API Key}}.

Request Body

extra
object

Optional extra parameters for the request.

model_name
string
required

Specifies the model to be used for processing. SVD (Singular Value Decomposition): Ideal for applications involving matrix factorization and dimensionality reduction. This model is well-suited for tasks such as signal processing, recommendation systems, and data compression, offering robust feature extraction and data simplification capabilities. SVD-XT: This model is an extended version of the standard SVD, optimized for handling larger datasets and more complex computations. It provides enhanced performance and accuracy in environments requiring intensive data processing.Enum: SVD-XT, SVD

image_file
string
required

The base64 of input image, with a maximum resolution of 2048 x 2048 and a maximum file size of 30 Mb.

frames_num
integer
required

Total number of video frames. When the parameter model_name=SVD_XT, then frames_num = 25; when the parameter model_name=SVD, then frames_num = 14.

frames_per_second
integer
required

Frames per second; the larger the frame rate, the smoother the video. Currently, only the number 6 is supported.

image_file_resize_mode
string
required

The image file resize mode has two settings: When set to ORIGINAL_RESOLUTION, it retains the original image size but ensures the resolution is below 576 x 1024. When set to CROP_TO_ASPECT_RATIO, it maintains the original proportions of the image and crops it to fit within a 576 x 1024 resolution.Enum: ORIGINAL_RESOLUTION, CROP_TO_ASPECT_RATIO

steps
integer
required

The number of denoising steps. More steps usually produce higher quality content, but take more time to generate. Range [1, 50].

seed
integer

A seed is a number from which Stable Diffusion generates noise, which, makes generation deterministic. Using the same seed and set of parameters will produce identical content each time, minimum -1. Defaults to -1.

motion_bucket_id
integer

Identifies the specific motion bucket to be utilized during the img2video process. This parameter selects a predefined set of motion profiles, each corresponding to a unique identifier ranging from 1 to 255. Selecting an appropriate motion bucket can tailor the animation effects to better suit the specific characteristics or themes of the input images. Range [1, 255].

cond_aug
number

The amount of noise added to the conditioning image. The higher the value, the less the video resembles the conditioning image. Increasing this value also enhances the motion in the generated video. Range [0, 1].

enable_frame_interpolation
boolean

Enables frame interpolation to standardize video output to 24 frames per second (fps). This feature smooths out motion by generating intermediate frames, enhancing the fluidity and continuity of the video sequence. This is particularly useful for converting lower frame rate footage to a more cinematic frame rate.

Response

task_id
string

Use the task_id to request the Task Result API to retrieve the generated outputs.

Example

This API helps generate a video from an image. The returned video can be accessed via the API /v3/async/task-result using the task_id.

Try it in playground.

Request:

curl --location --request GET 'https://api.novita.ai/v3/async/img2video' \
--header 'Authorization: Bearer {{API Key}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "model_name": "SVD-XT",
    "image_file": "{{Base64 encoded image}}",
    "frames_num": 25,
    "frames_per_second": 6,
    "seed": 20231127,
    "image_file_resize_mode": "CROP_TO_ASPECT_RATIO",
    "steps": 20
}'

Response:

{
    "task_id": "fa20dff3-18cb-4417-a7f8-269456a35154"
}

Use task_id to get videos

HTTP status codes in the 2xx range indicate that the request has been successfully accepted, while status codes in the 5xx range indicate internal server errors.

You can get the video URLs from the videos field in the response.

Request:

curl --location --request GET 'https://api.novita.ai/v3/async/task-result?task_id=fa20dff3-18cb-4417-a7f8-269456a35154' \
--header 'Authorization: Bearer {{API Key}}'

Response:

{
    "task": {
        "task_id": "fa20dff3-18cb-4417-a7f8-269456a35154",
        "task_type": "IMG_TO_VIDEO",
        "status": "TASK_STATUS_SUCCEED",
        "reason": ""
    },
    "images": [],
    "videos": [
        {
            "video_url": "https://faas-output-video.s3.ap-southeast-1.amazonaws.com/test/fa20dff3-18cb-4417-a7f8-269456a35154/e40de30e115947a0be2dfc78925e587d.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIASVPYCN6LRCW3SOUV%2F20231127%2Fap-southeast-1%2Fs3%2Faws4_request&X-Amz-Date=20231127T151757Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&x-id=GetObject&X-Amz-Signature=14faf7df34c2c2ff68fed102095af593844db7c5c5cd2d80e80beec0613192c7",
            "video_url_ttl": "3600",
            "video_type": "mp4"
        }
    ]
}