{"openapi":"3.1.0","info":{"title":"Studio Router API","version":"0.1.0","description":"One API for video and image generation models across several providers. Requests use the same parameters whichever provider serves them; each job runs on the cheapest capable provider (set fallback to try others if it fails). Billing is prepaid and at provider cost. Examples use current catalog rates; job IDs, dates and output URLs are illustrative."},"servers":[{"url":"https://api.studiorouter.com"}],"security":[{"apiKey":[]}],"paths":{"/v1/models":{"get":{"operationId":"list_models","summary":"List models","description":"Models with their input modes, accepted parameters and current prices per provider. No authentication needed.","security":[],"parameters":[{"name":"type","in":"query","schema":{"type":"string","enum":["video","image"]}}],"responses":{"200":{"description":"Model list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModelList"},"examples":{"catalog":{"summary":"Video and image entries (abridged list)","value":{"data":[{"id":"wan-3.0","name":"Wan 3.0","creator":"Alibaba","type":"video","description":"General-purpose video with native audio, 2–30 s, text / image / reference inputs.","defaults":{"resolution":"720p","duration":5,"prompt_expansion":"off"},"endpoint":"/v1/videos","modes":[{"mode":"text","label":"Text to video","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"replicate","name":"Replicate","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":false,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.035,"720p":0.07,"1080p":0.14}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"first_frame","label":"First frame (image to video)","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"replicate","name":"Replicate","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":false,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.035,"720p":0.07,"1080p":0.14}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"first_last_frame","label":"First + last frame","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"reference","label":"Reference images / video / audio","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235},"with_input_video_usd":{"per_output_second":{"480p":0.04165,"720p":0.0816,"1080p":0.16235},"per_input_second":{"480p":0.049436,"720p":0.096855,"1080p":0.1927}}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16},"with_input_video_usd":{"per_output_second":{"480p":0.04,"720p":0.08,"1080p":0.16},"per_input_second":{"480p":0,"720p":0,"1080p":0}}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13},"with_input_video_usd":{"per_output_second":{"480p":0.0325,"720p":0.065,"1080p":0.13},"per_input_second":{"480p":0.038576,"720p":0.077151,"1080p":0.154303}}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2},"with_input_video_usd":{"per_output_second":{"480p":0.05,"720p":0.1,"1080p":0.2},"per_input_second":{"480p":0.05,"720p":0.1,"1080p":0.2}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19},"with_input_video_usd":{"per_output_second":{"480p":0.0475,"720p":0.095,"1080p":0.19},"per_input_second":{"480p":0.05638,"720p":0.11276,"1080p":0.225519}}}}]},{"mode":"edit","label":"Video edit","resolutions":["480p","720p","1080p"],"aspect_ratios":[],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"from_usd":0.064293,"providers":[{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.064293,"720p":0.128586,"1080p":0.257171},"with_input_video_usd":{"per_output_second":{"480p":0.064293,"720p":0.128586,"1080p":0.257171},"per_input_second":{}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.118694,"720p":0.237389,"1080p":0.474777},"with_input_video_usd":{"per_output_second":{"480p":0.118694,"720p":0.237389,"1080p":0.474777},"per_input_second":{}}}}]},{"mode":"extend","label":"Video extend","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":[],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"from_usd":0.0325,"providers":[{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13},"with_input_video_usd":{"per_output_second":{"480p":0.0325,"720p":0.065,"1080p":0.13},"per_input_second":{"480p":0.038576,"720p":0.077151,"1080p":0.154303}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2},"with_input_video_usd":{"per_output_second":{"480p":0.05,"720p":0.1,"1080p":0.2},"per_input_second":{"480p":0,"720p":0,"1080p":0}}}}]}]},{"id":"nano-banana-2","name":"Nano Banana 2","creator":"Google","type":"image","description":"Fast Gemini image generation and natural-language edits.","defaults":{"resolution":"1k"},"endpoint":"/v1/images","modes":[{"mode":"text_to_image","label":"Text to image","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9","5:4"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.028,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"1k":0.034,"2k":0.0408,"4k":0.07565}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"1k":0.028,"2k":0.042,"4k":0.056}}},{"provider":"sandbase","name":"SandBase","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.03825,"1k":0.05695,"2k":0.08585,"4k":0.12835}}},{"provider":"fal","name":"Fal","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.06,"1k":0.08,"2k":0.12,"4k":0.16}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.0405,"1k":0.063,"2k":0.0945,"4k":0.126}}}]},{"mode":"image_edit","label":"Image edit","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9","5:4"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"from_usd":0.028,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"1k":0.034,"2k":0.0408,"4k":0.07565}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"1k":0.028,"2k":0.042,"4k":0.056}}},{"provider":"sandbase","name":"SandBase","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.03825,"1k":0.05695,"2k":0.08585,"4k":0.12835}}},{"provider":"fal","name":"Fal","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.06,"1k":0.08,"2k":0.12,"4k":0.16}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.0405,"1k":0.063,"2k":0.0945,"4k":0.126}}}]}]}]}}}}}}}}},"/v1/models/{id}":{"get":{"operationId":"get_model","summary":"Get a model","description":"One model with its defaults, input modes, accepted parameters and prices per provider. No authentication needed.","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"example":"wan-3.0","description":"Model id from GET /v1/models"}],"responses":{"200":{"description":"The model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Model"},"examples":{"video":{"summary":"Video model","value":{"id":"wan-3.0","name":"Wan 3.0","creator":"Alibaba","type":"video","description":"General-purpose video with native audio, 2–30 s, text / image / reference inputs.","defaults":{"resolution":"720p","duration":5,"prompt_expansion":"off"},"endpoint":"/v1/videos","modes":[{"mode":"text","label":"Text to video","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"replicate","name":"Replicate","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":false,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.035,"720p":0.07,"1080p":0.14}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"first_frame","label":"First frame (image to video)","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"replicate","name":"Replicate","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":false,"prompt_expansion":["off","on"],"negative_prompt":true,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.035,"720p":0.07,"1080p":0.14}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"first_last_frame","label":"First + last frame","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19}}}]},{"mode":"reference","label":"Reference images / video / audio","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","21:9"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"from_usd":0.0325,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.04165,"720p":0.0816,"1080p":0.16235},"with_input_video_usd":{"per_output_second":{"480p":0.04165,"720p":0.0816,"1080p":0.16235},"per_input_second":{"480p":0.049436,"720p":0.096855,"1080p":0.1927}}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.04,"720p":0.08,"1080p":0.16},"with_input_video_usd":{"per_output_second":{"480p":0.04,"720p":0.08,"1080p":0.16},"per_input_second":{"480p":0,"720p":0,"1080p":0}}}},{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["21:9","16:9","4:3","1:1","3:4","9:16"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13},"with_input_video_usd":{"per_output_second":{"480p":0.0325,"720p":0.065,"1080p":0.13},"per_input_second":{"480p":0.038576,"720p":0.077151,"1080p":0.154303}}}},{"provider":"fal","name":"Fal","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2},"with_input_video_usd":{"per_output_second":{"480p":0.05,"720p":0.1,"1080p":0.2},"per_input_second":{"480p":0.05,"720p":0.1,"1080p":0.2}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":["16:9","9:16","1:1","4:3","3:4"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":5,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.0475,"720p":0.095,"1080p":0.19},"with_input_video_usd":{"per_output_second":{"480p":0.0475,"720p":0.095,"1080p":0.19},"per_input_second":{"480p":0.05638,"720p":0.11276,"1080p":0.225519}}}}]},{"mode":"edit","label":"Video edit","resolutions":["480p","720p","1080p"],"aspect_ratios":[],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"from_usd":0.064293,"providers":[{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.064293,"720p":0.128586,"1080p":0.257171},"with_input_video_usd":{"per_output_second":{"480p":0.064293,"720p":0.128586,"1080p":0.257171},"per_input_second":{}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"price":{"unit":"per second","usd":{"480p":0.118694,"720p":0.237389,"1080p":0.474777},"with_input_video_usd":{"per_output_second":{"480p":0.118694,"720p":0.237389,"1080p":0.474777},"per_input_second":{}}}}]},{"mode":"extend","label":"Video extend","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"aspect_ratios":[],"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5},"from_usd":0.0325,"providers":[{"provider":"sandbase","name":"SandBase","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["on"],"negative_prompt":false,"max_reference_images":10,"max_reference_videos":0,"max_reference_audios":5,"max_prompt_chars":5000},"price":{"unit":"per second","usd":{"480p":0.0325,"720p":0.065,"1080p":0.13},"with_input_video_usd":{"per_output_second":{"480p":0.0325,"720p":0.065,"1080p":0.13},"per_input_second":{"480p":0.038576,"720p":0.077151,"1080p":0.154303}}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["480p","720p","1080p"],"duration":{"min":2,"max":30},"controls":{"seed":true,"audio_toggle":true,"prompt_expansion":["off","on"],"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per second","usd":{"480p":0.05,"720p":0.1,"1080p":0.2},"with_input_video_usd":{"per_output_second":{"480p":0.05,"720p":0.1,"1080p":0.2},"per_input_second":{"480p":0,"720p":0,"1080p":0}}}}]}]}},"image":{"summary":"Image model","value":{"id":"nano-banana-2","name":"Nano Banana 2","creator":"Google","type":"image","description":"Fast Gemini image generation and natural-language edits.","defaults":{"resolution":"1k"},"endpoint":"/v1/images","modes":[{"mode":"text_to_image","label":"Text to image","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9","5:4"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"from_usd":0.028,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"1k":0.034,"2k":0.0408,"4k":0.07565}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"1k":0.028,"2k":0.042,"4k":0.056}}},{"provider":"sandbase","name":"SandBase","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.03825,"1k":0.05695,"2k":0.08585,"4k":0.12835}}},{"provider":"fal","name":"Fal","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.06,"1k":0.08,"2k":0.12,"4k":0.16}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0},"price":{"unit":"per image","usd":{"0.5k":0.0405,"1k":0.063,"2k":0.0945,"4k":0.126}}}]},{"mode":"image_edit","label":"Image edit","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9","5:4"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"from_usd":0.028,"providers":[{"provider":"machgen","name":"MachGen","resolutions":["1k","2k","4k"],"aspect_ratios":["16:9","9:16","1:1","4:3","3:4","4:5","3:2","2:3","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"1k":0.034,"2k":0.0408,"4k":0.07565}}},{"provider":"atlas","name":"Atlas Cloud","resolutions":["1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"1k":0.028,"2k":0.042,"4k":0.056}}},{"provider":"sandbase","name":"SandBase","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.03825,"1k":0.05695,"2k":0.08585,"4k":0.12835}}},{"provider":"fal","name":"Fal","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":true,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg","webp"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.06,"1k":0.08,"2k":0.12,"4k":0.16}}},{"provider":"wavespeed","name":"WaveSpeedAI","resolutions":["0.5k","1k","2k","4k"],"aspect_ratios":["1:1","3:2","2:3","3:4","4:3","4:5","5:4","9:16","16:9","21:9"],"controls":{"seed":false,"audio_toggle":false,"negative_prompt":false,"output_format":["png","jpeg"],"max_reference_images":0,"max_reference_videos":0,"max_reference_audios":0,"max_images":14},"price":{"unit":"per image","usd":{"0.5k":0.0405,"1k":0.063,"2k":0.0945,"4k":0.126}}}]}]}}}}}},"404":{"description":"Unknown model","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/estimate":{"post":{"operationId":"estimate_cost","summary":"Estimate the cost of a request","description":"Same body as POST /v1/videos or POST /v1/images; the model id determines which request type is used. Nothing is created, reserved or charged.","requestBody":{"required":true,"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/VideoRequest"},{"$ref":"#/components/schemas/ImageRequest"}]},"examples":{"video":{"summary":"Estimate a video","value":{"model":"wan-3.0","prompt":"A red kite over a quiet beach at sunset"}},"image":{"summary":"Estimate an image","value":{"model":"nano-banana-2","prompt":"A red kite over a quiet beach at sunset"}}}}}},"responses":{"200":{"description":"Estimate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Estimate"},"examples":{"video":{"summary":"Video estimate","value":{"model":"wan-3.0","mode":"text","resolution":"720p","duration":5,"input_video_seconds":null,"estimated_cost_usd":0.325,"hold_usd":0.325,"fallback":false,"providers":[{"provider":"sandbase","estimated_cost_usd":0.325}],"other_providers":[{"provider":"replicate","estimated_cost_usd":0.35},{"provider":"atlas","estimated_cost_usd":0.4},{"provider":"machgen","estimated_cost_usd":0.408},{"provider":"wavespeed","estimated_cost_usd":0.475},{"provider":"fal","estimated_cost_usd":0.5}]}},"image":{"summary":"Image estimate","value":{"model":"nano-banana-2","mode":"text_to_image","resolution":"1k","duration":null,"input_video_seconds":null,"estimated_cost_usd":0.028,"hold_usd":0.028,"fallback":false,"providers":[{"provider":"atlas","estimated_cost_usd":0.028}],"other_providers":[{"provider":"machgen","estimated_cost_usd":0.034},{"provider":"sandbase","estimated_cost_usd":0.05695},{"provider":"wavespeed","estimated_cost_usd":0.063},{"provider":"fal","estimated_cost_usd":0.08}]}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"No provider can serve these parameters, or content moderation refused the request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/videos":{"post":{"operationId":"create_video","summary":"Generate a video","description":"Creates an asynchronous job. Credits for the estimated cost are held immediately; the actual provider cost is charged when the job succeeds and the rest of the hold is released. Failed and blocked jobs cost nothing.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Repeating a request with the same key returns the first job instead of creating another"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoRequest"},"examples":{"text":{"summary":"Text-to-video with model defaults","value":{"model":"wan-3.0","prompt":"A red kite over a quiet beach at sunset"}}}}}},"responses":{"200":{"description":"Existing job for this Idempotency-Key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"existing":{"summary":"The existing job is returned without starting another","value":{"id":"job_example_video","object":"video","status":"queued","model":"wan-3.0","mode":"text","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":null,"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}}}}}},"202":{"description":"Job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"queued":{"summary":"Accepted generation; credits are held","value":{"id":"job_example_video","object":"video","status":"queued","model":"wan-3.0","mode":"text","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":null,"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits (uploads: the account is not funded)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account frozen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"No provider can serve these parameters, or content moderation refused the request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/videos/{id}":{"get":{"operationId":"get_video","summary":"Get a video job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":50},"description":"Long-poll: seconds to wait for the job to finish"}],"description":"Use wait to long-poll. Repeat until status is succeeded, failed, blocked or canceled; read output on success and error on failure.","responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"video_queued":{"summary":"video generation: queued","value":{"id":"job_example_video","object":"video","status":"queued","model":"wan-3.0","mode":"text","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":null,"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}},"video_succeeded":{"summary":"video generation: succeeded","value":{"id":"job_example_video","object":"video","status":"succeeded","model":"wan-3.0","mode":"text","provider":"sandbase","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[{"url":"https://api.studiorouter.com/files/example/video.mp4","content_type":"video/mp4"}],"error":null,"estimated_cost_usd":0.325,"cost_usd":0.325,"attempts":[{"provider":"sandbase","status":"succeeded"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}},"video_failed":{"summary":"video generation: failed","value":{"id":"job_example_video","object":"video","status":"failed","model":"wan-3.0","mode":"text","provider":"sandbase","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":{"code":"provider_unavailable","message":"The provider could not run this generation right now. You were not charged. Try again later, or set \"fallback\": true to let other providers take it."},"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[{"provider":"sandbase","status":"failed"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/images":{"post":{"operationId":"create_image","summary":"Generate an image","description":"Creates an asynchronous job. Credits for the estimated cost are held immediately; the actual provider cost is charged when the job succeeds and the rest of the hold is released. Failed and blocked jobs cost nothing.","parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","maxLength":255},"description":"Repeating a request with the same key returns the first job instead of creating another"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImageRequest"},"examples":{"text":{"summary":"Text-to-image with model defaults","value":{"model":"nano-banana-2","prompt":"A red kite over a quiet beach at sunset"}}}}}},"responses":{"200":{"description":"Existing job for this Idempotency-Key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"existing":{"summary":"The existing job is returned without starting another","value":{"id":"job_example_image","object":"image","status":"queued","model":"nano-banana-2","mode":"text_to_image","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":null,"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}}}}}},"202":{"description":"Job accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"queued":{"summary":"Accepted generation; credits are held","value":{"id":"job_example_image","object":"image","status":"queued","model":"nano-banana-2","mode":"text_to_image","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":null,"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits (uploads: the account is not funded)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account frozen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"No provider can serve these parameters, or content moderation refused the request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/images/{id}":{"get":{"operationId":"get_image","summary":"Get a image job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":50},"description":"Long-poll: seconds to wait for the job to finish"}],"description":"Use wait to long-poll. Repeat until status is succeeded, failed, blocked or canceled; read output on success and error on failure.","responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"image_queued":{"summary":"image generation: queued","value":{"id":"job_example_image","object":"image","status":"queued","model":"nano-banana-2","mode":"text_to_image","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":null,"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}},"image_succeeded":{"summary":"image generation: succeeded","value":{"id":"job_example_image","object":"image","status":"succeeded","model":"nano-banana-2","mode":"text_to_image","provider":"atlas","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[{"url":"https://api.studiorouter.com/files/example/image.png","content_type":"image/png"}],"error":null,"estimated_cost_usd":0.028,"cost_usd":0.028,"attempts":[{"provider":"atlas","status":"succeeded"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}},"image_failed":{"summary":"image generation: failed","value":{"id":"job_example_image","object":"image","status":"failed","model":"nano-banana-2","mode":"text_to_image","provider":"atlas","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":{"code":"provider_unavailable","message":"The provider could not run this generation right now. You were not charged. Try again later, or set \"fallback\": true to let other providers take it."},"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[{"provider":"atlas","status":"failed"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jobs":{"get":{"operationId":"list_jobs","summary":"List your generations","description":"Newest first by default. Each job carries its full request (prompt, inputs, settings), cost, output, projects, star and note.","parameters":[{"name":"project","in":"query","schema":{"type":"string"},"description":"Project id or exact name"},{"name":"model","in":"query","schema":{"type":"string"},"description":"Model id, or several separated by commas"},{"name":"type","in":"query","schema":{"type":"string","enum":["video","image"]}},{"name":"status","in":"query","schema":{"type":"string"},"description":"One status or several separated by commas"},{"name":"starred","in":"query","schema":{"type":"boolean"}},{"name":"q","in":"query","schema":{"type":"string"},"description":"Words to find in the prompt or note"},{"name":"sort","in":"query","schema":{"type":"string","enum":["latest","oldest"],"default":"latest"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":24}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"`next_cursor` of the previous page"}],"responses":{"200":{"description":"Jobs","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Job"}},"has_more":{"type":"boolean"},"next_cursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/jobs/{id}":{"get":{"operationId":"get_job","summary":"Get a job job","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"wait","in":"query","required":false,"schema":{"type":"integer","minimum":0,"maximum":50},"description":"Long-poll: seconds to wait for the job to finish"}],"description":"Use wait to long-poll. Repeat until status is succeeded, failed, blocked or canceled; read output on success and error on failure.","responses":{"200":{"description":"The job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"},"examples":{"video_queued":{"summary":"video generation: queued","value":{"id":"job_example_video","object":"video","status":"queued","model":"wan-3.0","mode":"text","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":null,"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}},"video_succeeded":{"summary":"video generation: succeeded","value":{"id":"job_example_video","object":"video","status":"succeeded","model":"wan-3.0","mode":"text","provider":"sandbase","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[{"url":"https://api.studiorouter.com/files/example/video.mp4","content_type":"video/mp4"}],"error":null,"estimated_cost_usd":0.325,"cost_usd":0.325,"attempts":[{"provider":"sandbase","status":"succeeded"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}},"video_failed":{"summary":"video generation: failed","value":{"id":"job_example_video","object":"video","status":"failed","model":"wan-3.0","mode":"text","provider":"sandbase","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"720p","duration":5,"aspect_ratio":"16:9","prompt_expansion":"off"},"output":[],"error":{"code":"provider_unavailable","message":"The provider could not run this generation right now. You were not charged. Try again later, or set \"fallback\": true to let other providers take it."},"estimated_cost_usd":0.325,"cost_usd":null,"attempts":[{"provider":"sandbase","status":"failed"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}},"image_queued":{"summary":"image generation: queued","value":{"id":"job_example_image","object":"image","status":"queued","model":"nano-banana-2","mode":"text_to_image","provider":null,"request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":null,"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":null}},"image_succeeded":{"summary":"image generation: succeeded","value":{"id":"job_example_image","object":"image","status":"succeeded","model":"nano-banana-2","mode":"text_to_image","provider":"atlas","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[{"url":"https://api.studiorouter.com/files/example/image.png","content_type":"image/png"}],"error":null,"estimated_cost_usd":0.028,"cost_usd":0.028,"attempts":[{"provider":"atlas","status":"succeeded"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}},"image_failed":{"summary":"image generation: failed","value":{"id":"job_example_image","object":"image","status":"failed","model":"nano-banana-2","mode":"text_to_image","provider":"atlas","request":{"prompt":"A red kite over a quiet beach at sunset","resolution":"1k","aspect_ratio":"1:1"},"output":[],"error":{"code":"provider_unavailable","message":"The provider could not run this generation right now. You were not charged. Try again later, or set \"fallback\": true to let other providers take it."},"estimated_cost_usd":0.028,"cost_usd":null,"attempts":[{"provider":"atlas","status":"failed"}],"input_copies":{},"projects":[],"starred":false,"note":null,"created_at":"2026-01-01T12:00:00.000Z","completed_at":"2026-01-01T12:01:00.000Z"}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_job","summary":"Star, annotate or file a generation","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"type":"string"},"description":"Replace the projects it is filed under (ids or names)"},"add_projects":{"type":"array","items":{"type":"string"}},"remove_projects":{"type":"array","items":{"type":"string"}},"starred":{"type":"boolean"},"note":{"type":["string","null"],"maxLength":2000}}}}}},"responses":{"200":{"description":"The updated job","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Job"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/projects":{"get":{"operationId":"list_projects","summary":"List your projects with counts","responses":{"200":{"description":"Projects","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Project"}}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"create_project","summary":"Create a project","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectInput"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict (name taken, or the default project)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/projects/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Project id or exact name"}],"get":{"operationId":"get_project","summary":"Get a project","responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"update_project","summary":"Rename, describe or make default","requestBody":{"required":true,"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ProjectInput"}],"properties":{"is_default":{"type":"boolean","enum":[true]}}}}}},"responses":{"200":{"description":"Project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict (name taken, or the default project)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"delete_project","summary":"Delete a project","description":"Its generations are kept; those filed only here move to the default project. The default project cannot be deleted.","responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"deleted":{"type":"boolean"},"moved_to_default":{"type":"integer"}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Conflict (name taken, or the default project)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/balance":{"get":{"operationId":"get_balance","summary":"Credit balance","responses":{"200":{"description":"Balance in USD","content":{"application/json":{"schema":{"type":"object","properties":{"balance_usd":{"type":"number"},"held_usd":{"type":"number"},"spent_usd":{"type":"number"}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/checkout":{"post":{"operationId":"create_top_up_link","summary":"Create a top-up link","description":"Creates a Stripe Checkout page that adds `credit_usd` of prepaid credit. Give `url` to the user to open and pay; the credit appears in the balance seconds after payment. Packs: 25, 50, 100, 200, 500 (fees 8% to 5.5%), or a whole amount from 501 to 10000 at 5.5%.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["credit_usd"],"properties":{"credit_usd":{"type":"integer","example":50}}}}}},"responses":{"201":{"description":"Payment page created","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"credit_usd":{"type":"number"},"fee_usd":{"type":"number"},"price_usd":{"type":"number"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Account frozen","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/feedback":{"post":{"operationId":"send_feedback","summary":"Report a problem or request a model or feature","description":"Sends a problem report (`kind: \"problem\"`) or a model/feature request (`kind: \"request\"`) to the Studio Router team, who may reply by email. Up to 3 an hour and 10 a day per account and kind; more returns 429 `rate_limited`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind","message"],"properties":{"kind":{"type":"string","enum":["problem","request"]},"message":{"type":"string","maxLength":4000},"job_id":{"type":"string"}}}}}},"responses":{"201":{"description":"Received","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"integer"},"received":{"type":"boolean"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files":{"post":{"operationId":"upload_file","summary":"Upload an input file","description":"Send the raw file as the body with its Content-Type (image, video or audio; max 50 MB). Returns a URL to use as `image`, `video` or a reference. Funded accounts only; a file no generation uses within 24 hours is deleted.","requestBody":{"required":true,"content":{"image/*":{"schema":{"type":"string","format":"binary"}},"video/*":{"schema":{"type":"string","format":"binary"}},"audio/*":{"schema":{"type":"string","format":"binary"}}}},"responses":{"201":{"description":"Stored","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"content_type":{"type":"string"},"size_bytes":{"type":"integer"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits (uploads: the account is not funded)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File too large, or the account storage is full","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/uploads":{"post":{"operationId":"create_upload_url","summary":"Create a one-time upload link","description":"For agents and scripts without the API key at hand: PUT the raw file to `upload_url` (valid 1 hour, one file, max 50 MB), or send a person to `upload_page_url`. With `content_type` the final `file_url` is returned at once. Funded accounts only.","requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"content_type":{"type":"string","enum":["video/mp4","video/quicktime","video/webm","image/png","image/jpeg","image/webp","image/gif","audio/mpeg","audio/wav"]}}}}}},"responses":{"201":{"description":"Upload link","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"upload_url":{"type":"string"},"method":{"type":"string","enum":["PUT"]},"file_url":{"type":["string","null"]},"upload_page_url":{"type":"string"},"max_bytes":{"type":"integer"},"expires_at":{"type":"string","format":"date-time"},"command":{"type":"string","description":"Ready-to-run curl command"}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits (uploads: the account is not funded)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"File too large, or the account storage is full","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/uploads/{id}":{"get":{"operationId":"get_upload","summary":"Check an upload link","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Status","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","complete","expired"]},"file_url":{"type":["string","null"]}}}}}},"401":{"description":"Missing or wrong API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","description":"API key from the dashboard: `Authorization: Bearer sr_live_…`"}},"schemas":{"VideoRequest":{"type":"object","properties":{"model":{"type":"string","minLength":1,"description":"Model id from GET /v1/models, e.g. \"seedance-2.5\""},"prompt":{"type":"string","minLength":1,"maxLength":20000,"description":"What to generate"},"mode":{"description":"Input mode. Inferred from the inputs when omitted; required to choose \"extend\" over \"edit\" when `video` is set","type":"string","enum":["text","first_frame","first_last_frame","reference","edit","extend"]},"image":{"description":"First frame image URL","type":"string","maxLength":2048},"last_image":{"description":"Last frame image URL (needs `image`)","type":"string","maxLength":2048},"reference_images":{"description":"Reference image URLs","maxItems":30,"type":"array","items":{"type":"string","maxLength":2048}},"reference_videos":{"description":"Reference video URLs","maxItems":10,"type":"array","items":{"type":"string","maxLength":2048}},"reference_audios":{"description":"Reference audio URLs","maxItems":10,"type":"array","items":{"type":"string","maxLength":2048}},"video":{"description":"Source video URL for edit / extend","type":"string","maxLength":2048},"duration":{"description":"Output length in seconds","type":"integer","minimum":1,"maximum":60},"resolution":{"description":"e.g. \"480p\", \"720p\", \"1080p\", \"4k\"","type":"string","maxLength":16},"aspect_ratio":{"description":"e.g. \"16:9\", \"9:16\", \"1:1\"","type":"string","maxLength":16},"audio":{"description":"Generate audio where the model supports it (default true)","type":"boolean"},"seed":{"description":"Random seed where the provider takes one (a hint: not every provider honours it)","type":"integer","minimum":0,"maximum":2147483647},"prompt_expansion":{"description":"Let the model rewrite the prompt before generating (Wan 3.0 / Prime, H3 Max, HeyGen Video 1): \"off\" (default), \"on\" or \"quality\" (slower, richer rewrite). Default: off wherever the provider has a switch. When set, only providers that can honour the value are used","type":"string","enum":["off","on","quality"]},"negative_prompt":{"description":"What should not appear. Only providers that take a negative prompt are used","type":"string","minLength":1,"maxLength":5000},"provider":{"description":"Restrict to one provider or an ordered list; default: the cheapest","anyOf":[{"type":"string"},{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string"}}]},"fallback":{"description":"Default false: the job runs only on the cheapest provider; if that provider fails, the job fails and nothing is charged. true: if it fails, try the next cheapest (up to 3 providers; credits for the dearest are held). An ordered `provider` list implies true.","type":"boolean"},"project":{"description":"Project id (prj_…) or exact name, or a list of them, to save the result to. Default: the default project","anyOf":[{"type":"string","minLength":1,"maxLength":80},{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}]},"webhook_url":{"description":"We POST the final job object here","type":"string","maxLength":2048},"metadata":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":512}}},"required":["model","prompt"],"additionalProperties":false},"ImageRequest":{"type":"object","properties":{"model":{"type":"string","minLength":1,"description":"Model id from GET /v1/models, e.g. \"nano-banana-2\""},"prompt":{"type":"string","minLength":1,"maxLength":20000},"images":{"description":"Input image URLs; when set the request is an image edit","maxItems":16,"type":"array","items":{"type":"string","maxLength":2048}},"resolution":{"description":"\"1k\", \"2k\" or \"4k\" (some models also \"0.5k\")","type":"string","maxLength":16},"aspect_ratio":{"description":"e.g. \"1:1\", \"16:9\"","type":"string","maxLength":16},"quality":{"description":"GPT Image models only","type":"string","enum":["low","medium","high"]},"output_format":{"type":"string","enum":["png","jpeg","webp"]},"seed":{"description":"Random seed where the provider takes one (a hint)","type":"integer","minimum":0,"maximum":2147483647},"provider":{"anyOf":[{"type":"string"},{"minItems":1,"maxItems":6,"type":"array","items":{"type":"string"}}]},"fallback":{"description":"Default false: the job runs only on the cheapest provider; if that provider fails, the job fails and nothing is charged. true: if it fails, try the next cheapest (up to 3 providers; credits for the dearest are held). An ordered `provider` list implies true.","type":"boolean"},"project":{"description":"Project id (prj_…) or exact name, or a list of them, to save the result to. Default: the default project","anyOf":[{"type":"string","minLength":1,"maxLength":80},{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":80}}]},"webhook_url":{"type":"string","maxLength":2048},"metadata":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"type":"string","maxLength":512}}},"required":["model","prompt"],"additionalProperties":false},"ModelControls":{"type":"object","required":["seed","audio_toggle","negative_prompt","max_reference_images","max_reference_videos","max_reference_audios"],"properties":{"seed":{"type":"boolean"},"audio_toggle":{"type":"boolean"},"prompt_expansion":{"type":"array","items":{"type":"string","enum":["off","on","quality"]}},"negative_prompt":{"type":"boolean"},"quality":{"type":"array","items":{"type":"string"}},"output_format":{"type":"array","items":{"type":"string"}},"max_reference_images":{"type":"integer","minimum":0},"max_reference_videos":{"type":"integer","minimum":0},"max_reference_audios":{"type":"integer","minimum":0},"max_images":{"type":"integer","minimum":0},"max_prompt_chars":{"type":"integer","minimum":1}}},"ModelPrice":{"type":"object","required":["unit","usd"],"properties":{"unit":{"type":"string","enum":["per image","per second"]},"usd":{"type":"object","additionalProperties":{"type":"number","minimum":0},"description":"USD rates keyed by resolution or quality:resolution. Other billing components are listed separately."},"with_input_video_usd":{"type":"object","required":["per_output_second","per_input_second"],"properties":{"per_output_second":{"type":"object","additionalProperties":{"type":"number","minimum":0}},"per_input_second":{"type":"object","additionalProperties":{"type":"number","minimum":0}}}},"max_billed_input_seconds":{"type":"number","minimum":0},"per_input_image_usd":{"type":"number","minimum":0},"flat_usd":{"type":"number","minimum":0},"per_prompt_char_usd":{"type":"number","minimum":0},"prompt_expansion_usd":{"type":"number","minimum":0}}},"ModelProvider":{"type":"object","required":["provider","name","resolutions","controls","price"],"properties":{"provider":{"type":"string","enum":["machgen","replicate","atlas","sandbase","fal","wavespeed","mock","mock_b"]},"name":{"type":"string"},"resolutions":{"type":"array","items":{"type":"string"}},"duration":{"type":"object","required":["min","max"],"properties":{"min":{"type":"number"},"max":{"type":"number"}}},"aspect_ratios":{"type":"array","items":{"type":"string"}},"controls":{"$ref":"#/components/schemas/ModelControls"},"price":{"$ref":"#/components/schemas/ModelPrice"}}},"ModelMode":{"type":"object","required":["mode","label","resolutions","aspect_ratios","controls","from_usd","providers"],"properties":{"mode":{"type":"string","enum":["text","first_frame","first_last_frame","reference","edit","extend","text_to_image","image_edit"]},"label":{"type":"string"},"resolutions":{"type":"array","items":{"type":"string"}},"duration":{"type":"object","required":["min","max"],"properties":{"min":{"type":"number"},"max":{"type":"number"}}},"aspect_ratios":{"type":"array","items":{"type":"string"}},"controls":{"$ref":"#/components/schemas/ModelControls"},"from_usd":{"type":["number","null"],"minimum":0,"description":"Lowest base rate per image or output second, before request-specific additions"},"providers":{"type":"array","items":{"$ref":"#/components/schemas/ModelProvider"}}}},"Model":{"type":"object","required":["id","name","creator","type","description","defaults","endpoint","modes"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"creator":{"type":"string"},"type":{"type":"string","enum":["video","image"]},"description":{"type":"string"},"defaults":{"type":"object","required":["resolution"],"properties":{"resolution":{"type":"string"},"duration":{"type":"integer","minimum":1},"prompt_expansion":{"type":"string","enum":["off","on","quality"]}}},"endpoint":{"type":"string","enum":["/v1/videos","/v1/images"]},"modes":{"type":"array","items":{"$ref":"#/components/schemas/ModelMode"}}}},"ModelList":{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Model"}}}},"ProviderEstimate":{"type":"object","required":["provider","estimated_cost_usd"],"properties":{"provider":{"type":"string","enum":["machgen","replicate","atlas","sandbase","fal","wavespeed","mock","mock_b"]},"estimated_cost_usd":{"type":"number","minimum":0}}},"Estimate":{"type":"object","required":["model","mode","resolution","duration","input_video_seconds","estimated_cost_usd","hold_usd","fallback","providers","other_providers"],"properties":{"model":{"type":"string"},"mode":{"type":"string","enum":["text","first_frame","first_last_frame","reference","edit","extend","text_to_image","image_edit"]},"resolution":{"type":"string"},"duration":{"type":["integer","null"],"description":"Output seconds, or null when the request does not set a duration"},"input_video_seconds":{"type":["number","null"],"description":"Measured input-video duration, or null when not measured"},"estimated_cost_usd":{"type":"number","minimum":0,"description":"Estimated charge from the first provider"},"hold_usd":{"type":"number","minimum":0,"description":"Credits a generation would reserve, covering the dearest fallback provider. Estimating alone reserves nothing."},"fallback":{"type":"boolean","description":"Whether more than one provider would be tried"},"providers":{"type":"array","minItems":1,"description":"Providers that would be tried, in order","items":{"$ref":"#/components/schemas/ProviderEstimate"}},"other_providers":{"type":"array","description":"Other capable providers that are not included in this request's plan","items":{"$ref":"#/components/schemas/ProviderEstimate"}}}},"Job":{"type":"object","required":["id","object","status","model","mode","provider","request","output","error","estimated_cost_usd","cost_usd","attempts","projects","starred","note","created_at","completed_at"],"properties":{"id":{"type":"string","example":"job_9k2m…"},"object":{"type":"string","enum":["video","image"]},"status":{"type":"string","enum":["queued","running","succeeded","failed","blocked","canceled"]},"model":{"type":"string"},"mode":{"type":"string","enum":["text","first_frame","first_last_frame","reference","edit","extend","text_to_image","image_edit"]},"provider":{"type":["string","null"],"description":"Provider that ran (or is running) the job"},"request":{"type":"object","required":["prompt","resolution"],"properties":{"prompt":{"type":"string"},"resolution":{"type":"string"}},"description":"The parameters the job runs with, defaults applied; includes input URLs and other settings when supplied"},"output":{"type":"array","description":"Result files; an empty array until success. URLs are ours and do not expire.","items":{"type":"object","required":["url","content_type"],"properties":{"url":{"type":"string","format":"uri"},"content_type":{"type":"string"},"size_bytes":{"type":"integer"}}}},"error":{"type":["object","null"],"required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"}}},"estimated_cost_usd":{"type":"number"},"cost_usd":{"type":["number","null"],"description":"Actual provider cost charged, once the job succeeded"},"attempts":{"type":"array","items":{"type":"object","required":["provider","status"],"properties":{"provider":{"type":"string"},"status":{"type":"string","enum":["submitted","succeeded","failed"]}}}},"projects":{"type":"array","description":"Projects the generation is saved to","items":{"type":"object","required":["id","name"],"properties":{"id":{"type":"string"},"name":{"type":"string"}}}},"starred":{"type":"boolean","description":"Marked by the user as a result that worked"},"note":{"type":["string","null"]},"metadata":{"type":"object","additionalProperties":{"type":"string"},"description":"Caller-supplied metadata, omitted when none was supplied"},"created_at":{"type":"string","format":"date-time"},"completed_at":{"type":["string","null"],"format":"date-time"}}},"Project":{"type":"object","properties":{"id":{"type":"string","example":"prj_4f…"},"object":{"type":"string","enum":["project"]},"name":{"type":"string"},"description":{"type":["string","null"]},"is_default":{"type":"boolean","description":"Takes generations that name no project"},"media_count":{"type":"integer","description":"Succeeded generations"},"video_count":{"type":"integer"},"image_count":{"type":"integer"},"running_count":{"type":"integer"},"spent_usd":{"type":"number"},"models":{"type":"array","items":{"type":"string"},"description":"Model ids used, most used first"},"cover":{"type":["object","null"],"properties":{"url":{"type":"string"},"content_type":{"type":"string"}}},"last_generated_at":{"type":["string","null"],"format":"date-time"},"created_at":{"type":"string","format":"date-time"},"updated_at":{"type":"string","format":"date-time"}}},"ProjectInput":{"type":"object","properties":{"name":{"type":"string","maxLength":80,"description":"Unique in the account"},"description":{"type":["string","null"],"maxLength":1000,"description":"What belongs in the project; agents read it to file requests"}}},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"}},"required":["code","message"]}},"required":["error"]}}}}