{ "bible": { "model": "openai/gpt-image-2", "model_with_own_photo": "openai/gpt-image-2/edit", "input": { "image_size": { "width": 1536, "height": 864 }, "quality": "high", "num_images": 1, "output_format": "jpeg" }, "approx_cost_per_image": 0.25 }, "keyframe": { "model": "openai/gpt-image-2/edit", "model_without_references": "openai/gpt-image-2", "input": { "quality": "high", "num_images": 1, "output_format": "jpeg" }, "image_sizes": { "16:9": { "width": 1536, "height": 864 }, "9:16": { "width": 864, "height": 1536 }, "16:9-1080p": { "width": 2048, "height": 1152 }, "9:16-1080p": { "width": 1152, "height": 2048 } }, "max_references": 3, "approx_cost_per_image": 0.28 }, "video": { "draft": { "model": "bytedance/seedance-2.0/mini/image-to-video", "input": { "resolution": "480p", "aspect_ratio": "auto", "generate_audio": false }, "duration_seconds": "4-15", "approx_cost_per_second": { "480p": 0.0721 } }, "final": { "model": "bytedance/seedance-2.5/image-to-video", "input": { "resolution": "720p", "aspect_ratio": "auto", "generate_audio": true, "bitrate_mode": "high", "codec": "H264" }, "duration_seconds": "4-30 (this Skill uses 4-6 per shot)", "approx_cost_per_second": { "480p": 0.2205, "720p": 0.473, "1080p": 1.164 } }, "alternatives_for_faces_or_failures": { "note": "Seedance on fal refuses clearly visible realistic faces. Tested 2026-10-16 on one face-forward synthetic close-up: Kling accepted it and held the face for 3 s; Veo accepted it but the face drifted within 4 s. Test one draft first; the look differs from Seedance.", "kling": { "model": "fal-ai/kling-video/v3/turbo/pro/image-to-video", "input": { "duration": "5" }, "fields": "prompt, image_url, duration \"3\"-\"15\", optional multi_prompt; no resolution, end_image_url, generate_audio, bitrate_mode or codec; returned 1920x1080 with a sound track", "approx_cost_per_second": 0.14 }, "veo": { "model": "fal-ai/veo3.1/image-to-video", "input": { "duration": "4s", "resolution": "720p", "generate_audio": false }, "fields": "prompt, image_url (16:9 or 9:16, 720p or more), duration \"4s\"/\"6s\"/\"8s\", resolution 720p/1080p, generate_audio, aspect_ratio, optional negative_prompt", "approx_cost_per_second": { "silent": 0.2, "with_audio": 0.4 } } } }, "defaults": { "length_seconds": 30, "aspect": "16:9", "final_resolution": "720p", "shot_seconds": { "establishing": 6, "default": 5, "insert_or_close": 4, "closing": 6 }, "assembly": { "grain": 6, "bloom": 0.08, "vignette": 0.35, "dissolve_seconds": 0.6, "crf": 20, "preview_max_mb": 7.5, "fps": 24 } }, "cost_note": "fal list prices checked 2026-10-16. GPT Image 2 is token-billed (about $0.25 per high-quality 1536x864 still, about $0.28 with references). Seedance is billed per video token: tokens = width x height x 24 x seconds / 1024; 720p is about $0.473 per second. A 30 s film is about $23-29 and a 45 s film about $29-35 including drafts and the usual re-rolls (the 9-shot sample cost $33.62); build-requests.mjs --stage estimate prints the total for a real shot list. Quote it and get one yes before the first paid call." }