import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.yelinai.com"
headers = {
"Authorization": f"Bearer {API_KEY}"
}
# Text-to-Video
def create_video(prompt, model="sora-2", seconds="8", size="1280x720"):
response = requests.post(
f"{BASE_URL}/v1/videos",
headers=headers,
data={
"model": model,
"prompt": prompt,
"seconds": seconds,
"size": size
}
)
response.raise_for_status()
return response.json()
# Image-to-Video
def create_video_from_image(prompt, image_path, model="sora-2", seconds="4", size="1280x720"):
with open(image_path, "rb") as f:
response = requests.post(
f"{BASE_URL}/v1/videos",
headers=headers,
data={
"model": model,
"prompt": prompt,
"seconds": seconds,
"size": size
},
files={
"input_reference": (image_path.split("/")[-1], f, "image/jpeg")
}
)
response.raise_for_status()
return response.json()
# Poll task status
def poll_status(video_id, timeout=600, interval=15):
start_time = time.time()
while time.time() - start_time < timeout:
response = requests.get(
f"{BASE_URL}/v1/videos/{video_id}",
headers=headers
)
response.raise_for_status()
data = response.json()
status = data.get("status")
progress = data.get("progress", 0)
print(f"Status: {status}, Progress: {progress}%")
if status == "completed":
return data
elif status == "failed":
raise Exception(f"Video generation failed: {data.get('error')}")
time.sleep(interval)
raise TimeoutError("Video generation timeout")
# Download video
def download_video(video_id, output_path="output.mp4"):
response = requests.get(
f"{BASE_URL}/v1/videos/{video_id}/content",
headers=headers
)
response.raise_for_status()
with open(output_path, "wb") as f:
f.write(response.content)
print(f"Video saved to: {output_path}")
# Complete workflow
if __name__ == "__main__":
# Text-to-Video
job = create_video(
prompt="A golden retriever playing fetch on a sunny beach",
model="sora-2",
seconds="8",
size="1280x720"
)
print(f"Task created: {job['id']}")
# Wait for completion
result = poll_status(job["id"])
print("Video generation completed!")
# Download video
download_video(job["id"], "my_video.mp4")
# Image-to-Video example
# job2 = create_video_from_image(
# prompt="The scene comes alive with gentle movement",
# image_path="reference.jpg",
# model="sora-2",
# seconds="4",
# size="1280x720"
# )