Hi guys, just wondering how to generate longer videos than 12 seconds with Sora2.
must be with full context.
Thanks
You and me both. Our only use case for Sora 2 Pro requires a minimum of 60 seconds.
I think any increase in video duration will gradually happen over time. Merging videos smoothly may be problematic.
What do u mean ?
can i make 60 seconds video with Sora 2 pro ?
A minute of Sora? Only seen in early evaluatorsβ demos.
We can go right to the API reference - the validation done, to see what can be requested.
How about a better API reference for the video creation lifecycle?
Create (POST /videos)
| parameter [optional /required] | type [enum or range] | description |
|---|---|---|
| model [optional] | string enum: sora-2,sora-2-pro |
Video generation model; default sora-2. |
| prompt [required] | string length: 1β32000 |
Text prompt describing the video to generate. |
| input_reference [optional] | binary file | Optional guiding image; use multipart/form-data only. |
| seconds [optional] | string enum: β4β,β8β,β12β |
Target clip duration; default β4β. |
| size [optional] | string enum: 720x1280,1280x720,1024x1792,1792x1024 |
Output resolution; default 720x1280. |
GET/ POLL
get https://api.openai.com/v1/videos/{video_id}
Response object shape (Video job; for both create and retrieve)
| field | type [enum or range] | description |
|---|---|---|
| id [required] | string | Unique job identifier. |
| object [required] | string const: video |
Object type. |
| model [required] | string enum: sora-2,sora-2-pro |
Echoed model. |
| status [required] | string enum: queued,in_progress,completed,failed |
Lifecycle status. |
| progress [required] | integer | Approximate completion percent. |
| created_at [required] | integer | Unix timestamp (s). |
| completed_at [required] | integer | null |
| expires_at [required] | integer | null |
| size [required] | string enum: 720x1280,1280x720,1024x1792,1792x1024 |
Echoed resolution. |
| seconds [required] | string enum: β4β,β8β,β12β |
Echoed duration. |
| remixed_from_video_id [required] | string | null |
| error [required] | object{code:string,message:string} | null |
Retrieve video content (GET /videos/{video_id}/content)
Request parameters
| parameter [optional or required] | type [enum or range] | description |
|---|---|---|
| video_id [required] | string | PATH - The identifier of the video to download. |
| variant [optional] | string enum: video,thumbnail,spritesheet |
QUERY - Which asset to return; default video. |
200 OK response (by variant)
| variant | Content-Type | body | notes |
|---|---|---|---|
| video (default) | video/mp4 | binary | Final MP4 render stream. |
| thumbnail | image/webp | binary | Representative still image. |
| spritesheet | image/webp | binary | Preview spritesheet image. |
| N/A (non-binary cases) | application/json | string | May return textual JSON instead of bytes in edge conditions. |
Remix (POST /videos/{video_id}/remix)
| parameter [optional or required] | type [enum or range] | description |
|---|---|---|
| video_id [required] | string | Path parameter; the identifier of the completed video to remix. |
| prompt [required] | string length: 1β32000 |
Updated text prompt directing the remix generation. |
Conclusion
Request other than 4, 8, or 12 seconds, youβre going to be errored out by the request validation.
To merge videos, you would want to use tools that can demux MP4 streams and re-combine them losslessly with append, rather than simply loading them up into Premiere and re-encoding. AVIDemux is in my start menu.
Thanks,
so what is the use of the remix endpoint ?
Donβt like your video? Prompt again with the previous video ID for a tune-up.
Thank you i appreciate it !