diff --git a/inference-api/reference/model-references.mdx b/inference-api/reference/model-references.mdx index eb9a3fc..86bf21b 100644 --- a/inference-api/reference/model-references.mdx +++ b/inference-api/reference/model-references.mdx @@ -34,6 +34,7 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page - [WAN 2.7 - Reference to Video](/inference-api/reference/models/wan-v2-7-reference-to-video) - [WAN 2.7 - Text to Video](/inference-api/reference/models/wan-v2-7-text-to-video) - [WAN 3.0](/inference-api/reference/models/wan-v3-0-video) +- [WAN 3.0 Prime](/inference-api/reference/models/wan-v3-0-video-prime) ## Anthropic @@ -55,7 +56,9 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page - [FLUX.2 [flex]](/inference-api/reference/models/flux-2-flex) - [FLUX.2 [pro]](/inference-api/reference/models/flux-2-pro) - [FLUX 3 Video](/inference-api/reference/models/flux-3-video) +- [FLUX Image Upscaler](/inference-api/reference/models/flux-image-upscaler) - [FLUX.1-Kontext [dev]](/inference-api/reference/models/flux-kontext-dev) +- [FLUX Video Upscaler](/inference-api/reference/models/flux-video-upscaler) ## ByteDance @@ -117,6 +120,7 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page ## Krea +- [Krea 2 Raw](/inference-api/reference/models/krea-2-raw) - [Krea 2 Large](/inference-api/reference/models/krea-v2-large-text-to-image) ## Lightricks @@ -220,6 +224,7 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page - [Topaz Astra 2](/inference-api/reference/models/topazlabs-astra-2-video) - [Topaz Bloom 2](/inference-api/reference/models/topazlabs-bloom-2-image) - [Topaz Bloom](/inference-api/reference/models/topazlabs-bloom-image) +- [Topaz Hyperion 2.5](/inference-api/reference/models/topazlabs-hyperion-2-5-video) - [Topaz Hyperion 2](/inference-api/reference/models/topazlabs-hyperion-2-video) - [Topaz Hyperion HDR](/inference-api/reference/models/topazlabs-hyperion-hdr-video) - [Topaz Image Upscaler](/inference-api/reference/models/topazlabs-image-upscale) @@ -227,6 +232,7 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page - [Topaz Proteus - Versatile Video Upscaler](/inference-api/reference/models/topazlabs-proteus-video) - [Topaz Rhea - Fine Detail Video Upscaler](/inference-api/reference/models/topazlabs-rhea-video) - [Topaz Starlight Precise 2.5](/inference-api/reference/models/topazlabs-upscale-starlight-2-5-video) +- [Topaz Starlight Precise 2.6](/inference-api/reference/models/topazlabs-upscale-starlight-2-6-video) - [Topaz Video Upscaler](/inference-api/reference/models/topazlabs-video-upscale) - [Topaz Wonder 3.5](/inference-api/reference/models/topazlabs-wonder-3-5-image) - [Topaz Wonder 3](/inference-api/reference/models/topazlabs-wonder-3-image) @@ -242,3 +248,4 @@ Every model exposed by the Oxen.AI inference API has a dedicated reference page ## Z AI - [GLM 5.2](/inference-api/reference/models/zai-org-glm-5-2) +- [GLM 5.3](/inference-api/reference/models/zai-org-glm-5-3) diff --git a/inference-api/reference/models/black-forest-labs-flux-2-klein-4b.mdx b/inference-api/reference/models/black-forest-labs-flux-2-klein-4b.mdx index d7cdfe9..d716473 100644 --- a/inference-api/reference/models/black-forest-labs-flux-2-klein-4b.mdx +++ b/inference-api/reference/models/black-forest-labs-flux-2-klein-4b.mdx @@ -637,7 +637,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Input images to transform or use as reference. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4. | | `output_quality` | `string` | `"standard"` | Quality setting for output image One of: standard, high. | | `output_format` | `string` | `"png"` | Format of the output image One of: png, jpg, webp. | | `seed` | `integer` | — | Random seed. Leave blank to randomize | diff --git a/inference-api/reference/models/black-forest-labs-flux-2-klein-9b.mdx b/inference-api/reference/models/black-forest-labs-flux-2-klein-9b.mdx index 9737e75..7939b46 100644 --- a/inference-api/reference/models/black-forest-labs-flux-2-klein-9b.mdx +++ b/inference-api/reference/models/black-forest-labs-flux-2-klein-9b.mdx @@ -637,7 +637,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Input images to transform or use as reference. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4. | | `output_quality` | `string` | `"standard"` | Quality setting for output image One of: standard, high. | | `output_format` | `string` | `"png"` | Format of the output image One of: png, jpg, webp. | | `seed` | `integer` | — | Random seed. Leave blank to randomize | diff --git a/inference-api/reference/models/bytedance-depth-anything-video.mdx b/inference-api/reference/models/bytedance-depth-anything-video.mdx index 17b735e..72c9d8b 100644 --- a/inference-api/reference/models/bytedance-depth-anything-video.mdx +++ b/inference-api/reference/models/bytedance-depth-anything-video.mdx @@ -436,7 +436,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ |-------|------|---------|-------------| | `depth_model` | `string` | `"VDA-Large"` | Depth estimation model size. VDA-Large = best quality, VDA-Small = fastest. One of: VDA-Small, VDA-Base, VDA-Large. | | `colormap` | `string` | `"grayscale"` | Colormap for depth visualization. One of: grayscale, turbo, inferno, magma, viridis. | -| `resolution` | `string` | `"auto"` | Output resolution. Auto preserves input resolution up to 1080p. One of: auto, 360p, 480p, 720p, 1080p. | +| `resolution` | `string` | `"auto"` | Resolution One of: auto, 360p, 480p, 720p, 1080p. | | `max_frames` | `integer` | — | Maximum number of frames to process. Leave unset to process all frames. | | `output_fps` | `number` | — | Output video FPS. Leave unset to use the input frame rate. | | `side_by_side` | `boolean` | `false` | If true, output a side-by-side original and depth comparison video. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-fast-image-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-fast-image-to-video.mdx index 3210f03..7a0aaf0 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-fast-image-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-fast-image-to-video.mdx @@ -124,10 +124,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -149,10 +149,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -331,10 +331,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -372,10 +372,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -564,10 +564,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -602,10 +602,10 @@ ByteDance Seedance 2.0 Fast animates a starting frame with optional end-frame tr "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -660,8 +660,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_image_has_face` | `boolean` | `false` | Turn this on when the start frame contains a real human face. Content filters may block the request if this is not enabled. | | `tail_image_url` | `string` | — | Optional URL of the end-frame image for first+last-frame transitions. Format: uri. | | `tail_image_url_has_face` | `boolean` | `false` | Turn this on when the end frame contains a real human face. Content filters may block the request if this is not enabled. | -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-fast-reference-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-fast-reference-to-video.mdx index 4aad8f8..dd8f549 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-fast-reference-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-fast-reference-to-video.mdx @@ -155,10 +155,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -191,10 +191,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -404,10 +404,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -456,10 +456,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -679,10 +679,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -728,10 +728,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -787,8 +787,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_face_videos` | `array` | — | Place reference videos here when they show a real human face. Content filters may block the request otherwise. | | `input_videos` | `array` | — | Reference videos that guide the generated video. Up to 3 total reference videos and up to 15 total references across all types may be used. | | `input_audios` | `array` | — | Reference audios that guide the generated video. Up to 3 total reference audios and up to 15 total references across all types may be used. | -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-fast-text-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-fast-text-to-video.mdx index 3d2cbcb..a790a9c 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-fast-text-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-fast-text-to-video.mdx @@ -74,10 +74,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp -d '{ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -95,10 +95,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp json={ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -196,10 +196,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp -d '{ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -233,10 +233,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp json={ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -346,10 +346,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp -d '{ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -380,10 +380,10 @@ ByteDance Seedance 2.0 Fast generates video from a text prompt, optimized for sp json={ "model": "bytedance-seedance-2-0-fast-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -434,8 +434,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-image-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-image-to-video.mdx index 1023ea1..55a48a9 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-image-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-image-to-video.mdx @@ -124,10 +124,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -149,10 +149,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -331,10 +331,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -372,10 +372,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -564,10 +564,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -602,10 +602,10 @@ ByteDance Seedance 2.0 (Pro) animates a starting frame from a text motion prompt "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -660,8 +660,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_image_has_face` | `boolean` | `false` | Turn this on when the start frame contains a real human face. Content filters may block the request if this is not enabled. | | `tail_image_url` | `string` | — | Optional URL of the end-frame image. When provided, the generated video transitions from the start frame to this end frame. Format: uri. | | `tail_image_url_has_face` | `boolean` | `false` | Turn this on when the end frame contains a real human face. Content filters may block the request if this is not enabled. | -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for balance, 1080p for high quality, 4k for maximum detail. One of: 480p, 720p, 1080p, 4k. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p, 4k. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-mini-image-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-mini-image-to-video.mdx index 21884cf..12f21f2 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-mini-image-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-mini-image-to-video.mdx @@ -124,10 +124,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -149,10 +149,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -331,10 +331,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -372,10 +372,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -564,10 +564,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -602,10 +602,10 @@ ByteDance Seedance 2.0 Mini animates a starting frame into video with an optiona "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -660,8 +660,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_image_has_face` | `boolean` | `false` | Turn this on when the start frame contains a real human face. Content filters may block the request if this is not enabled. | | `tail_image_url` | `string` | — | Optional URL of the end-frame image for first+last-frame transitions. Format: uri. | | `tail_image_url_has_face` | `boolean` | `false` | Turn this on when the end frame contains a real human face. Content filters may block the request if this is not enabled. | -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-mini-reference-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-mini-reference-to-video.mdx index a91c49d..3b433cd 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-mini-reference-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-mini-reference-to-video.mdx @@ -155,10 +155,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -191,10 +191,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -404,10 +404,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -456,10 +456,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -679,10 +679,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -728,10 +728,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt guided by referen "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -787,8 +787,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_face_videos` | `array` | — | Place reference videos here when they show a real human face. Content filters may block the request otherwise. | | `input_videos` | `array` | — | Reference videos that guide the generated video. Up to 3 total reference videos and up to 15 total references across all types may be used. | | `input_audios` | `array` | — | Reference audios that guide the generated video. Up to 3 total reference audios and up to 15 total references across all types may be used. | -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-mini-text-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-mini-text-to-video.mdx index d066adf..c577973 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-mini-text-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-mini-text-to-video.mdx @@ -74,10 +74,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective -d '{ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -95,10 +95,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective json={ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -196,10 +196,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective -d '{ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -233,10 +233,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective json={ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -346,10 +346,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective -d '{ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -380,10 +380,10 @@ ByteDance Seedance 2.0 Mini generates video from a text prompt, a cost-effective json={ "model": "bytedance-seedance-2-0-mini-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -434,8 +434,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for higher quality. One of: 480p, 720p. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-reference-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-reference-to-video.mdx index 05c0057..1b2e69c 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-reference-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-reference-to-video.mdx @@ -155,10 +155,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -191,10 +191,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -404,10 +404,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -456,10 +456,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -679,10 +679,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -728,10 +728,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt guided by refere "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -787,8 +787,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_face_videos` | `array` | — | Place reference videos here when they show a real human face. Content filters may block the request otherwise. | | `input_videos` | `array` | — | Reference videos that guide the generated video. Up to 3 total reference videos and up to 15 total references across all types may be used. | | `input_audios` | `array` | — | Reference audios that guide the generated video. Up to 3 total reference audios and up to 15 total references across all types may be used. | -| `resolution` | `string` | `"720p"` | Video resolution. One of: 480p, 720p, 1080p, 4k. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p, 4k. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-0-text-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-0-text-to-video.mdx index 30c8ae8..6d33da3 100644 --- a/inference-api/reference/models/bytedance-seedance-2-0-text-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-0-text-to-video.mdx @@ -74,10 +74,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, -d '{ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' ``` @@ -95,10 +95,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, json={ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -196,10 +196,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, -d '{ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -233,10 +233,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, json={ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -346,10 +346,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, -d '{ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -380,10 +380,10 @@ ByteDance Seedance 2.0 (Pro) generates video from a text prompt. Supports 480p, json={ "model": "bytedance-seedance-2-0-text-to-video", "prompt": "", - "resolution": "720p", - "duration": -1, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": -1, + "resolution": "720p", "watermark": false }, ) @@ -434,8 +434,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for balance, 1080p for high quality, 4k for maximum detail. One of: 480p, 720p, 1080p, 4k. | -| `duration` | `integer` | `-1` | Duration of the video in seconds. Supports 4 to 15 seconds, or auto to let the model decide based on the prompt. One of: -1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `generate_audio` | `boolean` | `false` | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. | +| `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `-1` | Duration Range: 4 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p, 4k. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-5-image-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-5-image-to-video.mdx index 5332d17..a5c7586 100644 --- a/inference-api/reference/models/bytedance-seedance-2-5-image-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-5-image-to-video.mdx @@ -124,9 +124,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }' @@ -149,9 +149,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }, @@ -331,9 +331,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -372,9 +372,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }, @@ -564,9 +564,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -602,9 +602,9 @@ ByteDance Seedance 2.5 animates a starting frame from a text motion prompt, with "input_image_has_face": false, "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url_has_face": false, + "generate_audio": true, "resolution": "720p", "duration": "auto", - "generate_audio": true, "output_format": "mp4", "watermark": false }, @@ -660,8 +660,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_image_has_face` | `boolean` | `false` | Turn this on when the start frame contains a real human face. Content filters may block the request if this is not enabled. | | `tail_image_url` | `string` | — | Optional URL of the end-frame image. When provided, the generated video transitions from the start frame to this end frame. Format: uri. | | `tail_image_url_has_face` | `boolean` | `false` | Turn this on when the end frame contains a real human face. Content filters may block the request if this is not enabled. | -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for balance, 1080p for high quality with 10-bit color (H.265/HEVC output). One of: 480p, 720p, 1080p. | -| `duration` | `['integer', 'string']` | `"auto"` | Duration of the video in seconds. Supports 4 to 30 seconds, or "auto" to let the model decide based on the prompt. One of: auto, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30. | | `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p. | +| `duration` | `['integer', 'string']` | `"auto"` | Duration Range: 4 – 30. | | `output_format` | `string` | `"mp4"` | Output video format. mp4 for broad compatibility, mov for high color precision in professional post-production workflows. One of: mp4, mov. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-5-reference-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-5-reference-to-video.mdx index a0ba232..e3147e5 100644 --- a/inference-api/reference/models/bytedance-seedance-2-5-reference-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-5-reference-to-video.mdx @@ -155,10 +155,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' @@ -192,10 +192,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -406,10 +406,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -459,10 +459,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -683,10 +683,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -733,10 +733,10 @@ ByteDance Seedance 2.5 generates video from a text prompt guided by reference im "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "adaptive", "generate_audio": true, + "aspect_ratio": "adaptive", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -793,9 +793,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_face_videos` | `array` | — | Place reference videos here when they show a real human face. Content filters may block the request otherwise. | | `input_videos` | `array` | — | Reference videos that guide the generated video. Up to 10 total reference videos may be used, each 2-30 seconds long with a combined duration of at most 30 seconds. | | `input_audios` | `array` | — | Reference audios that guide the generated video. Audio-only input is supported. Up to 10 reference audio clips may be used, each 2-30 seconds long with a combined duration of at most 30 seconds. | -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for balance, 1080p for high quality with 10-bit color (H.265/HEVC output). One of: 480p, 720p, 1080p. | -| `duration` | `['integer', 'string']` | `"auto"` | Duration of the video in seconds. Supports 4 to 30 seconds, or "auto" to let the model decide based on the inputs. Video editing tasks only support auto. One of: auto, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30. | -| `aspect_ratio` | `string` | `"adaptive"` | The aspect ratio of the generated video. Use auto to let the model decide from the inputs, 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, or 21:9 for ultrawide cinematic. Video editing and extension tasks only support auto. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | | `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio. | +| `aspect_ratio` | `string` | `"adaptive"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `['integer', 'string']` | `"auto"` | Duration Range: 4 – 30. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p. | | `output_format` | `string` | `"mp4"` | Output video format. mp4 for broad compatibility, mov for high color precision in professional post-production workflows. For video editing and extension, mov input and output is recommended. One of: mp4, mov. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedance-2-5-text-to-video.mdx b/inference-api/reference/models/bytedance-seedance-2-5-text-to-video.mdx index b290492..1c31b15 100644 --- a/inference-api/reference/models/bytedance-seedance-2-5-text-to-video.mdx +++ b/inference-api/reference/models/bytedance-seedance-2-5-text-to-video.mdx @@ -74,10 +74,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud -d '{ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' @@ -96,10 +96,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud json={ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -198,10 +198,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud -d '{ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -236,10 +236,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud json={ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -350,10 +350,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud -d '{ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }' | jq -r '.generations[0].generation_id') @@ -385,10 +385,10 @@ ByteDance Seedance 2.5 generates video from a text prompt, with synchronized aud json={ "model": "bytedance-seedance-2-5-text-to-video", "prompt": "", - "resolution": "720p", - "duration": "auto", - "aspect_ratio": "16:9", "generate_audio": true, + "aspect_ratio": "16:9", + "duration": "auto", + "resolution": "720p", "output_format": "mp4", "watermark": false }, @@ -440,9 +440,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"720p"` | Video resolution. 480p for faster generation, 720p for balance, 1080p for high quality with 10-bit color (H.265/HEVC output). One of: 480p, 720p, 1080p. | -| `duration` | `['integer', 'string']` | `"auto"` | Duration of the video in seconds. Supports 4 to 30 seconds, or "auto" to let the model decide based on the prompt. One of: auto, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30. | -| `aspect_ratio` | `string` | `"16:9"` | The aspect ratio of the generated video. Use 16:9 for landscape, 9:16 for portrait/vertical, 1:1 for square, 21:9 for ultrawide cinematic, or auto to let the model decide. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | | `generate_audio` | `boolean` | `true` | Whether to generate synchronized audio for the video, including sound effects, ambient sounds, and lip-synced speech. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `['integer', 'string']` | `"auto"` | Duration Range: 4 – 30. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p, 1080p. | | `output_format` | `string` | `"mp4"` | Output video format. mp4 for broad compatibility, mov for high color precision in professional post-production workflows. One of: mp4, mov. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark to the output. | diff --git a/inference-api/reference/models/bytedance-seedream-5-pro.mdx b/inference-api/reference/models/bytedance-seedream-5-pro.mdx index c35f75f..9dd6b8e 100644 --- a/inference-api/reference/models/bytedance-seedream-5-pro.mdx +++ b/inference-api/reference/models/bytedance-seedream-5-pro.mdx @@ -633,7 +633,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image URLs for image-to-image editing. Provide one image for single-image editing or multiple for multi-reference fusion; reference them in the prompt as @Image1, @Image2, etc. Up to 10 images. | -| `aspect_ratio` | `string` | `"1:1"` | Aspect ratio of the generated image. Combined with the resolution to set the output dimensions. One of: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9. | +| `aspect_ratio` | `string` | `"1:1"` | Aspect Ratio One of: 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3, 21:9. | | `size` | `string` | `"2K"` | Resolution level. Combined with the aspect ratio to set the output dimensions. One of: 1K, 2K. | | `output_format` | `string` | `"png"` | Output image format. One of: png, jpeg. | | `watermark` | `boolean` | `false` | Whether to add an 'AI generated' watermark. | diff --git a/inference-api/reference/models/flux-1-dev.mdx b/inference-api/reference/models/flux-1-dev.mdx index 15d53df..2083473 100644 --- a/inference-api/reference/models/flux-1-dev.mdx +++ b/inference-api/reference/models/flux-1-dev.mdx @@ -459,7 +459,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `negative_prompt` | `string` | — | Negative prompt for generated image | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | | `image_size` | `string` | `"optimize_for_quality"` | Image size for the generated image One of: optimize_for_quality, optimize_for_speed. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `3` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | diff --git a/inference-api/reference/models/flux-2-dev.mdx b/inference-api/reference/models/flux-2-dev.mdx index 4279fb7..3d1f1af 100644 --- a/inference-api/reference/models/flux-2-dev.mdx +++ b/inference-api/reference/models/flux-2-dev.mdx @@ -661,8 +661,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Input images to transform or use as reference. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | -| `resolution` | `string` | `"1 MP"` | Resolution for the generated image One of: 1 MP, 2 MP, 0.5 MP. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | +| `resolution` | `string` | `"1 MP"` | Resolution One of: 1 MP, 2 MP, 0.5 MP. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `2` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | | `seed` | `integer` | — | Random seed. Set for reproducible generation | diff --git a/inference-api/reference/models/flux-2-flex.mdx b/inference-api/reference/models/flux-2-flex.mdx index 48b59d8..e8251d0 100644 --- a/inference-api/reference/models/flux-2-flex.mdx +++ b/inference-api/reference/models/flux-2-flex.mdx @@ -666,8 +666,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Input images to transform or use as reference. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | -| `resolution` | `string` | `"1 MP"` | Resolution for the generated image One of: 1 MP, 2 MP, 0.5 MP. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | +| `resolution` | `string` | `"1 MP"` | Resolution One of: 1 MP, 2 MP, 0.5 MP. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `2` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | | `seed` | `integer` | — | Random seed. Set for reproducible generation | diff --git a/inference-api/reference/models/flux-2-pro.mdx b/inference-api/reference/models/flux-2-pro.mdx index 8f23893..30335a9 100644 --- a/inference-api/reference/models/flux-2-pro.mdx +++ b/inference-api/reference/models/flux-2-pro.mdx @@ -662,8 +662,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Input images to transform or use as reference. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | -| `resolution` | `string` | `"1 MP"` | Resolution for the generated image One of: 1 MP, 2 MP, 0.5 MP. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, match_input_image. | +| `resolution` | `string` | `"1 MP"` | Resolution One of: 1 MP, 2 MP, 0.5 MP. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `2` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | | `seed` | `integer` | — | Random seed. Set for reproducible generation | diff --git a/inference-api/reference/models/flux-3-video.mdx b/inference-api/reference/models/flux-3-video.mdx index 85056f7..1ae1f88 100644 --- a/inference-api/reference/models/flux-3-video.mdx +++ b/inference-api/reference/models/flux-3-video.mdx @@ -124,10 +124,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }' @@ -150,10 +150,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }, @@ -331,10 +331,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }' | jq -r '.generations[0].generation_id') @@ -373,10 +373,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }, @@ -564,10 +564,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }' | jq -r '.generations[0].generation_id') @@ -603,10 +603,10 @@ Supply keyframes to animate stills, or a source clip to continue it; with neithe "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "resolution": "720p", + "generate_audio": true, "aspect_ratio": "auto", + "resolution": "720p", "duration": 5, - "generate_audio": true, "draft": false, "safety_tolerance": 2 }, @@ -660,9 +660,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ |-------|------|---------|-------------| | `input_images` | `array` | — | Images that become frames of the generated video, 1 to 10 in order: one image starts the video, two start and end it, and beyond that the first starts it, the last ends it, and the rest fall evenly in between. They are frames, not references, so the prompt cannot cite them. Leave empty to generate from the prompt alone. Cannot be combined with Continue From Video. | | `input_video` | `string` | — | Clip to extend; the generated video carries on from its final frames. MP4. Cannot be combined with Keyframes. Billed at a higher per-second rate than generating from a prompt or keyframes. Format: uri. | -| `resolution` | `string` | `"720p"` | Output resolution. 1080p costs more per second. One of: 720p, 1080p. | -| `aspect_ratio` | `string` | `"auto"` | Aspect ratio of the generated video. Auto lets the model choose. One of: auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16. | -| `duration` | `integer` | `5` | Duration in seconds. One of: 5, 6, 7, 8, 9, 10, 12, 15, 18, 20. | | `generate_audio` | `boolean` | `true` | Generate synchronized audio for the video. | +| `aspect_ratio` | `string` | `"auto"` | Aspect Ratio One of: auto, 21:9, 2:1, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `resolution` | `string` | `"720p"` | Resolution One of: 720p, 1080p. | +| `duration` | `integer` | `5` | Duration Range: 5 – 20. | | `draft` | `boolean` | `false` | Draft mode: rapid, cost-effective exploration at a lower per-second rate. HD only. | | `safety_tolerance` | `integer` | `2` | Safety filter strictness, 0 is strictest. One of: 0, 1, 2, 3, 4. | diff --git a/inference-api/reference/models/flux-image-upscaler.mdx b/inference-api/reference/models/flux-image-upscaler.mdx new file mode 100644 index 0000000..ce8595e --- /dev/null +++ b/inference-api/reference/models/flux-image-upscaler.mdx @@ -0,0 +1,428 @@ +--- +title: "FLUX Image Upscaler" +description: "Detail-preserving image upscaling up to 4x" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `flux-image-upscaler` + +FLUX Image Upscaler enlarges a still up to 4x while adding detail, holding natural color and keeping artifacts down. It suits photographs, product shots, and generated images that need to print or display larger than they were made. + +Creativity controls how far the model may depart from the source: low values restore detail conservatively, higher values invent texture where the original has none. + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=flux-image-upscaler) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + See the [image editing reference](/inference-api/reference/image_editing) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/images/edit \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/images/edit", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/images/edit \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/images/edit", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "flux-image-upscaler", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "upscale_factor": 2, + "creativity": 0.3, + "num_inference_steps": 20 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/flux-image-upscaler +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `input_image` | `string` | — | Image to upscale. Must be jpg, jpeg, png, webp, gif, or avif. Format: uri. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `upscale_factor` | `number` | `2` | How much to enlarge the image. Cost follows the output area, so 4x costs roughly four times 2x. Range: 1 – 4. | +| `creativity` | `number` | `0.3` | How far the model may depart from the source. Low values restore detail conservatively, high values invent new texture. Range: 0 – 1. | +| `num_inference_steps` | `integer` | `20` | Number of denoising steps. More steps refine detail and take longer. Range: 4 – 50. | +| `seed` | `integer` | — | Random seed. Set for reproducible output. | diff --git a/inference-api/reference/models/flux-kontext-dev.mdx b/inference-api/reference/models/flux-kontext-dev.mdx index 54ffe88..01e43c7 100644 --- a/inference-api/reference/models/flux-kontext-dev.mdx +++ b/inference-api/reference/models/flux-kontext-dev.mdx @@ -52,8 +52,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' ``` @@ -69,8 +69,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: }, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) response.raise_for_status() @@ -90,8 +90,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -113,8 +113,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: }, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -149,8 +149,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -182,8 +182,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: headers=HEADERS, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) enqueue.raise_for_status() @@ -218,8 +218,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -257,8 +257,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: headers=HEADERS, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -307,8 +307,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -337,8 +337,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) enqueue.raise_for_status() @@ -374,8 +374,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -410,8 +410,8 @@ Some other noteworthy features of black-forest-labs/FLUX.1-Kontext-dev include: headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "flux-kontext-dev", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "aspect_ratio": "16:9", "num_inference_steps": 28, "guidance": 2.5, @@ -461,14 +461,14 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `input_image` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | | `prompt` | `string` | — | Text description of what you want to generate, or the instruction on how to edit the given image. | +| `input_image` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated image. Use 'match_input_image' to match the aspect ratio of the input image. One of: 1:1, 16:9, 21:9, 3:2, 2:3, 4:5, 5:4, 3:4, 4:3, 9:16, 9:21, match_input_image. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 21:9, 3:2, 2:3, 4:5, 5:4, 3:4, 4:3, 9:16, 9:21, match_input_image. | | `num_inference_steps` | `integer` | `28` | Number of inference steps Range: 4 – 50. | | `guidance` | `number` | `2.5` | Guidance scale for generation Range: 0 – 10. | | `seed` | `integer` | — | Random seed for reproducible generation. Leave blank for random. | diff --git a/inference-api/reference/models/flux-video-upscaler.mdx b/inference-api/reference/models/flux-video-upscaler.mdx new file mode 100644 index 0000000..636053d --- /dev/null +++ b/inference-api/reference/models/flux-video-upscaler.mdx @@ -0,0 +1,610 @@ +--- +title: "FLUX Video Upscaler" +description: "Video super-resolution to 4K, precise or creative" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `flux-video-upscaler` + +FLUX Video Upscaler raises the resolution of an existing clip using FLUX 3 super-resolution, up to 1080p, 2K, or 4K. It takes MP4 input up to 20 seconds and 50 MB. + +Two modes trade fidelity against detail. Precise stays faithful to the source, which suits footage that must match a reference. Creative synthesizes detail the original never had and takes an optional prompt to steer what it invents, which suits stylized or generated material. Creative costs more per second at every resolution. + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=flux-video-upscaler) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + This blocks until the video is ready (typically 5-15 minutes). Prefer **Async** or **Async with SSE** for anything beyond quick experimentation. + + See the [video generation reference](/inference-api/reference/video_generation) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "flux-video-upscaler", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", + "upscale_factor": 2, + "creativity": 0, + "safety_tolerance": 2 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/flux-video-upscaler +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `input_video` | `string` | — | Clip to upscale. MP4, up to 20 seconds and 50 MB. Format: uri. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `prompt` | `string` | — | Optional steer for the detail Creative mode invents. Ignored in Precise mode. | +| `upscale_factor` | `number` | `2` | How much to enlarge the clip, keeping its aspect ratio. Cost follows the resolution this lands on. Range: 1 – 4. | +| `creativity` | `integer` | `0` | Precise stays faithful to the source. Creative invents detail the original lacks and costs more per second. One of: 0, 1. | +| `safety_tolerance` | `integer` | `2` | Moderation strictness, where lower is stricter. | diff --git a/inference-api/reference/models/gemini-omni-flash-preview.mdx b/inference-api/reference/models/gemini-omni-flash-preview.mdx index d37687d..bc08212 100644 --- a/inference-api/reference/models/gemini-omni-flash-preview.mdx +++ b/inference-api/reference/models/gemini-omni-flash-preview.mdx @@ -617,4 +617,4 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `first_frame_image` | `string` | — | Optional image to use as the video's starting frame. Reference it in the prompt as @FirstFrame. Format: uri. | | `input_image` | `array` | `[]` | Optional reference images (characters, objects, styles to carry into the video). Reference them in the prompt as @Image1, @Image2, etc. | | `input_video` | `string` | — | Optional video to edit. The prompt describes the changes to apply; unmentioned elements are preserved. Leave empty to generate a new video. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Output video aspect ratio. One of: 16:9, 9:16. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | diff --git a/inference-api/reference/models/google-nano-banana-pro.mdx b/inference-api/reference/models/google-nano-banana-pro.mdx index 63bae72..c0dc2e6 100644 --- a/inference-api/reference/models/google-nano-banana-pro.mdx +++ b/inference-api/reference/models/google-nano-banana-pro.mdx @@ -640,6 +640,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image(s) to edit or compose (up to 14). Leave empty to generate from the prompt alone. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9. | -| `resolution` | `string` | `"2K"` | Resolution of the generated image One of: 1K, 2K, 4K. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9. | +| `resolution` | `string` | `"2K"` | Resolution One of: 1K, 2K, 4K. | | `google_search` | `boolean` | `false` | Ground the image in real-time web search results, useful for factual or current-events content like charts, maps, and recent events. | diff --git a/inference-api/reference/models/google-veo-3-1-fast.mdx b/inference-api/reference/models/google-veo-3-1-fast.mdx index e4f020c..2b0148a 100644 --- a/inference-api/reference/models/google-veo-3-1-fast.mdx +++ b/inference-api/reference/models/google-veo-3-1-fast.mdx @@ -605,7 +605,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Optional first-frame image to animate (image-to-video). Leave empty to generate from the prompt alone. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Output video aspect ratio. One of: 16:9, 9:16. | -| `resolution` | `string` | `"720p"` | Output video resolution. 1080p and 4k require an 8 second duration. One of: 720p, 1080p, 4k. | -| `duration` | `integer` | `8` | Video duration in seconds. 1080p and 4k require 8 seconds. One of: 4, 6, 8. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"720p"` | Resolution One of: 720p, 1080p, 4k. | +| `duration` | `integer` | `8` | Duration (seconds) Range: 4 – 8. | | `seed` | `integer` | — | Random seed for deterministic generation. | diff --git a/inference-api/reference/models/google-veo-3-1-lite.mdx b/inference-api/reference/models/google-veo-3-1-lite.mdx index 60eca75..8e74d32 100644 --- a/inference-api/reference/models/google-veo-3-1-lite.mdx +++ b/inference-api/reference/models/google-veo-3-1-lite.mdx @@ -605,7 +605,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Optional first-frame image to animate (image-to-video). Leave empty to generate from the prompt alone. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Output video aspect ratio. One of: 16:9, 9:16. | -| `resolution` | `string` | `"720p"` | Output video resolution. 1080p requires an 8 second duration. One of: 720p, 1080p. | -| `duration` | `integer` | `8` | Video duration in seconds. 1080p requires 8 seconds. One of: 4, 6, 8. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"720p"` | Resolution One of: 720p, 1080p. | +| `duration` | `integer` | `8` | Duration (seconds) Range: 4 – 8. | | `seed` | `integer` | — | Random seed for deterministic generation. | diff --git a/inference-api/reference/models/google-veo-3-1.mdx b/inference-api/reference/models/google-veo-3-1.mdx index ece74e5..53dd5f4 100644 --- a/inference-api/reference/models/google-veo-3-1.mdx +++ b/inference-api/reference/models/google-veo-3-1.mdx @@ -615,6 +615,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Optional first-frame image to animate (image-to-video). Leave empty to generate from the prompt alone. Must be jpeg, png, gif, or webp. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Video aspect ratio One of: 16:9, 9:16. | -| `resolution` | `string` | `"1080p"` | Resolution of the generated video. 1080p and 4k require an 8 second duration. One of: 720p, 1080p, 4k. | -| `duration` | `integer` | `8` | Video duration in seconds. 1080p and 4k require 8 seconds. One of: 4, 6, 8. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p, 4k. | +| `duration` | `integer` | `8` | Duration (seconds) Range: 4 – 8. | diff --git a/inference-api/reference/models/google-veo-3.mdx b/inference-api/reference/models/google-veo-3.mdx index 9fa7a30..f48ef17 100644 --- a/inference-api/reference/models/google-veo-3.mdx +++ b/inference-api/reference/models/google-veo-3.mdx @@ -87,8 +87,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' ``` @@ -104,8 +104,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e }, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) response.raise_for_status() @@ -125,12 +125,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }' ``` @@ -146,12 +146,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e }, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }, ) response.raise_for_status() @@ -247,8 +247,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -280,8 +280,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e headers=HEADERS, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) enqueue.raise_for_status() @@ -316,12 +316,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -353,12 +353,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e headers=HEADERS, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }, ) enqueue.raise_for_status() @@ -466,8 +466,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -496,8 +496,8 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "prompt": "" + "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" }, ) enqueue.raise_for_status() @@ -533,12 +533,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -567,12 +567,12 @@ Some other noteworthy use cases of google/veo-3 include creating marketing and e headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "google-veo-3", - "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "prompt": "", + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 8, - "resolution": "1080p", - "generate_audio": false + "resolution": "1080p" }, ) enqueue.raise_for_status() @@ -623,7 +623,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Video aspect ratio One of: 9:16, 16:9. | -| `duration` | `integer` | `8` | Video duration in seconds One of: 4, 6, 8. | -| `resolution` | `string` | `"1080p"` | Resolution of the generated video One of: 1080p, 720p. | -| `generate_audio` | `boolean` | `false` | Generate audio with the video. | +| `generate_audio` | `boolean` | `true` | Generate audio with the video. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 9:16, 16:9. | +| `duration` | `integer` | `8` | Duration (seconds) Range: 4 – 8. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 1080p, 720p. | diff --git a/inference-api/reference/models/gpt-image-2.mdx b/inference-api/reference/models/gpt-image-2.mdx index 11dcf02..02af6aa 100644 --- a/inference-api/reference/models/gpt-image-2.mdx +++ b/inference-api/reference/models/gpt-image-2.mdx @@ -631,8 +631,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image(s) to edit. Leave empty to generate from the prompt alone. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 9:21. | -| `resolution` | `string` | `"2K"` | Output image resolution. Higher tiers render more pixels and cost more; see cost_per_image_grid for per-tier pricing. One of: 1K, 2K, 4K. | +| `mask_url` | `string` | — | Optional mask image URL. White pixels mark regions to edit; black pixels are preserved. Leave empty to edit the whole image. Format: uri. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 21:9, 9:21. | +| `resolution` | `string` | `"2K"` | Resolution One of: 1K, 2K, 4K. | | `quality` | `string` | `"high"` | Output quality tier: low, medium, or high. Higher quality renders more detail and costs more. One of: low, medium, high. | | `output_format` | `string` | `"png"` | File format for the generated image. One of: png, jpeg, webp. | -| `mask_url` | `string` | — | Optional mask image URL. White pixels mark regions to edit; black pixels are preserved. Leave empty to edit the whole image. Format: uri. | diff --git a/inference-api/reference/models/happyhorse-1_0-i2v.mdx b/inference-api/reference/models/happyhorse-1_0-i2v.mdx index 560663d..237c2bb 100644 --- a/inference-api/reference/models/happyhorse-1_0-i2v.mdx +++ b/inference-api/reference/models/happyhorse-1_0-i2v.mdx @@ -429,6 +429,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). Range: 0 – 2147483647. | diff --git a/inference-api/reference/models/happyhorse-1_0-r2v.mdx b/inference-api/reference/models/happyhorse-1_0-r2v.mdx index 88b9e4e..945b8e2 100644 --- a/inference-api/reference/models/happyhorse-1_0-r2v.mdx +++ b/inference-api/reference/models/happyhorse-1_0-r2v.mdx @@ -627,7 +627,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `reference_images` | `array` | — | Array of up to 9 reference image URLs for character/object/scene appearance. Order maps to @Image1, @Image2, etc. Formats: JPEG, JPG, PNG. Max 10 MB each. 720p or higher recommended; shorter side must exceed 400 pixels. Reference images should share a similar aspect ratio close to the target video's aspect ratio. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). Range: 0 – 2147483647. | diff --git a/inference-api/reference/models/happyhorse-1_0-t2v.mdx b/inference-api/reference/models/happyhorse-1_0-t2v.mdx index c84448d..17ac81c 100644 --- a/inference-api/reference/models/happyhorse-1_0-t2v.mdx +++ b/inference-api/reference/models/happyhorse-1_0-t2v.mdx @@ -422,7 +422,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). Range: 0 – 2147483647. | diff --git a/inference-api/reference/models/happyhorse-1_0-video-edit.mdx b/inference-api/reference/models/happyhorse-1_0-video-edit.mdx index 5df2fd6..bd73201 100644 --- a/inference-api/reference/models/happyhorse-1_0-video-edit.mdx +++ b/inference-api/reference/models/happyhorse-1_0-video-edit.mdx @@ -37,8 +37,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' ``` @@ -54,8 +54,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from }, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) response.raise_for_status() @@ -75,11 +75,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }' ``` @@ -95,11 +95,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from }, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }, ) response.raise_for_status() @@ -119,11 +119,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }' @@ -141,11 +141,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from }, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }, @@ -176,8 +176,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -209,8 +209,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers=HEADERS, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -245,11 +245,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -281,11 +281,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers=HEADERS, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }, ) enqueue.raise_for_status() @@ -320,11 +320,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }' | jq -r '.generations[0].generation_id') @@ -358,11 +358,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers=HEADERS, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }, @@ -407,8 +407,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -437,8 +437,8 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -474,11 +474,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -507,11 +507,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" - ] + ], + "prompt": "" }, ) enqueue.raise_for_status() @@ -547,11 +547,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }' | jq -r '.generations[0].generation_id') @@ -582,11 +582,11 @@ HappyHorse 1.0 video edit performs local or global edits to a source video from headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "happyhorse-1.0-video-edit", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "reference_images": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], + "prompt": "", "resolution": "1080P", "audio_setting": "auto" }, @@ -632,13 +632,13 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Text prompt describing the desired edit. Reference supplied reference images using '@Image1', '@Image2', ... up to '@Image5'. Max 2500 characters. | | `input_video` | `string` | — | URL of the source video to edit. Formats: MP4, MOV (H.264 recommended). Duration 3-60 seconds. Longer side at most 2160 pixels, shorter side at least 320 pixels. Aspect ratio between 1:2.5 and 2.5:1. Frame rate above 8 fps. Max 100 MB. Output preserves the source aspect ratio and matches the input duration, capped at the first 15 seconds. Format: uri. | +| `prompt` | `string` | — | Text prompt describing the desired edit. Reference supplied reference images using '@Image1', '@Image2', ... up to '@Image5'. Max 2500 characters. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| | `reference_images` | `array` | — | Optional array of up to 5 reference image URLs to guide the edit. Order maps to '@Image1', '@Image2', etc. Formats: JPEG, JPG, PNG, WEBP. Each side must be at least 300 pixels. Aspect ratio between 1:2.5 and 2.5:1. Max 10 MB each. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | | `audio_setting` | `string` | `"auto"` | Audio handling: 'auto' generates a new synchronized audio track, 'origin' keeps the source video's audio. One of: auto, origin. | diff --git a/inference-api/reference/models/happyhorse-1_1-i2v.mdx b/inference-api/reference/models/happyhorse-1_1-i2v.mdx index 9ee310d..b229839 100644 --- a/inference-api/reference/models/happyhorse-1_1-i2v.mdx +++ b/inference-api/reference/models/happyhorse-1_1-i2v.mdx @@ -429,5 +429,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | diff --git a/inference-api/reference/models/happyhorse-1_1-r2v.mdx b/inference-api/reference/models/happyhorse-1_1-r2v.mdx index 586090e..d7e8230 100644 --- a/inference-api/reference/models/happyhorse-1_1-r2v.mdx +++ b/inference-api/reference/models/happyhorse-1_1-r2v.mdx @@ -627,6 +627,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `reference_images` | `array` | — | Array of up to 9 reference image URLs for character/object/scene appearance. Order maps to @Image1, @Image2, etc. Formats: JPEG, JPG, PNG. Max 10 MB each. 720p or higher recommended; shorter side must exceed 400 pixels. Reference images should share a similar aspect ratio close to the target video's aspect ratio. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | diff --git a/inference-api/reference/models/happyhorse-1_1-t2v.mdx b/inference-api/reference/models/happyhorse-1_1-t2v.mdx index 41c777e..9e4a08e 100644 --- a/inference-api/reference/models/happyhorse-1_1-t2v.mdx +++ b/inference-api/reference/models/happyhorse-1_1-t2v.mdx @@ -422,6 +422,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (3-15). Range: 3 – 15. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 3 – 15. | diff --git a/inference-api/reference/models/kling-video-o1-image-to-video.mdx b/inference-api/reference/models/kling-video-o1-image-to-video.mdx index 3bc7275..edfdbb4 100644 --- a/inference-api/reference/models/kling-video-o1-image-to-video.mdx +++ b/inference-api/reference/models/kling-video-o1-image-to-video.mdx @@ -624,4 +624,4 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `tail_image_url` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 10. | diff --git a/inference-api/reference/models/kling-video-o1-reference-to-video.mdx b/inference-api/reference/models/kling-video-o1-reference-to-video.mdx index 629ab1f..390f59a 100644 --- a/inference-api/reference/models/kling-video-o1-reference-to-video.mdx +++ b/inference-api/reference/models/kling-video-o1-reference-to-video.mdx @@ -688,5 +688,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `elements` | `array` | — | Optional element references. Use @Element1, @Element2, etc. in the prompt to refer to them. | -| `aspect_ratio` | `string` | `"16:9"` | Video aspect ratio One of: 9:16, 1:1, 16:9. | -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 9:16, 1:1, 16:9. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 10. | diff --git a/inference-api/reference/models/kling-video-o1-video-to-video-edit.mdx b/inference-api/reference/models/kling-video-o1-video-to-video-edit.mdx index 7a45553..a2ab8e0 100644 --- a/inference-api/reference/models/kling-video-o1-video-to-video-edit.mdx +++ b/inference-api/reference/models/kling-video-o1-video-to-video-edit.mdx @@ -49,8 +49,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' ``` @@ -66,8 +66,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera }, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) response.raise_for_status() @@ -87,14 +87,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }' ``` @@ -110,14 +110,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera }, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }, ) response.raise_for_status() @@ -137,7 +137,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -145,6 +144,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }' ``` @@ -161,7 +161,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera }, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -169,6 +168,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }, ) @@ -198,8 +198,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -231,8 +231,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers=HEADERS, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -267,14 +267,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -306,14 +306,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers=HEADERS, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }, ) enqueue.raise_for_status() @@ -348,7 +348,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -356,6 +355,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }' | jq -r '.generations[0].generation_id') @@ -388,7 +388,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers=HEADERS, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -396,6 +395,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }, ) @@ -439,8 +439,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -469,8 +469,8 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -506,14 +506,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -542,14 +542,14 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "elements": [ {} - ] + ], + "prompt": "" }, ) enqueue.raise_for_status() @@ -585,7 +585,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -593,6 +592,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }' | jq -r '.generations[0].generation_id') @@ -622,7 +622,6 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "kling-video-o1-video-to-video-edit", - "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], @@ -630,6 +629,7 @@ Some other noteworthy features of Kling O1 Edit - Video to Video include camera "elements": [ {} ], + "prompt": "", "keep_audio": true }, ) @@ -674,8 +674,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Edit instructions. Reference @Image1, @Image2 for reference images and @Element1, @Element2 for elements. | | `input_video` | `string` | — | Video to use as reference. Format: uri. | +| `prompt` | `string` | — | Edit instructions. Reference @Image1, @Image2 for reference images and @Element1, @Element2 for elements. | ### Optional parameters diff --git a/inference-api/reference/models/kling-video-o3-omni.mdx b/inference-api/reference/models/kling-video-o3-omni.mdx index df5646b..48a38ad 100644 --- a/inference-api/reference/models/kling-video-o3-omni.mdx +++ b/inference-api/reference/models/kling-video-o3-omni.mdx @@ -73,12 +73,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -99,12 +99,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op }, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -129,21 +129,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }' ``` @@ -160,21 +160,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op }, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }, ) @@ -271,12 +271,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -313,12 +313,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op headers=HEADERS, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -358,21 +358,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }' | jq -r '.generations[0].generation_id') @@ -405,21 +405,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op headers=HEADERS, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }, ) @@ -528,12 +528,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -567,12 +567,12 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ @@ -613,21 +613,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }' | jq -r '.generations[0].generation_id') @@ -657,21 +657,21 @@ Kling Video 3.0 Omni is a single model for text-to-video, image-to-video with op headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "kling-video-o3-omni", + "video_mode": "edit", "prompt": "", "input_image": [ "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" ], "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", - "video_mode": "edit", "start_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "elements": [ {} ], - "resolution": "1080p", - "duration": 5, + "generate_audio": true, "aspect_ratio": "16:9", - "generate_audio": false, + "duration": 5, + "resolution": "1080p", "keep_audio": true }, ) @@ -722,14 +722,14 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| +| `video_mode` | `string` | `"edit"` | Edit applies your prompt to the clip. Reference uses it for motion/style only. One of: edit, reference. | | `input_image` | `array` | — | Optional reference images for style or subject. Use @Image1, @Image2 in the prompt. Counts toward the shared limit of 7 with elements (4 when input video is set). | | `input_video` | `string` | — | Source video for edit or motion/style reference. Format: uri. | -| `video_mode` | `string` | `"edit"` | Edit applies your prompt to the clip. Reference uses it for motion/style only. One of: edit, reference. | | `start_image_url` | `string` | — | Optional first frame. End frame requires a start frame. Format: uri. | | `tail_image_url` | `string` | — | Optional last frame. Requires start frame. Format: uri. | | `elements` | `array` | — | Optional element references. Use @Element1, @Element2 in the prompt. Max 7 reference images and elements total, max 4 when using an input video. | -| `resolution` | `string` | `"1080p"` | Output resolution tier. One of: 720p, 1080p, 4k. | -| `duration` | `integer` | `5` | Output length in seconds (3 to 15). Ignored for video edit; output matches input length. Range: 3 – 15. | -| `aspect_ratio` | `string` | `"16:9"` | Output aspect ratio. Omit when editing video or using only start/end frames. One of: 16:9, 9:16, 1:1. | -| `generate_audio` | `boolean` | `false` | Generate native audio. Must be off when a reference or input video is provided. | +| `generate_audio` | `boolean` | `true` | Generate native audio. Must be off when a reference or input video is provided. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 3 – 15. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p, 4k. | | `keep_audio` | `boolean` | `true` | When editing or referencing a video, keep the source audio. | diff --git a/inference-api/reference/models/kling-video-v2-5-turbo-pro-image-to-video.mdx b/inference-api/reference/models/kling-video-v2-5-turbo-pro-image-to-video.mdx index 603c89e..0b82b09 100644 --- a/inference-api/reference/models/kling-video-v2-5-turbo-pro-image-to-video.mdx +++ b/inference-api/reference/models/kling-video-v2-5-turbo-pro-image-to-video.mdx @@ -625,4 +625,4 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `tail_image_url` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 10. | diff --git a/inference-api/reference/models/kling-video-v2-6-pro-image-to-video.mdx b/inference-api/reference/models/kling-video-v2-6-pro-image-to-video.mdx index 13e7eab..ef6face 100644 --- a/inference-api/reference/models/kling-video-v2-6-pro-image-to-video.mdx +++ b/inference-api/reference/models/kling-video-v2-6-pro-image-to-video.mdx @@ -126,7 +126,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }' ``` @@ -145,7 +145,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }, ) response.raise_for_status() @@ -313,7 +313,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -348,7 +348,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }, ) enqueue.raise_for_status() @@ -526,7 +526,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -558,7 +558,7 @@ Some other noteworthy features of Kling 2.6 Pro - Image to Video include support "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "duration": 5, - "generate_audio": false + "generate_audio": true }, ) enqueue.raise_for_status() @@ -610,5 +610,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ |-------|------|---------|-------------| | `input_image` | `string` | — | Image to use as reference. Must be jpeg, png, gif, or webp. Format: uri. | | `negative_prompt` | `string` | — | Text description of what you *do not* want the model to do. | -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10. | -| `generate_audio` | `boolean` | `false` | Generate audio with the video. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 10. | +| `generate_audio` | `boolean` | `true` | Generate audio with the video. | diff --git a/inference-api/reference/models/kling-video-v2-6-pro-text-to-video.mdx b/inference-api/reference/models/kling-video-v2-6-pro-text-to-video.mdx index a9774d5..5a13e59 100644 --- a/inference-api/reference/models/kling-video-v2-6-pro-text-to-video.mdx +++ b/inference-api/reference/models/kling-video-v2-6-pro-text-to-video.mdx @@ -86,9 +86,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support -d '{ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }' ``` @@ -106,9 +106,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support json={ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }, ) @@ -206,9 +206,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support -d '{ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }' | jq -r '.generations[0].generation_id') @@ -242,9 +242,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support json={ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }, ) @@ -354,9 +354,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support -d '{ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }' | jq -r '.generations[0].generation_id') @@ -387,9 +387,9 @@ Some other noteworthy features of Kling 2.6 Pro - Text to Video include support json={ "model": "kling-video-v2-6-pro-text-to-video", "prompt": "", + "generate_audio": true, "aspect_ratio": "16:9", "duration": 5, - "generate_audio": false, "cfg_scale": 0.5 }, ) @@ -441,7 +441,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `negative_prompt` | `string` | — | Text description of what you *do not* want the model to do. | -| `aspect_ratio` | `string` | `"16:9"` | Video aspect ratio One of: 9:16, 16:9, 1:1. | -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10. | -| `generate_audio` | `boolean` | `false` | Generate audio with the video. | +| `generate_audio` | `boolean` | `true` | Generate audio with the video. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 9:16, 16:9, 1:1. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 10. | | `cfg_scale` | `number` | `0.5` | The CFG (Classifier Free Guidance) scale is a measure of how close you want the model to stick to your prompt. Default value: 0.5 Range: 0 – 10. | diff --git a/inference-api/reference/models/kling-video-v3-pro-motion-control.mdx b/inference-api/reference/models/kling-video-v3-pro-motion-control.mdx index 374e5cb..ee72d43 100644 --- a/inference-api/reference/models/kling-video-v3-pro-motion-control.mdx +++ b/inference-api/reference/models/kling-video-v3-pro-motion-control.mdx @@ -449,5 +449,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `keep_original_sound` | `boolean` | `true` | Whether to keep the original sound from the reference video. | | `elements` | `array` | — | Optional element for facial consistency binding. Upload a facial element to enhance identity preservation in the generated video. Only 1 element is supported. Reference in prompt as @Element1. Element binding is only supported when character_orientation is 'video'. | +| `keep_original_sound` | `boolean` | `true` | Whether to keep the original sound from the reference video. | diff --git a/inference-api/reference/models/krea-2-raw.mdx b/inference-api/reference/models/krea-2-raw.mdx new file mode 100644 index 0000000..223bc2d --- /dev/null +++ b/inference-api/reference/models/krea-2-raw.mdx @@ -0,0 +1,638 @@ +--- +title: "Krea 2 Raw" +description: "Open-weights text-to-image base for LoRA fine-tuning" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `krea-2-raw` + +Krea 2 Raw is the undistilled open-weights checkpoint of Krea's Krea 2 text-to-image model, taken from mid-training and released specifically as a base for fine-tuning, LoRA training, and post-training. + +Because it has no distillation or post-training applied, it is diverse and malleable: train a LoRA on it to capture a specific aesthetic such as product photography, architectural renders, or editorial illustration. It can be deployed for dedicated inference (of the base model or a fine-tuned checkpoint); for always-on hosted inference the distilled Krea 2 Large model is the better fit. + +| Metric | Value | +|--------------------|--------------------| +| Parameter Count | 12.9 billion | +| Mixture of Experts | No | +| Context Length | Unknown | +| Multilingual | Unknown | +| Quantized* | No | + +*_Quantization is specific to the inference provider and the model may be offered with different quantization levels by other providers._ + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=krea-2-raw) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + See the [image generation reference](/inference-api/reference/image_generation) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/images/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/images/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "krea-2-raw", + "prompt": "" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/images/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/images/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/images/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/images/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "krea-2-raw", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "krea-2-raw", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "krea-2-raw", + "prompt": "", + "negative_prompt": "", + "width": 1024, + "height": 1024, + "num_inference_steps": 28, + "guidance_scale": 4.5 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/krea-2-raw +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `prompt` | `string` | — | Text prompt describing the image. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `negative_prompt` | `string` | — | What to avoid in the image. | +| `width` | `integer` | `1024` | Width Range: 512 – 2048. | +| `height` | `integer` | `1024` | Height Range: 512 – 2048. | +| `num_inference_steps` | `integer` | `28` | More steps trade speed for detail. Range: 1 – 50. | +| `guidance_scale` | `number` | `4.5` | How strongly the prompt steers generation. Range: 0 – 10. | +| `seed` | `integer` | — | Random seed for reproducible generation. | diff --git a/inference-api/reference/models/krea-v2-large-text-to-image.mdx b/inference-api/reference/models/krea-v2-large-text-to-image.mdx index ad81435..ee9df60 100644 --- a/inference-api/reference/models/krea-v2-large-text-to-image.mdx +++ b/inference-api/reference/models/krea-v2-large-text-to-image.mdx @@ -623,6 +623,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `image_style_references` | `array` | — | Optional list of reference image URLs that guide the style of the generated image. At most 10 entries. | -| `aspect_ratio` | `string` | `"1:1"` | Aspect ratio of the generated image. One of: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. | +| `aspect_ratio` | `string` | `"1:1"` | Aspect Ratio One of: 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, 9:16. | | `creativity` | `string` | `"medium"` | Controls how loosely the model interprets the prompt. Higher means more creative results that may drift from the prompt; low or raw values stay closer to the prompt. One of: raw, low, medium, high. | | `seed` | `integer` | — | Random seed for reproducible generation. | diff --git a/inference-api/reference/models/ltx-2-3-extend.mdx b/inference-api/reference/models/ltx-2-3-extend.mdx index ec6b832..e4af0f8 100644 --- a/inference-api/reference/models/ltx-2-3-extend.mdx +++ b/inference-api/reference/models/ltx-2-3-extend.mdx @@ -419,6 +419,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `prompt` | `string` | — | Optional description of what happens in the added footage. | -| `duration` | `integer` | `6` | Seconds of new footage to add, 2 to 20. Range: 2 – 20. | +| `duration` | `integer` | `6` | Extension (seconds) Range: 2 – 20. | | `extend_mode` | `string` | `"end"` | Add the new footage at the start or the end of the clip. One of: start, end. | | `context` | `number` | — | Seconds of the input video to use as context, up to 20. Defaults to 5 (less for long extensions). Context seconds are billed with the extension. Range: 1 – 20. | diff --git a/inference-api/reference/models/ltx-2-3-pro-22b-IC-LoRA-Union-Control.mdx b/inference-api/reference/models/ltx-2-3-pro-22b-IC-LoRA-Union-Control.mdx index 41a55d5..04ed4e6 100644 --- a/inference-api/reference/models/ltx-2-3-pro-22b-IC-LoRA-Union-Control.mdx +++ b/inference-api/reference/models/ltx-2-3-pro-22b-IC-LoRA-Union-Control.mdx @@ -634,9 +634,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ |-------|------|---------|-------------| | `input_image` | `string` | — | First frame image for image-to-video generation Format: uri. | | `input_video` | `string` | — | Primary conditioning video URL. Format: uri. | -| `duration` | `integer` | `6` | Duration of the video in seconds One of: 6, 8, 10. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video One of: 16:9, 9:16. | -| `resolution` | `string` | `"1080p"` | Resolution quality of the generated video One of: 1080p, 2k, 4k. | +| `duration` | `integer` | `6` | Duration Range: 6 – 10. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 1080p, 2k, 4k. | | `fps` | `integer` | `25` | Frame rate in frames per second One of: 24, 25, 30, 48, 50, 60. | | `video_conditioning_strength` | `number` | `1.0` | Default strength applied to conditioning videos when per-item strength is not provided. Range: 0.0 – 1.0. | | `conditioning_attention_strength` | `number` | `1.0` | Attention strength for IC-LoRA conditioning. Range: 0.0 – 1.0. | diff --git a/inference-api/reference/models/ltx-2-3-pro.mdx b/inference-api/reference/models/ltx-2-3-pro.mdx index 4a46947..0bdd089 100644 --- a/inference-api/reference/models/ltx-2-3-pro.mdx +++ b/inference-api/reference/models/ltx-2-3-pro.mdx @@ -124,11 +124,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }' ``` @@ -148,11 +148,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }, ) response.raise_for_status() @@ -323,11 +323,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -363,11 +363,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }, ) enqueue.raise_for_status() @@ -548,11 +548,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -585,11 +585,11 @@ Some other noteworthy features of LTX-2.3 22B - Image to Video include multi-key "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "last_frame_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "task": "image_to_video", - "resolution": "1080p", - "duration": 6, + "generate_audio": true, "aspect_ratio": "16:9", - "fps": 25, - "generate_audio": true + "duration": 6, + "resolution": "1080p", + "fps": 25 }, ) enqueue.raise_for_status() @@ -642,8 +642,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_image` | `string` | — | First frame image for image-to-video generation Format: uri. | | `last_frame_image` | `string` | — | Last frame image. When provided, the video interpolates between the first frame and this last frame. Format: uri. | | `task` | `string` | `"image_to_video"` | The generation task (fixed for this model) One of: image_to_video. | -| `resolution` | `string` | `"1080p"` | Resolution quality of the generated video One of: 720p, 1080p, 2k, 4k. | -| `duration` | `integer` | `6` | Duration of the video in seconds One of: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video One of: 16:9, 9:16. | -| `fps` | `integer` | `25` | Frame rate in frames per second One of: 24, 25, 48, 50. | | `generate_audio` | `boolean` | `true` | Generate audio for the video | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `duration` | `integer` | `6` | Duration Range: 6 – 10. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p, 2k, 4k. | +| `fps` | `integer` | `25` | Frame rate in frames per second One of: 24, 25, 48, 50. | diff --git a/inference-api/reference/models/ltx-2-3-quality-hdr.mdx b/inference-api/reference/models/ltx-2-3-quality-hdr.mdx index 3470ace..5a4d724 100644 --- a/inference-api/reference/models/ltx-2-3-quality-hdr.mdx +++ b/inference-api/reference/models/ltx-2-3-quality-hdr.mdx @@ -90,9 +90,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }' ``` @@ -112,9 +112,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }, ) @@ -216,9 +216,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }' | jq -r '.generations[0].generation_id') @@ -254,9 +254,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }, ) @@ -370,9 +370,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }' | jq -r '.generations[0].generation_id') @@ -405,9 +405,9 @@ The model returns an MP4 preview of the HDR result for quick inspection alongsid "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", "num_frames": 121, + "generate_audio": true, "resolution": "auto", "frames_per_second": 24, - "generate_audio": true, "video_quality": "high" }, ) @@ -460,9 +460,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `num_frames` | `integer` | `121` | The number of frames to generate. Range: 9 – 481. | -| `resolution` | `string` | `"auto"` | Output video size. The output is generated at up to ~720p (shorter side capped at 704px); larger requested sizes are scaled down, preserving the aspect ratio. One of: auto, square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. | -| `frames_per_second` | `number` | `24` | Frames per second of the generated video. Range: 1 – 60. | | `generate_audio` | `boolean` | `true` | Whether to include audio in the returned video. When disabled, the final MP4 is returned without an audio track. | +| `resolution` | `string` | `"auto"` | Resolution One of: auto, square_hd, square, portrait_4_3, portrait_16_9, landscape_4_3, landscape_16_9. | +| `frames_per_second` | `number` | `24` | Frames per second of the generated video. Range: 1 – 60. | | `video_quality` | `string` | `"high"` | The quality preset of the generated video. One of: low, medium, high, maximum. | | `negative_prompt` | `string` | — | The negative prompt to steer generation away from. | | `seed` | `integer` | — | Random seed for reproducibility. If None, a random seed is chosen. | diff --git a/inference-api/reference/models/ltx-2-3-reframe.mdx b/inference-api/reference/models/ltx-2-3-reframe.mdx index 6b48706..ffe0992 100644 --- a/inference-api/reference/models/ltx-2-3-reframe.mdx +++ b/inference-api/reference/models/ltx-2-3-reframe.mdx @@ -418,5 +418,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"9:16"` | Target aspect ratio; the model generates content to fill the revealed areas. One of: 9:16, 16:9, 1:1, 4:5, 5:4. | -| `resolution` | `string` | `"1080p"` | Output resolution tier. 1080p costs more per second. One of: 720p, 1080p. | +| `aspect_ratio` | `string` | `"9:16"` | Aspect Ratio One of: 9:16, 16:9, 1:1, 4:5, 5:4. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p. | diff --git a/inference-api/reference/models/ltx-2-3.mdx b/inference-api/reference/models/ltx-2-3.mdx index d8e0ec3..1506afc 100644 --- a/inference-api/reference/models/ltx-2-3.mdx +++ b/inference-api/reference/models/ltx-2-3.mdx @@ -75,10 +75,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' ``` @@ -94,10 +94,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both }, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) response.raise_for_status() @@ -117,15 +117,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' ``` @@ -142,15 +142,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both }, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -247,10 +247,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -282,10 +282,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both headers=HEADERS, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) enqueue.raise_for_status() @@ -320,15 +320,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' | jq -r '.generations[0].generation_id') @@ -361,15 +361,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both headers=HEADERS, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -478,10 +478,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -510,10 +510,10 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) enqueue.raise_for_status() @@ -549,15 +549,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' | jq -r '.generations[0].generation_id') @@ -587,15 +587,15 @@ Pick the Fast tier for speed and cost or the Pro tier for higher fidelity; both headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "ltx-2-3", + "video_mode": "fast", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -646,14 +646,14 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| +| `video_mode` | `string` | `"fast"` | Fast is quicker and cheaper; Pro is higher fidelity. Audio-to-video always runs on Pro. One of: fast, pro. | | `input_image` | `string` | — | Optional first-frame image to animate (image-to-video). Leave empty to generate from the prompt alone. Format: uri. | | `input_audio` | `string` | — | Optional audio track (2-20 seconds) to drive an audio-to-video generation. Output length and lip sync follow the audio; 1080p only. Always runs on Pro. Format: uri. | -| `video_mode` | `string` | `"fast"` | Fast is quicker and cheaper; Pro is higher fidelity. Audio-to-video always runs on Pro. One of: fast, pro. | | `tail_image_url` | `string` | — | Optional last frame for image-to-video; the model interpolates between the input image and this frame. Format: uri. | -| `resolution` | `string` | `"1080p"` | Output resolution tier. Audio-to-video is 1080p only. One of: 720p, 1080p, 1440p, 4k. | -| `aspect_ratio` | `string` | `"16:9"` | Output aspect ratio. One of: 16:9, 9:16. | -| `duration` | `integer` | `6` | Video duration in seconds. Up to 20 seconds on Fast at 720p/1080p and 24/25 FPS, otherwise up to 10. Range: 6 – 20. | -| `fps` | `integer` | `24` | Frame rate. 48 and 50 FPS shorten the maximum duration. One of: 24, 25, 48, 50. | | `generate_audio` | `boolean` | `true` | Generate synchronized audio for the video. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p, 1440p, 4k. | +| `duration` | `integer` | `6` | Duration (seconds) Range: 6 – 20. | +| `fps` | `integer` | `24` | Frame rate. 48 and 50 FPS shorten the maximum duration. One of: 24, 25, 48, 50. | | `camera_motion` | `string` | `"none"` | Camera motion effect to apply to the generated video. One of: none, dolly_in, dolly_out, dolly_left, dolly_right, jib_up, jib_down, static, focus_shift. | | `guidance_scale` | `number` | — | Audio-to-video only: how strictly the video follows the prompt. Defaults to 5 with a prompt, 9 with an input image. Range: 1 – 15. | diff --git a/inference-api/reference/models/ltx-2-5.mdx b/inference-api/reference/models/ltx-2-5.mdx index 6694562..4ec6dde 100644 --- a/inference-api/reference/models/ltx-2-5.mdx +++ b/inference-api/reference/models/ltx-2-5.mdx @@ -76,9 +76,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' ``` @@ -95,9 +95,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) response.raise_for_status() @@ -118,14 +118,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' ``` @@ -143,14 +143,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -248,9 +248,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -283,9 +283,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) enqueue.raise_for_status() @@ -321,14 +321,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' | jq -r '.generations[0].generation_id') @@ -362,14 +362,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -479,9 +479,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -511,9 +511,9 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast" + "input_audio": "https://example.com/audio.mp3" }, ) enqueue.raise_for_status() @@ -550,14 +550,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip -d '{ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }' | jq -r '.generations[0].generation_id') @@ -588,14 +588,14 @@ Pick the Fast tier for speed and cost — up to 4K resolution and 20-second clip json={ "model": "ltx-2-5", "prompt": "", + "video_mode": "fast", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", "input_audio": "https://example.com/audio.mp3", - "video_mode": "fast", - "resolution": "1080p", + "generate_audio": true, "aspect_ratio": "16:9", + "resolution": "1080p", "duration": 6, "fps": 24, - "generate_audio": true, "camera_motion": "none" }, ) @@ -646,14 +646,14 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| +| `video_mode` | `string` | `"fast"` | Fast is quicker and cheaper, with 4K and up to 20 seconds. Pro is higher fidelity, capped at 1080p and 10 seconds. One of: fast, pro. | | `input_image` | `string` | — | Optional first-frame image to animate (image-to-video). Leave empty to generate from the prompt alone. Format: uri. | | `input_audio` | `string` | — | Optional audio track (2-20 seconds) to drive an audio-to-video generation. Output length and lip sync follow the audio; 1080p only. Format: uri. | -| `video_mode` | `string` | `"fast"` | Fast is quicker and cheaper, with 4K and up to 20 seconds. Pro is higher fidelity, capped at 1080p and 10 seconds. One of: fast, pro. | | `tail_image_url` | `string` | — | Optional last frame for image-to-video; the model interpolates between the input image and this frame. Format: uri. | -| `resolution` | `string` | `"1080p"` | Output resolution tier. 1440p and 4K are Fast only. One of: 720p, 1080p, 1440p, 4k. | -| `aspect_ratio` | `string` | `"16:9"` | Output aspect ratio. One of: 16:9, 9:16. | -| `duration` | `integer` | `6` | Video duration in seconds. Fast supports up to 20 seconds at 720p/1080p and 10 at higher resolutions; Pro supports up to 10. Range: 6 – 20. | -| `fps` | `integer` | `24` | Frame rate. 48 and 50 FPS shorten the maximum duration; Pro supports 24, 25, and 50 only. One of: 24, 25, 48, 50. | | `generate_audio` | `boolean` | `true` | Generate synchronized audio for the video. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p, 1440p, 4k. | +| `duration` | `integer` | `6` | Duration (seconds) Range: 6 – 20. | +| `fps` | `integer` | `24` | Frame rate. 48 and 50 FPS shorten the maximum duration; Pro supports 24, 25, and 50 only. One of: 24, 25, 48, 50. | | `camera_motion` | `string` | `"none"` | Camera motion effect to apply to the generated video. One of: none, dolly_in, dolly_out, dolly_left, dolly_right, jib_up, jib_down, static, focus_shift. | | `guidance_scale` | `number` | — | Audio-to-video only: how strictly the video follows the prompt. Defaults to 5 with a prompt, 9 with an input image. Range: 1 – 15. | diff --git a/inference-api/reference/models/luma-ray-v3-2-image-to-video.mdx b/inference-api/reference/models/luma-ray-v3-2-image-to-video.mdx index c974da0..1a143dd 100644 --- a/inference-api/reference/models/luma-ray-v3-2-image-to-video.mdx +++ b/inference-api/reference/models/luma-ray-v3-2-image-to-video.mdx @@ -437,8 +437,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 3:1, 2:1, 21:9, 16:9, 4:3, 3:2, 1:1, 3:4, 2:3, 9:16, 1:2, 1:3. | -| `resolution` | `string` | `"540p"` | Resolution of the generated video (720p costs 2x, 1080p 4x). One of: 540p, 720p, 1080p. | -| `duration` | `string` | `"5s"` | Duration of the generated video (10s costs 2x). One of: 5s, 10s. | -| `loop` | `boolean` | — | Whether the video should loop seamlessly. Not supported for 10s videos. | | `reference_image_urls` | `array` | — | Optional list of reference image URLs used to guide the generation. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 3:1, 2:1, 21:9, 16:9, 4:3, 3:2, 1:1, 3:4, 2:3, 9:16, 1:2, 1:3. | +| `resolution` | `string` | `"540p"` | Resolution One of: 540p, 720p, 1080p. | +| `duration` | `string` | `"5s"` | Duration One of: 5s, 10s. | +| `loop` | `boolean` | — | Whether the video should loop seamlessly. Not supported for 10s videos. | diff --git a/inference-api/reference/models/luma-ray-v3-2-reframe.mdx b/inference-api/reference/models/luma-ray-v3-2-reframe.mdx index 7ab94d7..8038b21 100644 --- a/inference-api/reference/models/luma-ray-v3-2-reframe.mdx +++ b/inference-api/reference/models/luma-ray-v3-2-reframe.mdx @@ -39,8 +39,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }' ``` @@ -57,8 +57,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an }, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }, ) @@ -79,8 +79,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }' @@ -98,8 +98,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an }, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }, @@ -130,8 +130,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }' | jq -r '.generations[0].generation_id') @@ -164,8 +164,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an headers=HEADERS, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }, ) @@ -201,8 +201,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }' | jq -r '.generations[0].generation_id') @@ -236,8 +236,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an headers=HEADERS, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }, @@ -282,8 +282,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }' | jq -r '.generations[0].generation_id') @@ -313,8 +313,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4" }, ) @@ -351,8 +351,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }' | jq -r '.generations[0].generation_id') @@ -383,8 +383,8 @@ The prompt describes the content to paint into the newly exposed canvas area, an headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "luma-ray-v3-2-reframe", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "aspect_ratio": "3:4", "resolution": "540p" }, @@ -430,13 +430,13 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Text prompt describing the content to paint into the newly exposed canvas area when reframing to the target aspect ratio. | | `input_video` | `string` | — | URL of the source video to reframe (must be 30 seconds or less). Format: uri. | -| `aspect_ratio` | `string` | — | Target aspect ratio for the reframed video. One of: 3:4, 4:3, 1:1, 9:16, 16:9, 21:9. | +| `prompt` | `string` | — | Text prompt describing the content to paint into the newly exposed canvas area when reframing to the target aspect ratio. | +| `aspect_ratio` | `string` | — | Aspect Ratio One of: 3:4, 4:3, 1:1, 9:16, 16:9, 21:9. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"540p"` | Resolution of the reframed video. Higher resolutions cost more. One of: 540p, 720p, 1080p. | +| `resolution` | `string` | `"540p"` | Resolution One of: 540p, 720p, 1080p. | | `source_position` | `object` | — | Optional normalized source rectangle controlling where the source video sits in the output canvas. | diff --git a/inference-api/reference/models/luma-ray-v3-2-text-to-video.mdx b/inference-api/reference/models/luma-ray-v3-2-text-to-video.mdx index 0ee8b68..0620fc3 100644 --- a/inference-api/reference/models/luma-ray-v3-2-text-to-video.mdx +++ b/inference-api/reference/models/luma-ray-v3-2-text-to-video.mdx @@ -424,8 +424,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 3:1, 2:1, 21:9, 16:9, 4:3, 3:2, 1:1, 3:4, 2:3, 9:16, 1:2, 1:3. | -| `resolution` | `string` | `"540p"` | Resolution of the generated video (720p costs 2x, 1080p 4x). One of: 540p, 720p, 1080p. | -| `duration` | `string` | `"5s"` | Duration of the generated video (10s costs 2x). One of: 5s, 10s. | -| `loop` | `boolean` | — | Whether the video should loop seamlessly. Not supported for 10s videos. | | `reference_image_urls` | `array` | — | Optional list of reference image URLs used to guide the generation. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 3:1, 2:1, 21:9, 16:9, 4:3, 3:2, 1:1, 3:4, 2:3, 9:16, 1:2, 1:3. | +| `resolution` | `string` | `"540p"` | Resolution One of: 540p, 720p, 1080p. | +| `duration` | `string` | `"5s"` | Duration One of: 5s, 10s. | +| `loop` | `boolean` | — | Whether the video should loop seamlessly. Not supported for 10s videos. | diff --git a/inference-api/reference/models/luma-ray-v3-2-video-to-video.mdx b/inference-api/reference/models/luma-ray-v3-2-video-to-video.mdx index 0ade2b2..6c5de3a 100644 --- a/inference-api/reference/models/luma-ray-v3-2-video-to-video.mdx +++ b/inference-api/reference/models/luma-ray-v3-2-video-to-video.mdx @@ -39,8 +39,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' ``` @@ -56,8 +56,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of }, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) response.raise_for_status() @@ -77,8 +77,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }' @@ -96,8 +96,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of }, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }, @@ -128,8 +128,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -161,8 +161,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of headers=HEADERS, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -197,8 +197,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }' | jq -r '.generations[0].generation_id') @@ -232,8 +232,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of headers=HEADERS, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }, @@ -278,8 +278,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -308,8 +308,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -345,8 +345,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }' | jq -r '.generations[0].generation_id') @@ -377,8 +377,8 @@ The edit can be steered with an optional start image (e.g. a restyled version of headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "luma-ray-v3-2-video-to-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "540p", "duration": "5s" }, @@ -424,16 +424,16 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Text prompt describing how to edit the source video. | | `input_video` | `string` | — | URL of the source video to edit. Format: uri. | +| `prompt` | `string` | — | Text prompt describing how to edit the source video. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Optional URL of an image to use as the edited video's first frame — e.g. a restyled version of the source's opening frame to steer the look of the edit. Leave unset to let the model derive the first frame from the source video. Format: uri. | -| `resolution` | `string` | `"540p"` | Resolution of the edited video. Higher resolutions cost more. One of: 540p, 720p, 1080p. | -| `duration` | `string` | `"5s"` | Duration of the edited video. One of: 5s, 10s. | +| `resolution` | `string` | `"540p"` | Resolution One of: 540p, 720p, 1080p. | +| `duration` | `string` | `"5s"` | Duration One of: 5s, 10s. | | `edit_strength` | `string` | — | How closely the edit preserves the source video. 'adhere_*' stays closest to the source, 'flex_*' is balanced, and 'reimagine_*' diverges most. Leave unset to use Luma's default. Cannot be combined with auto_controls. One of: adhere_1, adhere_2, adhere_3, flex_1, flex_2, flex_3, reimagine_1, reimagine_2, reimagine_3. | | `auto_controls` | `boolean` | — | Let the model derive the edit conditioning schedule from the source video. Cannot be combined with edit_strength. | | `hdr` | `boolean` | — | Generate an HDR-encoded MP4. Requires HDR access on the account and a resolution of 720p or 1080p. | diff --git a/inference-api/reference/models/minimax-h3.mdx b/inference-api/reference/models/minimax-h3.mdx index e842dc1..90b4486 100644 --- a/inference-api/reference/models/minimax-h3.mdx +++ b/inference-api/reference/models/minimax-h3.mdx @@ -145,9 +145,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }' ``` @@ -175,9 +175,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }, ) response.raise_for_status() @@ -374,9 +374,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -420,9 +420,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }, ) enqueue.raise_for_status() @@ -629,9 +629,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -672,9 +672,9 @@ It generates 4 to 15 second clips at 768P or 2K resolution with native audio. Re "input_audios": [ "https://example.com/audio.mp3" ], - "resolution": "2K", + "aspect_ratio": "adaptive", "duration": 5, - "aspect_ratio": "adaptive" + "resolution": "2K" }, ) enqueue.raise_for_status() @@ -729,6 +729,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `input_images` | `array` | — | Optional reference images for subjects or style, up to 9. Cannot be combined with first or last frames. | | `input_videos` | `array` | — | Optional reference video clips for motion or style, up to 3 clips of 2 to 15 seconds (15 seconds total). Cannot be combined with first or last frames. | | `input_audios` | `array` | — | Optional reference audio for voice timbre, up to 3 clips of 2 to 15 seconds (15 seconds total). Cannot be combined with first or last frames. | -| `resolution` | `string` | `"2K"` | Output resolution tier. One of: 768P, 2K. | -| `duration` | `integer` | `5` | Output length in seconds (4 to 15). Range: 4 – 15. | -| `aspect_ratio` | `string` | `"adaptive"` | Output aspect ratio. Adaptive follows the input media; text-only prompts fall back to 16:9. One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `aspect_ratio` | `string` | `"adaptive"` | Aspect Ratio One of: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 4 – 15. | +| `resolution` | `string` | `"2K"` | Resolution One of: 768P, 2K. | diff --git a/inference-api/reference/models/nano-banana-2-lite.mdx b/inference-api/reference/models/nano-banana-2-lite.mdx index e6fb602..c131063 100644 --- a/inference-api/reference/models/nano-banana-2-lite.mdx +++ b/inference-api/reference/models/nano-banana-2-lite.mdx @@ -637,6 +637,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image to edit. Leave empty to generate from the prompt alone. Reference it in the prompt as @Image1. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9, 4:1, 1:4, 8:1, 1:8. | -| `resolution` | `string` | `"1K"` | Resolution of the generated image. This model only supports 1K output. One of: 1K. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9, 4:1, 1:4, 8:1, 1:8. | +| `resolution` | `string` | `"1K"` | Resolution One of: 1K. | | `thinking_level` | `string` | `"minimal"` | How much the model reasons before generating. 'high' improves complex compositions at higher latency and cost. One of: minimal, high. | diff --git a/inference-api/reference/models/nano-banana-2.mdx b/inference-api/reference/models/nano-banana-2.mdx index c8bd523..f4dd264 100644 --- a/inference-api/reference/models/nano-banana-2.mdx +++ b/inference-api/reference/models/nano-banana-2.mdx @@ -631,7 +631,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image(s) to edit. Leave empty to generate from the prompt alone. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9, 4:1, 1:4, 8:1, 1:8. | -| `resolution` | `string` | `"2K"` | Resolution of the generated image One of: 512, 1K, 2K, 4K. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 4:5, 5:4, 21:9, 4:1, 1:4, 8:1, 1:8. | +| `resolution` | `string` | `"2K"` | Resolution One of: 512, 1K, 2K, 4K. | | `google_search` | `boolean` | `false` | Ground the image in real-time web search results, useful for factual or current-events content like charts, maps, and recent events. | | `thinking_level` | `string` | `"minimal"` | How much the model reasons before generating. 'high' improves complex compositions at higher latency. It does not change the price, which is set by resolution alone. One of: minimal, high. | diff --git a/inference-api/reference/models/nano-banana.mdx b/inference-api/reference/models/nano-banana.mdx index ed7d276..e870952 100644 --- a/inference-api/reference/models/nano-banana.mdx +++ b/inference-api/reference/models/nano-banana.mdx @@ -627,4 +627,4 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `array` | — | Optional reference image(s) to edit. Leave empty to generate from the prompt alone. Reference them in the prompt as @Image1, @Image2, etc. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | diff --git a/inference-api/reference/models/openai-sora-2-pro.mdx b/inference-api/reference/models/openai-sora-2-pro.mdx index 664df3f..eabdfde 100644 --- a/inference-api/reference/models/openai-sora-2-pro.mdx +++ b/inference-api/reference/models/openai-sora-2-pro.mdx @@ -605,6 +605,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `input_image` | `string` | — | Optional image used as the first frame. The image must exactly match the target output dimensions. Valid dimensions are 720x1280, 1280x720, 1024x1792, or 1792x1024. Format: uri. | -| `aspect_ratio` | `string` | `"landscape"` | Target video orientation. Portrait outputs are vertical, landscape outputs are horizontal. Valid dimensions depend on the selected resolution. One of: landscape, portrait. | -| `resolution` | `string` | `"standard"` | Output resolution. Standard produces 720x1280 (portrait) or 1280x720 (landscape). High produces 1024x1792 (portrait) or 1792x1024 (landscape). One of: standard, high. | +| `aspect_ratio` | `string` | `"landscape"` | Aspect Ratio One of: landscape, portrait. | +| `resolution` | `string` | `"standard"` | Resolution One of: standard, high. | | `seconds` | `string` | `"4"` | Total video length in seconds. One of: 4, 8, 12. | diff --git a/inference-api/reference/models/qwen-image-2.mdx b/inference-api/reference/models/qwen-image-2.mdx index 7d40943..5516e70 100644 --- a/inference-api/reference/models/qwen-image-2.mdx +++ b/inference-api/reference/models/qwen-image-2.mdx @@ -615,7 +615,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ |-------|------|---------|-------------| | `input_image` | `string` | — | Optional reference image for image editing, style transfer, or image-to-image generation Format: uri. | | `match_input_image` | `boolean` | `false` | When true and an image is provided, use the input image's aspect ratio and resolution instead of the aspect_ratio parameter | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 1:2. | | `enable_prompt_expansion` | `boolean` | `true` | Automatically expand and optimize the prompt for better results | | `negative_prompt` | `string` | — | Negative prompt to specify elements to avoid in the generated image | | `seed` | `integer` | — | Random seed for reproducible generation. Range: 0-2147483647 | diff --git a/inference-api/reference/models/qwen-image-2512.mdx b/inference-api/reference/models/qwen-image-2512.mdx index 95d7f45..1418850 100644 --- a/inference-api/reference/models/qwen-image-2512.mdx +++ b/inference-api/reference/models/qwen-image-2512.mdx @@ -457,7 +457,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `negative_prompt` | `string` | — | Negative prompt for generated image | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | | `image_size` | `string` | `"optimize_for_quality"` | Image size for the generated image One of: optimize_for_quality, optimize_for_speed. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `3` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | diff --git a/inference-api/reference/models/qwen-image-edit-2511.mdx b/inference-api/reference/models/qwen-image-edit-2511.mdx index 3f4a0a0..8f9b3cd 100644 --- a/inference-api/reference/models/qwen-image-edit-2511.mdx +++ b/inference-api/reference/models/qwen-image-edit-2511.mdx @@ -451,6 +451,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | | `negative_prompt` | `string` | — | Negative prompt for generated image | | `output_format` | `string` | `"png"` | Format of the output images One of: webp, jpg, png. | diff --git a/inference-api/reference/models/qwen-image-edit-plus.mdx b/inference-api/reference/models/qwen-image-edit-plus.mdx index 4249ab8..1697e4d 100644 --- a/inference-api/reference/models/qwen-image-edit-plus.mdx +++ b/inference-api/reference/models/qwen-image-edit-plus.mdx @@ -465,6 +465,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | | `negative_prompt` | `string` | — | Negative prompt for generated image | | `output_format` | `string` | `"png"` | Format of the output images One of: webp, jpg, png. | diff --git a/inference-api/reference/models/qwen-image-edit.mdx b/inference-api/reference/models/qwen-image-edit.mdx index b70483c..c8bb8e2 100644 --- a/inference-api/reference/models/qwen-image-edit.mdx +++ b/inference-api/reference/models/qwen-image-edit.mdx @@ -431,4 +431,4 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | diff --git a/inference-api/reference/models/qwen-image.mdx b/inference-api/reference/models/qwen-image.mdx index 56911ec..9360980 100644 --- a/inference-api/reference/models/qwen-image.mdx +++ b/inference-api/reference/models/qwen-image.mdx @@ -459,7 +459,7 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| | `negative_prompt` | `string` | — | Negative prompt for generated image | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | | `image_size` | `string` | `"optimize_for_quality"` | Image size for the generated image One of: optimize_for_quality, optimize_for_speed. | | `num_inference_steps` | `integer` | `30` | Number of denoising steps. Recommended range is 28-50, and lower number of steps produce lower quality outputs, faster. Range: 1 – 50. | | `guidance` | `number` | `3` | Guidance for generated image. Lower values can give more realistic images. Good values to try are 2, 2.5, 3 and 3.5 Range: 0 – 10. | diff --git a/inference-api/reference/models/topazlabs-astra-2-video.mdx b/inference-api/reference/models/topazlabs-astra-2-video.mdx index 529dac0..31284f2 100644 --- a/inference-api/reference/models/topazlabs-astra-2-video.mdx +++ b/inference-api/reference/models/topazlabs-astra-2-video.mdx @@ -78,12 +78,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit -d '{ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }' ``` @@ -100,12 +100,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit json={ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }, ) response.raise_for_status() @@ -204,12 +204,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit -d '{ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -242,12 +242,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit json={ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }, ) enqueue.raise_for_status() @@ -358,12 +358,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit -d '{ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -393,12 +393,12 @@ Use this model to enrich stylized or synthetic footage with adjustable creativit json={ "model": "topazlabs-astra-2-video", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "4k", "interpolate_frames": false, "target_fps": 30, "creativity": 0.5, - "sharp": 0.5, - "prompt": "" + "sharp": 0.5 }, ) enqueue.raise_for_status() @@ -449,8 +449,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"4k"` | Target output resolution. One of: 1080p, 2k, 4k. | +| `prompt` | `string` | `""` | Optional prompt to guide enhancement. Limits clips to 450 frames when set. | +| `resolution` | `string` | `"4k"` | Resolution One of: 1080p, 2k, 4k. | | `interpolate_frames` | `boolean` | `false` | Increase the output frame rate by generating new frames. More expensive. | | `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | | `sharp` | `number` | `0.5` | Pre-enhance sharpness (0.0 softens, 0.5 passthrough, 1.0 sharpens). Range: 0 – 1. | -| `prompt` | `string` | `""` | Optional prompt to guide enhancement. Limits clips to 450 frames when set. | diff --git a/inference-api/reference/models/topazlabs-hyperion-2-5-video.mdx b/inference-api/reference/models/topazlabs-hyperion-2-5-video.mdx new file mode 100644 index 0000000..d6f0f41 --- /dev/null +++ b/inference-api/reference/models/topazlabs-hyperion-2-5-video.mdx @@ -0,0 +1,422 @@ +--- +title: "Topaz Hyperion 2.5" +description: "SDR-to-HDR video, including AI-generated footage" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `topazlabs-hyperion-2-5-video` + +Topaz Hyperion 2.5 converts 8-bit AI video into true HDR: an SDR-to-HDR model that redistributes luminance and color across highlights, midtones, and shadows while preserving fine detail, with no tuning parameters to set. AI footage can finally sit alongside live action in professional and VFX pipelines. + +It handles AI-generated footage as well as camera source, taking 8-bit input up to professional deliverables. Output is HDR in the BT.2020 color space with a PQ (SMPTE-2084) transfer function, delivered as 10-bit H.265, 10-bit ProRes, or 16-bit lossless FFV1 for mastering, grading, and VFX workflows. + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=topazlabs-hyperion-2-5-video) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + This blocks until the video is ready (typically 5-15 minutes). Prefer **Async** or **Async with SSE** for anything beyond quick experimentation. + + See the [video generation reference](/inference-api/reference/video_generation) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "topazlabs-hyperion-2-5-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "output_encoder": "H265", + "output_profile": "422 HQ" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/topazlabs-hyperion-2-5-video +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `input_video` | `string` | — | SDR video file to convert to HDR (URL or file path). Format: uri. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `output_encoder` | `string` | `"H265"` | Encoder for the rendered HDR output. H.265 (10-bit) for compact delivery, ProRes (10-bit) for pro editing and grading, FFV1 (16-bit lossless, MKV) for maximum-fidelity mastering and VFX interchange. One of: H265, ProRes, FFV1. | +| `output_profile` | `string` | `"422 HQ"` | ProRes quality profile. All 422 profiles are 10-bit; HQ preserves the most detail. One of: 422 Proxy, 422 LT, 422 Std, 422 HQ. | diff --git a/inference-api/reference/models/topazlabs-iris-mq-video.mdx b/inference-api/reference/models/topazlabs-iris-mq-video.mdx index 90573dd..e9bc7a1 100644 --- a/inference-api/reference/models/topazlabs-iris-mq-video.mdx +++ b/inference-api/reference/models/topazlabs-iris-mq-video.mdx @@ -79,12 +79,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' ``` @@ -104,12 +104,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) response.raise_for_status() @@ -209,12 +209,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -250,12 +250,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -367,12 +367,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -405,12 +405,12 @@ Use this model when restoring faces in compressed web video, video calls, or oth "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -460,13 +460,13 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080p"` | Target output resolution. One of: 720p, 1080p, 2k, 4k. | +| `resolution` | `string` | `"1080p"` | One of: 720p, 1080p, 2k, 4k. | | `interpolate_frames` | `boolean` | `false` | Increase the output frame rate by generating new frames. More expensive. | | `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | -| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | | `compression` | `number` | `0` | Reduces compression artifacts. Higher values remove more artifacts. Range: -1 – 1. | | `details` | `number` | `0` | Detail enhancement. Higher values boost fine detail. Range: -1 – 1. | +| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | +| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | +| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | | `grain` | `number` | `0.05` | Film grain intensity. Range: 0 – 0.1. | | `grain_type` | `string` | — | Film grain style. One of: silver_rich, gaussian, grey. | -| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | -| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | diff --git a/inference-api/reference/models/topazlabs-proteus-video.mdx b/inference-api/reference/models/topazlabs-proteus-video.mdx index 8b781dd..03dd0fc 100644 --- a/inference-api/reference/models/topazlabs-proteus-video.mdx +++ b/inference-api/reference/models/topazlabs-proteus-video.mdx @@ -79,12 +79,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' ``` @@ -104,12 +104,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) response.raise_for_status() @@ -209,12 +209,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -250,12 +250,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -367,12 +367,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -405,12 +405,12 @@ Use Proteus when you want fine-grained control over enhancement parameters such "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -460,13 +460,13 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080p"` | Target output resolution. One of: 720p, 1080p, 2k, 4k. | +| `resolution` | `string` | `"1080p"` | One of: 720p, 1080p, 2k, 4k. | | `interpolate_frames` | `boolean` | `false` | Increase the output frame rate by generating new frames. More expensive. | | `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | -| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | | `compression` | `number` | `0` | Reduces compression artifacts. Higher values remove more artifacts. Range: -1 – 1. | | `details` | `number` | `0` | Detail enhancement. Higher values boost fine detail. Range: -1 – 1. | +| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | +| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | +| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | | `grain` | `number` | `0.05` | Film grain intensity. Range: 0 – 0.1. | | `grain_type` | `string` | — | Film grain style. One of: silver_rich, gaussian, grey. | -| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | -| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | diff --git a/inference-api/reference/models/topazlabs-rhea-video.mdx b/inference-api/reference/models/topazlabs-rhea-video.mdx index 38e7eee..36cb655 100644 --- a/inference-api/reference/models/topazlabs-rhea-video.mdx +++ b/inference-api/reference/models/topazlabs-rhea-video.mdx @@ -79,12 +79,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' ``` @@ -104,12 +104,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) response.raise_for_status() @@ -209,12 +209,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -250,12 +250,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -367,12 +367,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -405,12 +405,12 @@ Use Rhea as an updated alternative to Proteus when you want stronger detail reco "resolution": "1080p", "interpolate_frames": false, "target_fps": 30, - "blur": 0, "compression": 0, "details": 0, - "grain": 0.05, + "noise": 0, + "blur": 0, "halo": 0, - "noise": 0 + "grain": 0.05 }, ) enqueue.raise_for_status() @@ -460,13 +460,13 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080p"` | Target output resolution. One of: 720p, 1080p, 2k, 4k. | +| `resolution` | `string` | `"1080p"` | One of: 720p, 1080p, 2k, 4k. | | `interpolate_frames` | `boolean` | `false` | Increase the output frame rate by generating new frames. More expensive. | | `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | -| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | | `compression` | `number` | `0` | Reduces compression artifacts. Higher values remove more artifacts. Range: -1 – 1. | | `details` | `number` | `0` | Detail enhancement. Higher values boost fine detail. Range: -1 – 1. | +| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | +| `blur` | `number` | `0` | Anti-blur / sharpening. Higher values produce a sharper result. Range: -1 – 1. | +| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | | `grain` | `number` | `0.05` | Film grain intensity. Range: 0 – 0.1. | | `grain_type` | `string` | — | Film grain style. One of: silver_rich, gaussian, grey. | -| `halo` | `number` | `0` | Halo and ringing reduction. Higher values suppress halos more strongly. Range: -1 – 1. | -| `noise` | `number` | `0` | Noise handling. Negative reduces noise, positive adds grain-like noise. Range: -1 – 1. | diff --git a/inference-api/reference/models/topazlabs-upscale-starlight-2-5-video.mdx b/inference-api/reference/models/topazlabs-upscale-starlight-2-5-video.mdx index 4ea0da2..5448fb5 100644 --- a/inference-api/reference/models/topazlabs-upscale-starlight-2-5-video.mdx +++ b/inference-api/reference/models/topazlabs-upscale-starlight-2-5-video.mdx @@ -424,6 +424,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"4k"` | Target output resolution. One of: 1080p, 2k, 4k. | +| `resolution` | `string` | `"4k"` | One of: 1080p, 2k, 4k. | | `interpolate_frames` | `boolean` | `false` | Increase the output frame rate by generating new frames. More expensive. | | `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | diff --git a/inference-api/reference/models/topazlabs-upscale-starlight-2-6-video.mdx b/inference-api/reference/models/topazlabs-upscale-starlight-2-6-video.mdx new file mode 100644 index 0000000..4d48042 --- /dev/null +++ b/inference-api/reference/models/topazlabs-upscale-starlight-2-6-video.mdx @@ -0,0 +1,436 @@ +--- +title: "Topaz Starlight Precise 2.6" +description: "Detail-preserving video upscaling with softness control" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `topazlabs-upscale-starlight-2-6-video` + +Topaz Starlight Precise 2.6 is a video restoration and upscaling model focused on preserving fine detail and temporal consistency while improving clarity. Over 2.5 it adds a softness control for fine-tuning sharpness, fixes a flicker bug, and renders up to 15% faster. + +A detail-preserving upscaler for AI-generated video and archival sources: it removes the soft, plastic look of generated footage, adds realistic faces and textures, and keeps text and labels legible. Use it to upscale input to 1080p or 4k and control output frame rate. + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=topazlabs-upscale-starlight-2-6-video) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + This blocks until the video is ready (typically 5-15 minutes). Prefer **Async** or **Async with SSE** for anything beyond quick experimentation. + + See the [video generation reference](/inference-api/reference/video_generation) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "topazlabs-upscale-starlight-2-6-video", + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "resolution": "4k", + "softness": 1, + "interpolate_frames": true, + "target_fps": 30 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/topazlabs-upscale-starlight-2-6-video +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `input_video` | `string` | — | Video file to upscale (URL or file path). Format: uri. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `resolution` | `string` | `"4k"` | Resolution One of: 1080p, 2k, 4k. | +| `softness` | `number` | `1` | Softens the enhanced result. 1 is the sharpest; raise it if the output looks over-sharpened. Range: 1 – 5. | +| `interpolate_frames` | `boolean` | `true` | Increase the output frame rate by generating new frames. More expensive. Turn off to keep the source frame rate. | +| `target_fps` | `number` | `30` | Output frame rate after interpolation. One of: 24, 23.976, 25, 29.97, 30, 50, 59.94, 60. | diff --git a/inference-api/reference/models/wan-v2-6-image-to-video.mdx b/inference-api/reference/models/wan-v2-6-image-to-video.mdx index a2010f8..4a3bd46 100644 --- a/inference-api/reference/models/wan-v2-6-image-to-video.mdx +++ b/inference-api/reference/models/wan-v2-6-image-to-video.mdx @@ -435,5 +435,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `duration` | `integer` | `5` | Video duration in seconds One of: 5, 10, 15. | | `audio_url` | `string` | — | URL of the audio to use as the background music. If the audio duration exceeds the duration value, the audio is truncated to the first N seconds, and the rest is discarded. Format: uri. | +| `duration` | `integer` | `5` | Duration (seconds) Range: 5 – 15. | diff --git a/inference-api/reference/models/wan-v2-7-edit-video.mdx b/inference-api/reference/models/wan-v2-7-edit-video.mdx index aa86459..e625fe0 100644 --- a/inference-api/reference/models/wan-v2-7-edit-video.mdx +++ b/inference-api/reference/models/wan-v2-7-edit-video.mdx @@ -37,8 +37,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' ``` @@ -54,8 +54,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r }, json={ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) response.raise_for_status() @@ -75,8 +75,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -95,8 +95,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r }, json={ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -128,8 +128,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -161,8 +161,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r headers=HEADERS, json={ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -197,8 +197,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -233,8 +233,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r headers=HEADERS, json={ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -280,8 +280,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -310,8 +310,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "wan-v2-7-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -347,8 +347,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -380,8 +380,8 @@ WAN 2.7 edit-video transforms existing videos using instruction-based editing, r headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "wan-v2-7-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "1080p", "duration": 0, "audio_setting": "auto" @@ -428,15 +428,15 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Editing instruction or style transfer description. | | `input_video` | `string` | — | URL of the input video to edit. Format: MP4, MOV. Duration: 2-10s. Max 100 MB. Format: uri. | +| `prompt` | `string` | — | Editing instruction or style transfer description. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080p"` | Output video resolution tier. One of: 720p, 1080p. | -| `duration` | `integer` | `0` | Output video duration in seconds. Default 0 means match input video duration. When set (2-10), truncates from the start. One of: 0, 2, 3, 4, 5, 6, 7, 8, 9, 10. | | `reference_image_url` | `string` | — | Reference image URL for reference-based editing. Format: uri. | +| `resolution` | `string` | `"1080p"` | Resolution One of: 720p, 1080p. | +| `duration` | `integer` | `0` | Duration Range: 2 – 10. | | `audio_setting` | `string` | `"auto"` | Audio handling. 'auto': model decides whether to regenerate audio. 'origin': preserve original audio from input video. One of: auto, origin. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). | diff --git a/inference-api/reference/models/wan-v2-7-image-to-video.mdx b/inference-api/reference/models/wan-v2-7-image-to-video.mdx index 065883c..4634330 100644 --- a/inference-api/reference/models/wan-v2-7-image-to-video.mdx +++ b/inference-api/reference/models/wan-v2-7-image-to-video.mdx @@ -636,8 +636,8 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `end_image_url` | `string` | — | Optional URL of the last frame image for first-and-last-frame-to-video. Same format constraints as the first frame image. Format: uri. | | `input_video` | `string` | — | URL of an input video for continuation (first_clip). Formats: MP4, MOV. Duration 2-10s, resolution 240-4096 px per side, aspect ratio 1:8 to 8:1, max 100 MB. Mutually exclusive with input_image. Format: uri. | | `audio_url` | `string` | — | Optional driving audio URL. Used for lip-sync and action timing. Supports WAV and MP3. Duration 2-30s, max 15 MB. If shorter than the video, the remainder is silent; if longer, it is truncated. Format: uri. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (2-15). Range: 2 – 15. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 2 – 15. | | `negative_prompt` | `string` | — | Content to avoid in the video. Supports Chinese and English. Max 500 characters. | | `prompt_extend` | `boolean` | `true` | Whether the model rewrites short prompts to improve quality. Adds processing time. | | `watermark` | `boolean` | `false` | Adds an 'AI Generated' watermark to the bottom-right corner. | diff --git a/inference-api/reference/models/wan-v2-7-reference-to-video.mdx b/inference-api/reference/models/wan-v2-7-reference-to-video.mdx index 000d9e8..992d495 100644 --- a/inference-api/reference/models/wan-v2-7-reference-to-video.mdx +++ b/inference-api/reference/models/wan-v2-7-reference-to-video.mdx @@ -689,9 +689,9 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | `reference_images` | `array` | — | Array of reference images for character/object/scene appearance. Each item has a URL and an optional reference voice. Order maps to @Image1, @Image2, etc. Reference images + reference videos must total ≤ 5. JPEG/JPG/PNG/BMP/WEBP, 240-8000 px per side, aspect ratio 1:8 to 8:1, max 20 MB each. | | `reference_videos` | `array` | — | Array of reference videos for character/object appearance, motion, and voice. Each item has a URL and an optional reference voice. Order maps to @Video1, @Video2, etc. Reference images + reference videos must total ≤ 5. MP4/MOV, 1-30s, 240-4096 px per side, aspect ratio 1:8 to 8:1, max 100 MB each. | | `input_image` | `string` | — | Optional first-frame image used for joint control. Provides a starting frame the video is generated from. JPEG/JPG/PNG/BMP/WEBP, 240-8000 px per side, max 20 MB. When provided, the output aspect ratio is taken from this image and the aspect_ratio parameter is ignored. Format: uri. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. Ignored when a first frame image is provided (the model uses the input asset's ratio). One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds. 2-15 with reference images only; 2-10 when any reference video is included. Range: 2 – 15. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 2 – 15. | | `negative_prompt` | `string` | — | Content to avoid in the video. Supports Chinese and English. Max 500 characters. | | `prompt_extend` | `boolean` | `true` | Whether the model rewrites short prompts to improve quality. Adds processing time. | | `watermark` | `boolean` | `false` | Adds an 'AI Generated' watermark to the bottom-right corner. | diff --git a/inference-api/reference/models/wan-v2-7-text-to-video.mdx b/inference-api/reference/models/wan-v2-7-text-to-video.mdx index a287106..873b77b 100644 --- a/inference-api/reference/models/wan-v2-7-text-to-video.mdx +++ b/inference-api/reference/models/wan-v2-7-text-to-video.mdx @@ -434,11 +434,11 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio of the generated video. One of: 16:9, 9:16, 1:1, 4:3, 3:4. | -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 720P, 1080P. | -| `duration` | `integer` | `5` | Output video duration in seconds (2-15). Range: 2 – 15. | -| `negative_prompt` | `string` | — | Content to avoid in the video. Supports Chinese and English. Max 500 characters. | | `audio_url` | `string` | — | URL of driving audio. Supports WAV and MP3. Duration: 2-30s. Max 15 MB. If omitted, the model auto-generates matching background audio. Format: uri. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 2 – 15. | +| `negative_prompt` | `string` | — | Content to avoid in the video. Supports Chinese and English. Max 500 characters. | | `prompt_extend` | `boolean` | `true` | Whether the model rewrites short prompts to improve quality. Adds processing time. | | `watermark` | `boolean` | `false` | Adds an 'AI-generated' watermark to the bottom-right corner. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). Range: 0 – 2147483647. | diff --git a/inference-api/reference/models/wan-v3-0-video-prime.mdx b/inference-api/reference/models/wan-v3-0-video-prime.mdx new file mode 100644 index 0000000..53b4ee8 --- /dev/null +++ b/inference-api/reference/models/wan-v3-0-video-prime.mdx @@ -0,0 +1,782 @@ +--- +title: "WAN 3.0 Prime" +description: "Faster WAN 3.0 Omni at a higher price" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `wan-v3-0-video-prime` + +WAN 3.0 Omni Prime is the speed-optimized tier of the all-in-one reference mode of Alibaba's WAN 3.0 unified video model. Per Alibaba it produces outputs identical in quality to WAN 3.0 Omni while generating 5 to 7 times faster, at a higher price per second; a 15-second 720P clip takes roughly two minutes. It generates 2 to 30 second clips at up to 1080P, with generated audio on by default, and supports a smart duration mode that lets the model pick the length from the prompt. With no references supplied it generates from the prompt alone. + +It accepts up to 10 images, 5 video clips, and 5 audio clips as combined references for appearance, motion, and voice; refer to them from the prompt as @Image 1, @Video 1, @Audio 1 and so on, numbered separately within each type. Alibaba's prompt guide structures a prompt as reference subject + action + dialogue, e.g. "Using the voice from @Audio 1, @Image 1 points at @Image 2 and says, ...", and a reference can be mentioned more than once. + +It also supports first/last frame generation: supply a first frame image and optionally a last frame to interpolate toward, in place of references. The provider rejects requests that mix frame inputs with reference inputs, so use one mode or the other per request. + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=wan-v3-0-video-prime) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + This blocks until the video is ready (typically 5-15 minutes). Prefer **Async** or **Async with SSE** for anything beyond quick experimentation. + + See the [video generation reference](/inference-api/reference/video_generation) for more details. + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "" + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "" + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/videos/generate \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/videos/generate", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }' | jq -r '.generations[0].generation_id') + + # Poll until the generation reaches a terminal status. + while true; do + STATUS=$(curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq -r '.status') + echo "Status: $STATUS" + case $STATUS in succeeded|failed|cancelled) break;; esac + sleep 5 + done + + # Print the result. + curl -s -H "Authorization: Bearer $OXEN_API_KEY" \ + "https://hub.oxen.ai/api/ai/queue/$GEN_ID" | jq . + ``` + + ```python Python + import os + import time + import requests + + HEADERS = { + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + } + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers=HEADERS, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + while True: + data = requests.get( + f"https://hub.oxen.ai/api/ai/queue/{generation_id}", + headers=HEADERS, + ).json() + if data["status"] in {"succeeded", "failed", "cancelled"}: + break + time.sleep(5) + + if data["status"] == "succeeded": + print(f"Result: {data['result_url']}") + else: + print(f"Generation {data['status']}: {data.get('error_message')}") + ``` + + + + + + + + + + See the [async queue reference](/inference-api/reference/async_queue) for more details. + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "" + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "" + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5 + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + ```bash cURL + # Enqueue, capture the generation id. + GEN_ID=$(curl -s -X POST https://hub.oxen.ai/api/ai/queue \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }' | jq -r '.generations[0].generation_id') + + # Stream the SSE channel, grab the data line that follows a + # media_generation_completed event for our id, and pretty-print it. + curl -sN -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/events \ + | awk -v id="$GEN_ID" ' + /^event: media_generation_completed$/ { expect=1; next } + /^data: / && expect { + payload = substr($0, 7) + if (index(payload, "\"generation_id\":\"" id "\"")) { print payload; exit } + expect = 0 + } + ' | jq . + ``` + + ```python Python + import json + import os + import requests + + API_KEY = os.environ["OXEN_API_KEY"] + AUTH = {"Authorization": f"Bearer {API_KEY}"} + + enqueue = requests.post( + "https://hub.oxen.ai/api/ai/queue", + headers={**AUTH, "Content-Type": "application/json"}, + json={ + "model": "wan-v3-0-video-prime", + "prompt": "", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, + "aspect_ratio": "adaptive", + "resolution": "1080P", + "duration": 5, + "enable_thinking": false, + "watermark": false + }, + ) + enqueue.raise_for_status() + generation_id = enqueue.json()["generations"][0]["generation_id"] + + with requests.get( + "https://hub.oxen.ai/api/events", + headers=AUTH, + stream=True, + ) as stream: + event_name = None + for line in stream.iter_lines(decode_unicode=True): + if line.startswith("event: "): + event_name = line.removeprefix("event: ") + elif line.startswith("data: ") and event_name == "media_generation_completed": + payload = json.loads(line.removeprefix("data: ")) + if payload.get("generation_id") == generation_id: + print(payload) + break + ``` + + + + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/wan-v3-0-video-prime +``` + +## Request parameters + +### Required parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `prompt` | `string` | — | Text prompt describing the desired video. Max 5000 characters. Refer to reference assets with the @ syntax: @Image 1, @Image 2, ..., @Video 1, ..., @Audio 1, ...; each type is numbered separately. | + +### Optional parameters + +| Field | Type | Default | Description | +|-------|------|---------|-------------| +| `input_images` | `array` | — | Reference images for character, object, or scene appearance. Order maps to @Image 1, @Image 2, etc. in the prompt. Up to 10 images, max 20 MB each. JPEG/PNG/BMP/WEBP. | +| `input_image` | `string` | — | Optional first frame image the video is generated from. JPEG/PNG/BMP/WEBP, max 20 MB. The output aspect ratio is taken from this image. Cannot be combined with reference images, videos, or audio. Format: uri. | +| `tail_image_url` | `string` | — | Optional last frame image. The video interpolates from the first frame to this one. Requires a first frame image; same format constraints. Cannot be combined with reference images, videos, or audio. Format: uri. | +| `input_videos` | `array` | — | Reference videos for character or object appearance, motion, voice, or a camera movement to follow. Order maps to @Video 1, @Video 2, etc. in the prompt. Up to 5 clips totalling 15 seconds, max 100 MB each. MP4/MOV. | +| `input_audios` | `array` | — | Reference audio used as a voice or sound reference. Order maps to @Audio 1, @Audio 2, etc. in the prompt, e.g. "using the voice from @Audio 1". Up to 5 clips totalling 15 seconds, max 15 MB each. WAV/MP3. | +| `generate_audio` | `boolean` | `true` | Whether the model generates sound for the video. Pricing is the same either way. | +| `aspect_ratio` | `string` | `"adaptive"` | Aspect Ratio One of: adaptive, 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 480P, 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 2 – 30. | +| `enable_thinking` | `boolean` | `false` | Enables thinking mode, which lets the model reason about the prompt before generating. Adds processing time. | +| `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). | +| `watermark` | `boolean` | `false` | Adds an 'AI generated' watermark to the bottom-right corner. | diff --git a/inference-api/reference/models/wan-v3-0-video.mdx b/inference-api/reference/models/wan-v3-0-video.mdx index a085cef..674f487 100644 --- a/inference-api/reference/models/wan-v3-0-video.mdx +++ b/inference-api/reference/models/wan-v3-0-video.mdx @@ -1,6 +1,6 @@ --- title: "WAN 3.0" -description: "Reference-driven video with audio, up to 30s" +description: "Reference or first/last frame video with audio" --- @@ -11,11 +11,11 @@ description: "Reference-driven video with audio, up to 30s" **Model ID:** `wan-v3-0-video` -WAN 3.0 is a unified video generation model that replaces the separate text-to-video, image-to-video, reference-to-video, and video-edit models of the 2.x line with a single endpoint covering all of them. It generates 2 to 30 second clips at up to 1080P, with generated audio on by default, and supports a smart duration mode that lets the model pick the length from the prompt. +WAN 3.0 Omni is the all-in-one reference mode of Alibaba's WAN 3.0 unified video model. It generates 2 to 30 second clips at up to 1080P, with generated audio on by default, and supports a smart duration mode that lets the model pick the length from the prompt. With no references supplied it generates from the prompt alone, replacing the separate text-to-video and reference-to-video models of the 2.x line. -Input works in one of two mutually exclusive modes. All-in-one reference accepts up to 10 images, 5 video clips, and 5 audio clips as combined references for appearance, motion, and voice; refer to them from the prompt as @Image 1, @Video 1, @Audio 1 and so on, numbered separately within each type. Alibaba's prompt guide structures a prompt as reference subject + action + dialogue, e.g. "Using the voice from @Audio 1, @Image 1 points at @Image 2 and says, ...", and a reference can be mentioned more than once. First and last frame mode instead takes a starting frame and an optional ending frame. Mixing the two modes fails the request. +It accepts up to 10 images, 5 video clips, and 5 audio clips as combined references for appearance, motion, and voice; refer to them from the prompt as @Image 1, @Video 1, @Audio 1 and so on, numbered separately within each type. Alibaba's prompt guide structures a prompt as reference subject + action + dialogue, e.g. "Using the voice from @Audio 1, @Image 1 points at @Image 2 and says, ...", and a reference can be mentioned more than once. -WAN 3.0 also accepts document and web page input when thinking mode is enabled, which the Oxen API does not expose yet. Note that it removes the `negative_prompt` and `prompt_extend` parameters that the 2.x models accepted. +It also supports first/last frame generation: supply a first frame image and optionally a last frame to interpolate toward, in place of references. The provider rejects requests that mix frame inputs with reference inputs, so use one mode or the other per request. ## Example request @@ -78,10 +78,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }' ``` @@ -98,10 +109,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }, ) response.raise_for_status() @@ -122,10 +144,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }' @@ -144,10 +177,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }, @@ -246,10 +290,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -282,10 +337,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }, ) enqueue.raise_for_status() @@ -321,10 +387,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }' | jq -r '.generations[0].generation_id') @@ -359,10 +436,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }, @@ -473,10 +561,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -506,10 +605,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", - "duration": 5, - "generate_audio": true + "resolution": "1080P", + "duration": 5 }, ) enqueue.raise_for_status() @@ -546,10 +656,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, -d '{ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }' | jq -r '.generations[0].generation_id') @@ -581,10 +702,21 @@ WAN 3.0 also accepts document and web page input when thinking mode is enabled, json={ "model": "wan-v3-0-video", "prompt": "", - "resolution": "1080P", + "input_images": [ + "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png" + ], + "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "tail_image_url": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", + "input_videos": [ + "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + ], + "input_audios": [ + "https://example.com/audio.mp3" + ], + "generate_audio": true, "aspect_ratio": "adaptive", + "resolution": "1080P", "duration": 5, - "generate_audio": true, "enable_thinking": false, "watermark": false }, @@ -636,10 +768,15 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"1080P"` | Output video resolution tier. One of: 480P, 720P, 1080P. | -| `aspect_ratio` | `string` | `"adaptive"` | Aspect ratio of the generated video. Adaptive lets the model choose, which is usually what you want when supplying a first frame image. One of: adaptive, 16:9, 9:16, 1:1, 4:3, 3:4. | -| `duration` | `integer` | `5` | Output video duration in seconds. Auto lets the model choose the length from the prompt. One of: -1, 2, 3, 4, 5, 6, 8, 10, 12, 15, 20, 25, 30. | +| `input_images` | `array` | — | Reference images for character, object, or scene appearance. Order maps to @Image 1, @Image 2, etc. in the prompt. Up to 10 images, max 20 MB each. JPEG/PNG/BMP/WEBP. | +| `input_image` | `string` | — | Optional first frame image the video is generated from. JPEG/PNG/BMP/WEBP, max 20 MB. The output aspect ratio is taken from this image. Cannot be combined with reference images, videos, or audio. Format: uri. | +| `tail_image_url` | `string` | — | Optional last frame image. The video interpolates from the first frame to this one. Requires a first frame image; same format constraints. Cannot be combined with reference images, videos, or audio. Format: uri. | +| `input_videos` | `array` | — | Reference videos for character or object appearance, motion, voice, or a camera movement to follow. Order maps to @Video 1, @Video 2, etc. in the prompt. Up to 5 clips totalling 15 seconds, max 100 MB each. MP4/MOV. | +| `input_audios` | `array` | — | Reference audio used as a voice or sound reference. Order maps to @Audio 1, @Audio 2, etc. in the prompt, e.g. "using the voice from @Audio 1". Up to 5 clips totalling 15 seconds, max 15 MB each. WAV/MP3. | | `generate_audio` | `boolean` | `true` | Whether the model generates sound for the video. Pricing is the same either way. | +| `aspect_ratio` | `string` | `"adaptive"` | Aspect Ratio One of: adaptive, 16:9, 9:16, 1:1, 4:3, 3:4. | +| `resolution` | `string` | `"1080P"` | Resolution One of: 480P, 720P, 1080P. | +| `duration` | `integer` | `5` | Duration Range: 2 – 30. | | `enable_thinking` | `boolean` | `false` | Enables thinking mode, which lets the model reason about the prompt before generating. Adds processing time. | | `seed` | `integer` | — | Random seed for reproducibility (0-2147483647). | | `watermark` | `boolean` | `false` | Adds an 'AI generated' watermark to the bottom-right corner. | diff --git a/inference-api/reference/models/xai-grok-imagine-image.mdx b/inference-api/reference/models/xai-grok-imagine-image.mdx index 770dc86..79d99f2 100644 --- a/inference-api/reference/models/xai-grok-imagine-image.mdx +++ b/inference-api/reference/models/xai-grok-imagine-image.mdx @@ -420,6 +420,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 20:9, 19.5:9, 9:19.5, 9:20, 1:2. | -| `resolution` | `string` | `"2k"` | Resolution of the generated image One of: 1k, 2k. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 2:1, 20:9, 19.5:9, 9:19.5, 9:20, 1:2. | +| `resolution` | `string` | `"2k"` | Resolution One of: 1k, 2k. | | `output_format` | `string` | `"webp"` | Format of the output images One of: webp, jpeg, png. | diff --git a/inference-api/reference/models/xai-grok-imagine-video-1-5-image-to-video.mdx b/inference-api/reference/models/xai-grok-imagine-video-1-5-image-to-video.mdx index 526e1ae..3130bc9 100644 --- a/inference-api/reference/models/xai-grok-imagine-video-1-5-image-to-video.mdx +++ b/inference-api/reference/models/xai-grok-imagine-video-1-5-image-to-video.mdx @@ -423,5 +423,5 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"720p"` | Resolution quality of the generated video One of: 480p, 720p. | -| `duration` | `integer` | — | Duration of the video in seconds Range: 1 – 15. | +| `resolution` | `string` | `"720p"` | Resolution One of: 480p, 720p. | +| `duration` | `integer` | — | Duration Range: 1 – 15. | diff --git a/inference-api/reference/models/xai-grok-imagine-video-edit-video.mdx b/inference-api/reference/models/xai-grok-imagine-video-edit-video.mdx index 5696505..538bf1a 100644 --- a/inference-api/reference/models/xai-grok-imagine-video-edit-video.mdx +++ b/inference-api/reference/models/xai-grok-imagine-video-edit-video.mdx @@ -51,8 +51,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' ``` @@ -68,8 +68,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty }, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) response.raise_for_status() @@ -89,8 +89,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }' ``` @@ -107,8 +107,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty }, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }, ) @@ -138,8 +138,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -171,8 +171,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty headers=HEADERS, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -207,8 +207,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }' | jq -r '.generations[0].generation_id') @@ -241,8 +241,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty headers=HEADERS, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }, ) @@ -286,8 +286,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -316,8 +316,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", - "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4" + "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "" }, ) enqueue.raise_for_status() @@ -353,8 +353,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty -H "Authorization: Bearer $OXEN_API_KEY" \ -d '{ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }' | jq -r '.generations[0].generation_id') @@ -384,8 +384,8 @@ It excels in prompt-driven video modifications like object swapping, scene resty headers={**AUTH, "Content-Type": "application/json"}, json={ "model": "xai-grok-imagine-video-edit-video", - "prompt": "", "input_video": "https://hub.oxen.ai/api/repos/ox/Oxen-AI-Assets/file/main/images/winter_summer_ox.mp4", + "prompt": "", "resolution": "auto" }, ) @@ -430,11 +430,11 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `prompt` | `string` | — | Text description of what you want to generate, or the instruction on how to edit the given video. | | `input_video` | `string` | — | Video to use as reference. Format: uri. | +| `prompt` | `string` | — | Text description of what you want to generate, or the instruction on how to edit the given video. | ### Optional parameters | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"auto"` | Resolution of the output video. One of: auto, 480p, 720p. | +| `resolution` | `string` | `"auto"` | Resolution One of: auto, 480p, 720p. | diff --git a/inference-api/reference/models/xai-grok-imagine-video-image-to-video.mdx b/inference-api/reference/models/xai-grok-imagine-video-image-to-video.mdx index a6cae91..580b7f7 100644 --- a/inference-api/reference/models/xai-grok-imagine-video-image-to-video.mdx +++ b/inference-api/reference/models/xai-grok-imagine-video-image-to-video.mdx @@ -77,9 +77,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }' ``` @@ -97,9 +97,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }, ) response.raise_for_status() @@ -199,9 +199,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }' | jq -r '.generations[0].generation_id') # Poll until the generation reaches a terminal status. @@ -235,9 +235,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }, ) enqueue.raise_for_status() @@ -349,9 +349,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }' | jq -r '.generations[0].generation_id') # Stream the SSE channel, grab the data line that follows a @@ -382,9 +382,9 @@ Generate videos from images with audio using xAI's Grok Imagine Video model. "model": "xai-grok-imagine-video-image-to-video", "prompt": "", "input_image": "https://hub.oxen.ai/api/repos/elau/assets/file/main/bloxy/bloxy_cropped_512x512.png", - "resolution": "480p", + "aspect_ratio": "16:9", "duration": 6, - "aspect_ratio": "16:9" + "resolution": "480p" }, ) enqueue.raise_for_status() @@ -435,6 +435,6 @@ curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/ | Field | Type | Default | Description | |-------|------|---------|-------------| -| `resolution` | `string` | `"480p"` | Resolution quality of the generated video One of: 720p, 480p. | -| `duration` | `integer` | `6` | Duration of the video in seconds One of: 3, 6, 8, 10, 15. | -| `aspect_ratio` | `string` | `"16:9"` | Aspect ratio for the generated image One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `aspect_ratio` | `string` | `"16:9"` | Aspect Ratio One of: auto, 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3. | +| `duration` | `integer` | `6` | Duration Range: 3 – 15. | +| `resolution` | `string` | `"480p"` | Resolution One of: 720p, 480p. | diff --git a/inference-api/reference/models/zai-org-glm-5-3.mdx b/inference-api/reference/models/zai-org-glm-5-3.mdx new file mode 100644 index 0000000..34bf775 --- /dev/null +++ b/inference-api/reference/models/zai-org-glm-5-3.mdx @@ -0,0 +1,199 @@ +--- +title: "GLM 5.3" +description: "Long-horizon coding agents, 1M context" +--- + + + + Run this model interactively, tune parameters, and compare outputs. + + + +**Model ID:** `zai-org-glm-5-3` + +GLM-5.3 is a large reasoning language model from Z AI built for complex software engineering and long-horizon agent tasks. It keeps the 1M-token context window of GLM-5.2 and improves on it in coding and in the balance between quality and token efficiency. + +The model supports function calling and sustained multi-step workflows, and suits agentic engineering, code assistance, and reasoning over very long contexts. Weights have not been published, so it is served through its API rather than self-hosted. + +| Metric | Value | +|--------------------|--------------------| +| Parameter Count | 753 billion | +| Mixture of Experts | Unknown | +| Context Length | 1,048,576 tokens | +| Multilingual | Yes | +| Quantized* | Unknown | + +*_Quantization is specific to the inference provider and the model may be offered with different quantization levels by other providers._ + +## Example request + + + Use the [Workbench](https://www.oxen.ai/ai/workbench?model=zai-org-glm-5-3) as a request builder: configure parameters for this model in the UI, then open the **API** tab to copy the exact cURL or Python call. + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ] + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/chat/completions", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ] + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ], + "temperature": 0.7, + "max_tokens": 1024, + "stream": false + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/chat/completions", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ], + "temperature": 0.7, + "max_tokens": 1024, + "stream": false + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + + + + ```bash cURL + curl -X POST https://hub.oxen.ai/api/ai/chat/completions \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer $OXEN_API_KEY" \ + -d '{ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ], + "temperature": 0.7, + "max_tokens": 1024, + "stream": false, + "top_p": 1.0 + }' + ``` + + ```python Python + import os + import requests + + response = requests.post( + "https://hub.oxen.ai/api/ai/chat/completions", + headers={ + "Content-Type": "application/json", + "Authorization": f"Bearer {os.environ['OXEN_API_KEY']}", + }, + json={ + "model": "zai-org-glm-5-3", + "messages": [ + { + "role": "user", + "content": "Hello, what can you do?" + } + ], + "temperature": 0.7, + "max_tokens": 1024, + "stream": false, + "top_p": 1.0 + }, + ) + response.raise_for_status() + print(response.json()) + ``` + + + + + + +## Fetch model details + +The [models endpoint](/inference-api/reference/models/overview) returns the full model object, including its `json_request_schema`. + +```bash +curl -H "Authorization: Bearer $OXEN_API_KEY" https://hub.oxen.ai/api/ai/models/zai-org-glm-5-3 +``` + +## Request parameters + +This model follows the standard OpenAI chat completions request body. See the [chat completions reference](../inference-api.mdx) for the full parameter list.