Back to Comparison Hub/First & Last Frame VIP Pricing
Image to Video

First & Last Frame VIP API Pricing

SD 2 First & Last Frame VIP (Pro) by ByteDance. Generate video that transitions between two reference images with priority routing. Provide 1 image for start-frame-only, or 2 images for both start and end frames.

Savings Alert-900% ↓Cheaper than Fal.ai

About First & Last Frame VIP

SD 2 First & Last Frame VIP (Pro) generates video that transitions between two reference images with priority routing. Provide one image as the opening frame, or two images for a complete start-to-end transition. Uses the pro model for maximum output quality at 2K resolution.

Interactive Savings Calculator

Estimate monthly API spend and compare absolute developer savings.

Monthly API Generations10,000 runs
50025,00050,00075,000100,000+
MuAPI Monthly Cost

$3000.00

$0.30/sec (pro)
Fal.ai Cost

$300.00

Not available
Estimated Monthly Savings$-2700.00
Annual Savings$-32400.00

Detailed Pricing Breakdown

ProviderEstimated RateNotes
muapiapp$0.30/sec (pro)VIP priority routing with pro-quality output.
Fal.aiNot availableNot available.
ReplicateNot availableNot available.

Developer Integration Snippets

1import requests 2import time 3import json 4 5api_key = "YOUR_API_KEY" 6url = "https://api.muapi.ai/workflow/run/seedance-2-vip-first-last-frame" 7 8def poll_for_result(run_id): 9 url = f"https://api.muapi.ai/workflow/run/{run_id}/api-outputs" 10 headers = { 11 "Content-Type": "application/json", 12 "x-api-key": f"{api_key}", 13 } 14 while True: 15 response = requests.get(url, headers=headers) 16 result = response.json() 17 18 if result['status'] == 'completed': 19 return json.loads(result['outputs']) 20 21 if result['status'] == 'failed': 22 raise Exception(result.get('error', 'Generation failed')) 23 24 time.sleep(5) 25 26data = { 27 "schemas": { 28 "input_data": { 29 "x-order-properties": [ 30 "prompt", 31 "images_list", 32 "aspect_ratio", 33 "duration", 34 "high_bitrate" 35 ], 36 "type": "object", 37 "properties": { 38 "prompt": { 39 "type": "string", 40 "title": "Prompt", 41 "name": "prompt", 42 "description": "Text description guiding the transition between frames.", 43 "examples": [ 44 "Two people having a street interview, the interviewer holds a microphone." 45 ] 46 }, 47 "images_list": { 48 "examples": [ 49 "https://d3adwkbyhxyrtq.cloudfront.net/ai-images/186/712345784292/4a8c5c70-abcc-4920-873e-b0e219986453.jpg" 50 ], 51 "description": "1 image = first frame only; 2 images = first and last frame. Use 'adaptive' aspect ratio to match the reference image geometry.", 52 "field": "images_list", 53 "type": "array", 54 "items": { 55 "type": "string" 56 }, 57 "title": "Frame Images", 58 "name": "images_list", 59 "maxItems": 2 60 }, 61 "aspect_ratio": { 62 "enum": [ 63 "adaptive", 64 "21:9", 65 "16:9", 66 "4:3", 67 "1:1", 68 "3:4", 69 "9:16" 70 ], 71 "type": "string", 72 "title": "Aspect Ratio", 73 "name": "aspect_ratio", 74 "description": "Output video aspect ratio. 'adaptive' matches the reference image (recommended); concrete ratios may crop or pad.", 75 "default": "adaptive" 76 }, 77 "duration": { 78 "type": "int", 79 "title": "Duration (seconds)", 80 "name": "duration", 81 "description": "Video duration in seconds.", 82 "default": 5, 83 "minValue": 4, 84 "maxValue": 15, 85 "step": 1 86 }, 87 "high_bitrate": { 88 "type": "boolean", 89 "title": "High Bitrate", 90 "name": "high_bitrate", 91 "description": "Enable high bitrate mode for better visual fidelity. Produces larger files.", 92 "default": false 93 } 94 }, 95 "title": "BaseInput", 96 "required": [ 97 "prompt", 98 "images_list" 99 ], 100 "endpoint_url": "seedance-2-vip-first-last-frame" 101 }, 102 "output_data": { 103 "type": "object", 104 "properties": { 105 "video": { 106 "type": "string", 107 "title": "Video", 108 "description": "Generated video URL.", 109 "examples": [ 110 "https://s3.amazonaws.com/output.mp4" 111 ] 112 } 113 }, 114 "title": "Seedance2Output", 115 "required": [ 116 "video" 117 ] 118 } 119 } 120} 121 122headers = { 123 "Content-Type": "application/json", 124 "x-api-key": f"{api_key}", 125} 126 127response = requests.post(url, json=data, headers=headers) 128 129result = response.json() 130print("Queued:", result) 131 132outputs = poll_for_result(result["run_id"]) 133print("Completed:", outputs) 134

Model FAQ

Ready to scale your production?

Get instant access to developer keys. Integrate high-speed dynamic models in minutes with our robust SDKs.