cURL
Text-to-Video
Copy
curl -X POST https://platform.runblob.io/v1/veo/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A cat playing with a ball in a sunny room"
}'
Frame-to-Frame
Copy
curl -X POST https://platform.runblob.io/v1/veo/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Smooth transformation between two states",
"model_type": "veo-3-fast",
"start_frame": "data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"end_frame": "data:image/jpeg;base64,iVBORw0KGgoAAAANS...",
"aspect_ratio": "16:9"
}'
Reference Images
Copy
curl -X POST https://platform.runblob.io/v1/veo/generate \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "Characters celebrating a birthday",
"model_type": "veo-3-fast",
"reference_images": [
"data:image/jpeg;base64,/9j/4AAQSkZJRg...",
"data:image/jpeg;base64,iVBORw0KGgoAAAANS..."
]
}'
Check Status
Copy
curl -X GET https://platform.runblob.io/v1/veo/generations/GENERATION_ID -H "Authorization: Bearer YOUR_API_KEY"
Python
Simple Client
Copy
import requests
import time
class VeoClient:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://platform.runblob.io"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def generate(self, prompt, **kwargs):
response = requests.post(
f"{self.base_url}/v1/veo/generate",
headers=self.headers,
json={"prompt": prompt, **kwargs}
)
return response.json()
def generate_frame_to_frame(self, prompt, start_frame, end_frame, **kwargs):
response = requests.post(
f"{self.base_url}/v1/veo/generate",
headers=self.headers,
json={
"prompt": prompt,
"start_frame": start_frame,
"end_frame": end_frame,
"model_type": "veo-3-fast",
**kwargs
}
)
return response.json()
def generate_with_references(self, prompt, reference_images, **kwargs):
response = requests.post(
f"{self.base_url}/v1/veo/generate",
headers=self.headers,
json={
"prompt": prompt,
"reference_images": reference_images,
"model_type": "veo-3-fast",
**kwargs
}
)
return response.json()
def status(self, generation_id):
response = requests.get(
f"{self.base_url}/v1/veo/generations/{generation_id}",
headers=self.headers
)
return response.json()
def wait_for_completion(self, generation_id):
while True:
result = self.status(generation_id)
if result["status"] == "completed":
return result["video_url"]
elif result["status"] == "failed":
raise Exception(f"Generation failed: {result['message']}")
time.sleep(10)
# Text-to-Video
client = VeoClient("YOUR_API_KEY")
result = client.generate("A sunset over mountains")
video_url = client.wait_for_completion(result["generation_id"])
print(f"Video ready: {video_url}")
# Frame-to-Frame
result = client.generate_frame_to_frame(
"Smooth transformation",
start_frame="data:image/jpeg;base64,...",
end_frame="data:image/jpeg;base64,...",
aspect_ratio="16:9"
)
video_url = client.wait_for_completion(result["generation_id"])
# Reference Images
result = client.generate_with_references(
"Characters celebrating birthday",
reference_images=[
"data:image/jpeg;base64,...",
"data:image/jpeg;base64,..."
],
aspect_ratio="16:9"
)
video_url = client.wait_for_completion(result["generation_id"])