Seedance 1.0 pro (Image-to-Video)
Model Overview
Generate professional video content (1080p) from a reference image and text prompt in a minute — with the option to keep the camera fixed throughout the entire clip.
Setup your API Key
If you don’t have an API key for the AI/ML API yet, feel free to use our Quickstart guide.
How to Make a Call
API Schemas
Create a video generation task and send it to the server
You can generate a video using this API. In the basic setup, you only need a reference image and a prompt. This endpoint creates and sends a video generation task to the server — and returns a generation ID.
model*
string
enum: [ bytedance/seedance-1-0-pro-i2v
]
image_url*
string($uri)
A direct link to an online image or a Base64-encoded local image that will serve as the visual base or the first frame for the video.
prompt*
string
The text description of the scene, subject, or action to generate in the video.
resolution
string
default: 1080p
An enumeration where the short side of the video frame determines the resolution.
enum: [ 480p
, 720p
, 1080p
]
duration
integer
The length of the output video in seconds.
enum: [ 5
, 10
]
watermark
boolean
default: false
Whether the video contains a watermark
seed
integer
Varying the seed integer is a way to get different results for the same other request parameters. Using the same value for an identical request will produce similar results. If unspecified, a random number is chosen.
camerafixed
boolean
default: false
Whether to fix the camera position. true
: Fix the camera position. The platform will append instructions to fix the camera position in the user's prompt, but the actual effect is not guaranteed. false
: Do not fix the camera position.
Retrieve the generated video from the server
After sending a request for video generation, this task is added to the queue. This endpoint lets you check the status of a video generation task using its generation_id
, obtained from the endpoint described above.
If the video generation task status is complete
, the response will include the final result — with the generated video URL and additional metadata.
GET /v2/generate/video/bytedance/generation HTTP/1.1
Host: api.aimlapi.com
Authorization: Bearer <YOUR_AIMLAPI_KEY>
Accept: */*
No content
Full Example: Generating and Retrieving the Video From the Server
The code below creates a video generation task, then automatically polls the server every 10 seconds until it finally receives the video URL.
import requests
import time
# replace <YOUR_AIMLAPI_KEY> with your actual AI/ML API key
api_key = "<YOUR_AIMLAPI_KEY>"
base_url = "https://api.aimlapi.com/v2"
# Creating and sending a video generation task to the server
def generate_video():
url = f"{base_url}/generate/video/bytedance/generation"
headers = {
"Authorization": f"Bearer {api_key}",
}
data = {
"model": "bytedance/seedance-1-0-pro-i2v",
"prompt": "Mona Lisa puts on glasses with her hands.",
"image_url": "https://s2-111386.kwimgs.com/bs2/mmu-aiplatform-temp/kling/20240620/1.jpeg",
"resolution": "1080p"
}
response = requests.post(url, json=data, headers=headers)
if response.status_code >= 400:
print(f"Error: {response.status_code} - {response.text}")
else:
response_data = response.json()
print(response_data)
return response_data
# Requesting the result of the task from the server using the generation_id
def get_video(gen_id):
url = f"{base_url}/generate/video/bytedance/generation"
params = {
"generation_id": gen_id,
}
# Insert your AIML API Key instead of <YOUR_AIMLAPI_KEY>:
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
response = requests.get(url, params=params, headers=headers)
# print("Generation:", response.json())
return response.json()
def main():
# Running video generation and getting a task id
gen_response = generate_video()
gen_id = gen_response.get("id")
print("Generation ID: ", gen_id)
# Trying to retrieve the video from the server every 10 sec
if gen_id:
start_time = time.time()
timeout = 600
while time.time() - start_time < timeout:
response_data = get_video(gen_id)
if response_data is None:
print("Error: No response from API")
break
status = response_data.get("status")
print("Status:", status)
if status == "waiting" or status == "active" or status == "queued" or status == "generating":
print("Still waiting... Checking again in 10 seconds.")
time.sleep(10)
else:
print("Processing complete:/n", response_data)
return response_data
print("Timeout reached. Stopping.")
return None
if __name__ == "__main__":
main()
Processing time: ~56 sec (and ~38 sec for the 480p
resolution).
Original: 1248x1664
Low-res GIF preview:

"Mona Lisa puts on glasses with her hands."
Last updated
Was this helpful?