You can use the following APIs to create videos from images with various effects and audio options.
Experience our Image to Video AI technology in action by exploring our interactive demo on GitHub: AKool Image to Video Demo. This demo showcases how to transform static images into dynamic videos using prompt-driven animation, with support for multiple AI models, effects, and audio integration.
Pricing
Image to Video
| Video Duration | 720p | 1080p | 4k |
|---|---|---|---|
| 5 seconds | 20 credits/video | 25 credits/video | 30 credits/video |
| 10 seconds | 40 credits/video | 50 credits/video | 60 credits/video |
Video to Audio
| Video Duration | Credits |
|---|---|
| 5 seconds | 5 credits/video |
| 10 seconds | 10 credits/video |
Create Image to Video
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Required | Description |
|---|---|---|---|
| image_url | String | true | Image URL to be animated |
| prompt | String | true | Prompt text describing how to animate the image |
| negative_prompt | String | true | Prompt text describing what to avoid in the animation |
| extend_prompt | Boolean | false | Whether to use algorithm default extended prompts |
| resolution | String | true | Resolution options: 720p, 1080p, 4k |
| audio_url | String | false | Audio URL, required when audio_type = 2 |
| audio_type | Integer | true | Audio type: 1 = AI generate, 2 = user custom upload, 3 = none (no audio) |
| video_length | Integer | true | Video duration in seconds, options: 5, 10 (10s only available for pro and above subscriptions) |
| is_premium_model | Boolean | false | Whether to use premium video model for faster generation (pro and above subscriptions only) |
| effect_code | String | false | Effect code: if specified, prompt content will be ignored.Get Effect Code |
| webhookurl | String | false | Callback URL for POST requests |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - create_time | Long | Creation timestamp |
| - uid | Integer | User ID |
| - team_id | String | Team ID |
| - status | Integer | Task status: 1=queueing, 2=processing, 3=completed, 4=failed |
| - webhookUrl | String | Callback URL |
| - resolution | String | Video resolution |
| - file_name | String | Output file name |
| - effect_name | String | Effect name |
| - _id | String | Document ID |
| - image_url | String | Input image URL |
| - prompt | String | Animation prompt |
| - negative_prompt | String | Negative prompt |
| - extend_prompt | Boolean | Whether extended prompts were used |
| - audio_type | Integer | Audio type used |
| - audio_url | String | Audio URL used |
| - deduction_credit | Integer | Credits deducted |
| - effect_code | String | Effect code used |
Create Batch Image to Video
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Required | Description |
|---|---|---|---|
| image_url | String | true | Image URL to be animated |
| prompt | String | true | Prompt text describing how to animate the image |
| model_name | String | false | AI model name (get available models from Get AI Model List) |
| negative_prompt | String | false | Prompt text describing what to avoid in the animation |
| extend_prompt | Boolean | false | Whether to use algorithm default extended prompts |
| resolution | String | true | Resolution value (e.g., 720p, 1080p, 4k). Available options are retrieved from the resolutionList field of the selected model in Get AI Model List |
| video_length | Integer | true | Video duration in seconds. Available durations are retrieved from the durationList field of the selected model in Get AI Model List |
| last_image_url | String | false | URL of the image to use as the last frame of the video |
| count | Integer | false | Number of videos to create simultaneously (1-10), default: 1 |
| webhookurl | String | false | Callback URL for POST requests |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - successList | Array | Array of successfully created video tasks |
| - errorList | Array | Array of failed tasks with error information |
| Parameter | Type | Description |
|---|---|---|
| _id | String | Document ID |
| create_time | Long | Creation timestamp |
| uid | Integer | User ID |
| team_id | String | Team ID |
| status | Integer | Task status: 1=queueing, 2=processing, 3=completed, 4=failed |
| webhookUrl | String | Callback URL |
| resolution | String | Video resolution |
| file_name | String | Output file name |
| effect_name | String | Effect name |
| image_url | String | Input image URL |
| prompt | String | Animation prompt |
| negative_prompt | String | Negative prompt |
| extend_prompt | Boolean | Whether extended prompts were used |
| last_image_url | String | Last frame image URL |
| deduction_credit | Integer | Credits deducted |
| model_name | String | AI model name used |
| batch_id | String | Batch ID for grouping videos created in the same request |
| batch_count | Integer | Total number of videos in this batch |
-
Get Available Models
-
User Selects Model and Parameters
- Display models from step 1
- Show supported resolutions and durations
- Calculate and display credit cost
-
Create Video(s)
With selected
model_nameand parameters -
Check Results
Using the
_idvalues from creation response
- Models are sorted by
sortfield in descending order (higher values first) - The
valuefield should be used as themodel_nameparameter in creation APIs - Resolution pricing may vary by model; check
resolutionListfor accurate costs - Some advanced models may require paid accounts (
requiresPay: true) - The API returns an empty array for model types that are not yet implemented
Get Image to Video Results
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Required | Description |
|---|---|---|---|
| _ids | String | true | Multiple IDs separated by commas |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - result | Array | Array of result objects |
| — _id | String | Document ID |
| — create_time | Long | Creation timestamp |
| — uid | Integer | User ID |
| — team_id | String | Team ID |
| — update_time | Long | Last update time/completion time |
| — video_duration | Number | Actual video duration |
| — webhookUrl | String | Callback URL |
| — file_name | String | File name |
| — effect_name | String | Effect name |
| — image_url | String | Image URL |
| — prompt | String | Prompt text |
| — resolution | String | Resolution |
| — audio_type | Integer | Audio type |
| — audio_url | String | Audio URL |
| — deduction_credit | Integer | Actual credits deducted |
| — effect_code | String | Effect code |
| — video_url | String | Generated video URL |
| — status | Integer | Status: 1=queueing, 2=processing, 3=completed, 4=failed |
| — only_add_audio | Boolean | Whether only audio was added |
Get Available Effects
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - result | Array | Array of effect objects |
| — _id | String | Effect document ID |
| — create_time | Long | Creation timestamp |
| — logo | String | Effect logo URL |
| — name | String | Effect name |
| — video_url | String | Effect preview video URL |
| — effect_code | String | Effect code |
| - count | Integer | Total number of effects |
Update Video Audio
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Required | Description |
|---|---|---|---|
| pre_video_id | String | true | Image to Video result _id |
| audio_url | String | true | Audio URL, required when audio_type = 2 |
| audio_type | Integer | true | 1 = AI Generate, 2 = user custom upload |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - create_time | Long | Creation timestamp |
| - uid | Integer | User ID |
| - team_id | String | Team ID |
| - update_time | Long | Last update time |
| - video_duration | Number | Video duration |
| - webhookUrl | String | Callback URL |
| - resolution | String | Resolution |
| - file_name | String | File name |
| - effect_name | String | Effect name |
| - _id | String | Document ID |
| - pre_video_id | String | Original video ID |
| - image_url | String | Image URL |
| - prompt | String | Prompt text |
| - negative_prompt | String | Negative prompt |
| - extend_prompt | Boolean | Whether extended prompts were used |
| - audio_type | Integer | Audio type |
| - audio_url | String | Audio URL |
| - deduction_credit | Integer | Credits deducted |
| - effect_code | String | Effect code |
| - status | Integer | Status: 1=queueing, 2=processing, 3=completed, 4=failed |
| - only_add_audio | Boolean | Whether only audio was added |
Delete Videos
| Parameter | Value | Description |
|---|---|---|
| x-api-key | API Key | Your API Key used for request authorization. If both Authorization and x-api-key have values, Authorization will be used first and x-api-key will be discarded. |
| Authorization | Bearer {token} | Your API Key used for request authorization.Get Token |
| Parameter | Type | Required | Description |
|---|---|---|---|
| _ids | String | true | Multiple IDs separated by commas |
| Parameter | Type | Description |
|---|---|---|
| code | Integer | Interface returns business status code (1000:success) |
| msg | String | Interface returns status information |
| data | Object | Response data object |
| - successIds | Array | Successfully deleted video IDs |
| - noPermissionItems | Array | Failed deletion information list |
| — _id | String | Failed deletion video ID |
| — msg | String | Failure reason |