sora-2-api / index.html
bna
chore: update out artifacts
94d9893
<!DOCTYPE html><!--cDW7_XLdebiMrj7_fElKq--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" as="image" href="https://freesoragenerator.com/logo.png"/><link rel="stylesheet" href="/_next/static/chunks/f0656f31f040fe23.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/c0dde58672dc2335.js"/><script src="/_next/static/chunks/c6a428e9c98d9859.js" async=""></script><script src="/_next/static/chunks/037e891ec6c5cf47.js" async=""></script><script src="/_next/static/chunks/turbopack-004b2690c7ecf030.js" async=""></script><script src="/_next/static/chunks/8e5cbd5277a6eb4f.js" async=""></script><script src="/_next/static/chunks/351283919579e33c.js" async=""></script><script src="/_next/static/chunks/c0fc701640dc5196.js" async=""></script><meta name="next-size-adjust" content=""/><title>Sora 2 Free - Free Sora Generator | Sora 2 Web &amp; API</title><meta name="description" content="Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API"/><meta name="keywords" content="sora 2 free,sora 2 web,sora2 web,sora video,sora 2 api,免费 sora 2,sora 视频,Free Sora Generator"/><meta property="og:title" content="Sora 2 Free - Free Sora Generator | Sora 2 Web &amp; API"/><meta property="og:description" content="Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API"/><meta property="og:url" content="https://freesoragenerator.com"/><meta property="og:site_name" content="Sora 2 Free"/><meta property="og:locale" content="en_US"/><meta property="og:image" content="https://freesoragenerator.com/logo.png"/><meta property="og:image:width" content="512"/><meta property="og:image:height" content="512"/><meta property="og:image:alt" content="Sora 2 Free"/><meta property="og:locale:alternate" content="zh_CN"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Sora 2 Free - Free Sora Generator | Sora 2 Web &amp; API"/><meta name="twitter:description" content="Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API"/><meta name="twitter:image" content="https://freesoragenerator.com/logo.png"/><meta name="twitter:image:width" content="512"/><meta name="twitter:image:height" content="512"/><meta name="twitter:image:alt" content="Sora 2 Free"/><link rel="icon" href="/favicon.ico?favicon.0b3bf435.ico" sizes="256x256" type="image/x-icon"/><link rel="icon" href="https://freesoragenerator.com/logo.png"/><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body class="geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased"><div hidden=""><!--$--><!--/$--></div><div id="top" class="min-h-screen bg-gradient-to-b from-amber-50 via-white to-slate-100 text-neutral-900"><div class="mx-auto flex max-w-6xl flex-col gap-6 px-4 py-6 lg:py-10"><div class="rounded-2xl border border-amber-200/80 bg-amber-50/80 px-4 py-3 text-sm text-amber-900 shadow-sm"><div class="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"><div class="flex flex-wrap items-start gap-2"><span class="inline-flex items-center gap-2 rounded-full bg-amber-100 px-3 py-1 text-xs font-semibold uppercase tracking-wide text-amber-800"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check size-4" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg>Heads up</span><p class="flex-1 text-sm leading-relaxed text-amber-900">This app uses the freesoragenerator.com API. New users get 20+10 credits. $1 buys 1,000 credits (about 50 videos). API access supported.</p></div><a href="https://freesoragenerator.com/gallery" target="_blank" rel="noreferrer" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border shadow-xs hover:bg-accent dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-8 rounded-md gap-1.5 px-3 has-[&gt;svg]:px-2.5 border-amber-200 bg-white/80 text-amber-900 hover:border-amber-300 hover:text-amber-900">View Sora2 showcase</a></div></div><header class="relative z-20 flex flex-col gap-4 rounded-2xl border border-neutral-200/80 bg-white/80 px-4 py-3 shadow-sm backdrop-blur-md md:flex-row md:items-center md:justify-between"><div class="flex flex-col gap-3 sm:flex-row sm:items-center"><div class="flex items-center gap-4"><div class="relative h-11 w-11 overflow-hidden rounded-2xl border border-orange-100 bg-black shadow-md"><img alt="Sora 2 Free logo" decoding="async" data-nimg="fill" class="object-contain p-1.5" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://freesoragenerator.com/logo.png"/></div><div class="space-y-0.5"><p class="text-lg font-semibold leading-none">Sora 2 Web</p><p class="text-sm text-neutral-500">Create Sora videos online or via API</p></div></div><nav class="flex w-full flex-wrap items-center gap-2 text-sm text-neutral-700 sm:w-auto"><a class="rounded-full border border-neutral-200 px-3 py-1.5 font-medium hover:border-orange-300 hover:text-orange-700" href="https://freesoragenerator.com/" target="_blank" rel="noreferrer">Sora 2 Web</a><a class="rounded-full border border-neutral-200 px-3 py-1.5 font-medium hover:border-orange-300 hover:text-orange-700" href="https://freesoragenerator.com/sora2-api" target="_blank" rel="noreferrer">Sora 2 API</a></nav></div><div class="flex flex-wrap items-center gap-3"><div class="flex h-9 items-center gap-2 rounded-xl border border-neutral-200 bg-white px-2 text-sm shadow-inner"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-languages size-4 text-neutral-500" aria-hidden="true"><path d="m5 8 6 6"></path><path d="m4 14 6-6 2-3"></path><path d="M2 5h12"></path><path d="M7 2h1"></path><path d="m22 22-5-10-5 10"></path><path d="M14 18h6"></path></svg><button type="button" role="combobox" aria-controls="radix-_R_9iavb_" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex w-full items-center justify-between gap-2 rounded-xl border-neutral-200 text-sm font-medium text-neutral-800 shadow-inner transition focus:outline-none focus:ring-neutral-200 disabled:cursor-not-allowed disabled:opacity-60 h-8 min-w-28 border-0 bg-transparent px-0 shadow-none focus:ring-0" aria-label="Language"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-4 text-neutral-500" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div><div class="relative"><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive text-primary-foreground hover:bg-primary/90 h-9 py-2 has-[&gt;svg]:px-3 rounded-full bg-gradient-to-r from-orange-500 to-amber-600 px-4 shadow-lg"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-log-in size-4" aria-hidden="true"><path d="m10 17 5-5-5-5"></path><path d="M15 12H3"></path><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path></svg><span>Login</span></button></div></div></header><main class="grid gap-5 lg:grid-cols-[1.1fr_0.9fr]"><div class="rounded-2xl border backdrop-blur transition hover:shadow-md dark:bg-neutral-900 border-transparent bg-white/85 shadow-md"><div class="flex flex-col gap-1.5 p-6"><div class="flex flex-wrap items-center gap-2 text-sm font-medium text-amber-700"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles size-4" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg>Generate cinematic Sora videos in seconds</div><h3 class="font-semibold tracking-tight text-2xl lg:text-[26px]">Enter a prompt, pick your ratio, and let the generator handle the rest.</h3><p class="text-sm text-neutral-500 dark:text-neutral-400">Submit text or image prompts and the app keeps checking until your clip is ready.</p></div><div class="p-6 pt-0"><form class="space-y-4"><div class="grid gap-3 sm:grid-cols-2"><div class="space-y-2"><label class="text-sm font-medium text-neutral-700 dark:text-neutral-200" for="model">Model</label><button type="button" role="combobox" aria-controls="radix-_R_96bavb_" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex h-11 w-full items-center justify-between gap-2 rounded-xl border border-neutral-200 bg-white px-3 text-sm font-medium text-neutral-800 shadow-inner transition focus:outline-none focus:ring-2 focus:ring-neutral-200 disabled:cursor-not-allowed disabled:opacity-60" id="model"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-4 text-neutral-500" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div><div class="space-y-2"><label class="text-sm font-medium text-neutral-700 dark:text-neutral-200" for="aspect">Aspect ratio</label><button type="button" role="combobox" aria-controls="radix-_R_a6bavb_" aria-expanded="false" aria-autocomplete="none" dir="ltr" data-state="closed" class="flex h-11 w-full items-center justify-between gap-2 rounded-xl border border-neutral-200 bg-white px-3 text-sm font-medium text-neutral-800 shadow-inner transition focus:outline-none focus:ring-2 focus:ring-neutral-200 disabled:cursor-not-allowed disabled:opacity-60" id="aspect"><span style="pointer-events:none"></span><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down size-4 text-neutral-500" aria-hidden="true"><path d="m6 9 6 6 6-6"></path></svg></button><select aria-hidden="true" tabindex="-1" style="position:absolute;border:0;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;word-wrap:normal"></select></div></div><div class="space-y-2"><label class="text-sm font-medium text-neutral-700 dark:text-neutral-200" for="prompt">Describe your video</label><textarea class="flex min-h-[120px] w-full rounded-xl border border-neutral-200 bg-white px-3 py-2 text-sm shadow-inner transition placeholder:text-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-2 focus:ring-neutral-200 disabled:cursor-not-allowed disabled:opacity-60 dark:border-neutral-700 dark:bg-neutral-900 dark:text-neutral-100" id="prompt" placeholder="A cinematic shot of a futuristic city at sunset with flying cars gliding between glass towers.">A cinematic shot of a futuristic city at sunset with flying cars gliding between glass towers.</textarea><div class="flex gap-2 text-xs text-neutral-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wand-sparkles size-4" aria-hidden="true"><path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72"></path><path d="m14 7 3 3"></path><path d="M5 6v4"></path><path d="M19 14v4"></path><path d="M10 2v2"></path><path d="M7 8H3"></path><path d="M21 16h-4"></path><path d="M11 3H9"></path></svg><span>Recent updates stay visible so you can track progress.</span></div></div><div class="space-y-2"><label class="text-sm font-medium text-neutral-700 dark:text-neutral-200" for="image">Reference image (optional, base64)</label><input type="file" class="flex h-11 w-full rounded-xl border border-neutral-200 bg-white px-3 py-2 text-sm shadow-inner transition placeholder:text-neutral-400 focus:border-neutral-400 focus:outline-none focus:ring-2 focus:ring-neutral-200 disabled:cursor-not-allowed disabled:opacity-60 dark:border-neutral-700 dark:bg-neutral-900 dark:text-neutral-100" id="image" accept="image/*"/><p class="text-xs text-neutral-500">Drop or paste a base64 data URL</p></div><div class="flex flex-wrap gap-2 text-xs text-neutral-600"><span class="rounded-full bg-amber-100 px-3 py-1 font-semibold text-amber-800">Quick presets</span><button type="button" class="rounded-full border border-neutral-200 bg-white px-3 py-1 transition hover:border-neutral-300 hover:shadow-sm">Urban neon dream</button><button type="button" class="rounded-full border border-neutral-200 bg-white px-3 py-1 transition hover:border-neutral-300 hover:shadow-sm">Ocean documentary</button></div><div class="flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between"><div class="flex items-center gap-2 text-sm text-neutral-600"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check size-4 text-emerald-600" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg><span>Authorize to sync tasks</span><span class="rounded-full bg-neutral-100 px-2 py-1 text-xs font-semibold text-amber-700">Auth required</span></div><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-primary/90 h-9 px-4 py-2 has-[&gt;svg]:px-3 w-full rounded-full bg-gradient-to-r from-neutral-900 to-neutral-700 text-white shadow-lg sm:w-auto" type="submit"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-video size-4" aria-hidden="true"><path d="m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5"></path><rect x="2" y="6" width="14" height="12" rx="2"></rect></svg>Generate video</button></div></form></div></div><div class="space-y-4"><div class="rounded-2xl border backdrop-blur transition hover:shadow-md dark:bg-neutral-900 border-transparent bg-white/90 shadow-md"><div class="flex flex-col gap-1.5 p-6 pb-4"><div class="flex items-center gap-2 text-sm font-semibold text-neutral-700"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-earth size-4" aria-hidden="true"><path d="M21.54 15H17a2 2 0 0 0-2 2v4.54"></path><path d="M7 3.34V5a3 3 0 0 0 3 3a2 2 0 0 1 2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.1.9-2 2-2h3.17"></path><path d="M11 21.95V18a2 2 0 0 0-2-2a2 2 0 0 1-2-2v-1a2 2 0 0 0-2-2H2.05"></path><circle cx="12" cy="12" r="10"></circle></svg>Generation result</div><h3 class="font-semibold tracking-tight text-xl">Idle</h3><p class="text-sm text-neutral-500 dark:text-neutral-400">Results will appear here once the task finishes.</p></div><div class="p-6 pt-0 space-y-4"><div class="flex items-center justify-between text-sm font-medium text-neutral-700"><span>Progress<!-- -->: <!-- -->0<!-- -->%</span><span class="rounded-full bg-neutral-100 px-3 py-1 text-xs font-semibold text-neutral-700">Idle</span></div><div class="h-2 w-full overflow-hidden rounded-full bg-neutral-100"><div class="h-full rounded-full bg-gradient-to-r from-amber-500 to-orange-600 transition-all" style="width:0%"></div></div><div class="flex h-32 flex-col items-center justify-center gap-2 rounded-xl border border-dashed border-neutral-200 bg-neutral-50 text-sm text-neutral-500"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle size-4 animate-spin text-neutral-400" aria-hidden="true"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg>Results will appear here once the task finishes.</div><div class="flex items-center gap-2"><button data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3 gap-2 rounded-full" type="button" disabled=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-ccw size-4" aria-hidden="true"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"></path><path d="M16 16h5v5"></path></svg>Refresh status</button></div><div class="space-y-2 text-xs"><div class="flex items-center gap-2 font-semibold text-neutral-700"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-sparkles size-4" aria-hidden="true"><path d="M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z"></path><path d="M20 2v4"></path><path d="M22 4h-4"></path><circle cx="4" cy="20" r="2"></circle></svg>Recent updates</div><div class="space-y-1 rounded-lg bg-neutral-50 p-3"><p class="text-neutral-400">Recent updates stay visible so you can track progress.</p></div></div></div></div><div class="rounded-2xl border backdrop-blur transition hover:shadow-md dark:bg-neutral-900 border-transparent bg-white/90 shadow-md"><div class="flex flex-col gap-1.5 p-6 pb-3"><div class="flex items-center gap-2 text-sm font-semibold text-neutral-700"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-shield-check size-4 text-emerald-600" aria-hidden="true"><path d="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"></path><path d="m9 12 2 2 4-4"></path></svg>User</div><p class="text-sm text-neutral-500 dark:text-neutral-400">Authorize to sync tasks</p></div><div class="p-6 pt-0 space-y-3 text-sm text-neutral-700"><div class="flex items-center justify-between rounded-xl border border-dashed border-neutral-200 bg-neutral-50 px-3 py-3"><div class="space-y-1"><p class="font-semibold">Authorize to sync tasks</p><p class="text-xs text-neutral-500">Login tab opened. Approve sign-in to continue.</p></div><button data-slot="button" class="inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[&gt;svg]:px-3 rounded-full"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-log-in size-4" aria-hidden="true"><path d="m10 17 5-5-5-5"></path><path d="M15 12H3"></path><path d="M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4"></path></svg>Login</button></div></div></div></div></main><footer class="flex flex-col gap-3 rounded-2xl border border-neutral-200 bg-white/80 px-4 py-4 text-sm text-neutral-600 shadow-sm backdrop-blur-md md:flex-row md:items-center md:justify-between"><div class="flex items-center gap-3 font-semibold text-neutral-800"><div class="relative h-8 w-8 overflow-hidden rounded-xl border border-orange-100 bg-black shadow-sm"><img alt="Sora 2 Free logo" loading="lazy" decoding="async" data-nimg="fill" class="object-contain p-1" style="position:absolute;height:100%;width:100%;left:0;top:0;right:0;bottom:0;color:transparent" src="https://freesoragenerator.com/logo.png"/></div><span>Sora 2 Web</span></div><div class="flex flex-wrap items-center gap-3"><a class="rounded-full border border-neutral-200 px-3 py-1.5 font-medium text-neutral-800 hover:border-orange-300 hover:text-orange-700" href="https://freesoragenerator.com/" target="_blank" rel="noreferrer">Sora 2 Web</a><a class="rounded-full border border-neutral-200 px-3 py-1.5 font-medium text-neutral-800 hover:border-orange-300 hover:text-orange-700" href="https://freesoragenerator.com/sora2-api" target="_blank" rel="noreferrer">Sora 2 API</a><a href="#top" data-slot="button" class="inline-flex items-center justify-center whitespace-nowrap text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&amp;_svg]:pointer-events-none [&amp;_svg:not([class*=&#x27;size-&#x27;])]:size-4 shrink-0 [&amp;_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50 h-9 py-2 has-[&gt;svg]:px-3 gap-2 rounded-full px-3"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-ccw size-4" aria-hidden="true"><path d="M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8"></path><path d="M3 3v5h5"></path><path d="M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16"></path><path d="M16 16h5v5"></path></svg>Back to top</a><div class="rounded-full bg-neutral-100 px-3 py-1 text-xs font-semibold text-neutral-700">Create Sora videos online or via API</div></div></footer></div></div><!--$--><!--/$--><script src="/_next/static/chunks/c0dde58672dc2335.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[12426,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"default\"]\n3:I[80054,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"default\"]\n4:I[71312,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"ClientPageRoot\"]\n5:I[31713,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/c0fc701640dc5196.js\"],\"default\"]\n8:I[42178,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"OutletBoundary\"]\n9:\"$Sreact.suspense\"\nb:I[42178,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"ViewportBoundary\"]\nd:I[42178,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"MetadataBoundary\"]\nf:I[8699,[],\"default\"]\n:HL[\"/_next/static/chunks/f0656f31f040fe23.css\",\"style\"]\n:HL[\"/_next/static/media/797e433ab948586e-s.p.dbea232f.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/caa3a2e1cccd8315-s.p.853070df.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"cDW7_XLdebiMrj7-fElKq\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/f0656f31f040fe23.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"geist_a71539c9-module__T19VSG__variable geist_mono_8d43a2aa-module__8Li5zG__variable antialiased\",\"children\":[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L4\",null,{\"Component\":\"$5\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@6\",\"$@7\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/c0fc701640dc5196.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L8\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@a\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Lb\",null,{\"children\":\"$@c\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Ld\",null,{\"children\":[\"$\",\"$9\",null,{\"name\":\"Next.Metadata\",\"children\":\"$@e\"}]}]}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$f\",[]],\"S\":true}\n"])</script><script>self.__next_f.push([1,"6:{}\n7:\"$0:f:0:1:1:children:0:props:children:0:props:serverProvidedParams:params\"\n"])</script><script>self.__next_f.push([1,"c:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"10:I[29748,[\"/_next/static/chunks/8e5cbd5277a6eb4f.js\",\"/_next/static/chunks/351283919579e33c.js\"],\"IconMark\"]\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"title\",\"0\",{\"children\":\"Sora 2 Free - Free Sora Generator | Sora 2 Web \u0026 API\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API\"}],[\"$\",\"meta\",\"2\",{\"name\":\"keywords\",\"content\":\"sora 2 free,sora 2 web,sora2 web,sora video,sora 2 api,免费 sora 2,sora 视频,Free Sora Generator\"}],[\"$\",\"meta\",\"3\",{\"property\":\"og:title\",\"content\":\"Sora 2 Free - Free Sora Generator | Sora 2 Web \u0026 API\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:description\",\"content\":\"Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:url\",\"content\":\"https://freesoragenerator.com\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:site_name\",\"content\":\"Sora 2 Free\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:locale\",\"content\":\"en_US\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image\",\"content\":\"https://freesoragenerator.com/logo.png\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:width\",\"content\":\"512\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:height\",\"content\":\"512\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:alt\",\"content\":\"Sora 2 Free\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:locale:alternate\",\"content\":\"zh_CN\"}],[\"$\",\"meta\",\"13\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"14\",{\"name\":\"twitter:title\",\"content\":\"Sora 2 Free - Free Sora Generator | Sora 2 Web \u0026 API\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:description\",\"content\":\"Sora 2 Free on the web: create Sora video from text and images. Try Sora 2 web (sora2 web) to generate videos online, or integrate with the Sora 2 API\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:image\",\"content\":\"https://freesoragenerator.com/logo.png\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:image:width\",\"content\":\"512\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image:height\",\"content\":\"512\"}],[\"$\",\"meta\",\"19\",{\"name\":\"twitter:image:alt\",\"content\":\"Sora 2 Free\"}],[\"$\",\"link\",\"20\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?favicon.0b3bf435.ico\",\"sizes\":\"256x256\",\"type\":\"image/x-icon\"}],[\"$\",\"link\",\"21\",{\"rel\":\"icon\",\"href\":\"https://freesoragenerator.com/logo.png\"}],[\"$\",\"$L10\",\"22\",{}]]\n"])</script><script>self.__next_f.push([1,"a:null\n"])</script></body></html>