Claude Opus 5 is now live on CometAPI โ†’
V

Vidu Q3

์ดˆ๋‹น:$0.056
์ถœ์‹œ์ผ:May 31, 2026

Vidu Q3๋Š” ๋†’์€ ์‹œ๊ฐ์  ์‚ฌ์‹ค๊ฐ๊ณผ ํ”„๋กฌํ”„ํŠธ ์ค€์ˆ˜๋„๋ฅผ ๊ฐ–์ถ˜ ๊ณ ํ’ˆ์งˆ ์ฝ˜ํ…์ธ  ์ œ์ž‘์šฉ ๋น„๋””์˜ค ์ƒ์„ฑ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ฐฝ์˜์ ์ธ ๋น„๋””์˜ค ์ œ์ž‘๊ณผ ์Šคํ† ๋ฆฌํ…”๋ง ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ƒˆ๋กœ์šด
์ƒ์—…์  ์‚ฌ์šฉ

Vidu Q3์˜ ๊ธฐ์ˆ  ์‚ฌ์–‘

ํ•ญ๋ชฉVidu Q3 (viduq3-pro)
๋ชจ๋ธ IDviduq3-pro
์ œ๊ณต์‚ฌVidu
๋ชจ๋ธ ๊ณ„์—ดVidu Q3 Series
๋ชจ๋ธ ์œ ํ˜•AI ๋น„๋””์˜ค ์ƒ์„ฑ
์ž…๋ ฅ ์œ ํ˜•ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ์‹œ์ž‘ ์ด๋ฏธ์ง€ + ์ข…๋ฃŒ ์ด๋ฏธ์ง€
์ถœ๋ ฅ ์œ ํ˜•๋„ค์ดํ‹ฐ๋ธŒ ๋™๊ธฐํ™” ์˜ค๋””์˜ค๊ฐ€ ํฌํ•จ๋œ ๋น„๋””์˜ค
ํ•ด์ƒ๋„540p, 720p, 1080p
์žฌ์ƒ ์‹œ๊ฐ„1โ€“16์ดˆ
ํ”„๋ ˆ์ž„ ์†๋„24 FPS
์˜ค๋””์˜ค ์ƒ์„ฑ๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋””์˜ค-๋น„๋””์˜ค ์ƒ์„ฑ
ํ…์ŠคํŠธ-ํˆฌ-๋น„๋””์˜ค์ง€์›
์ด๋ฏธ์ง€-ํˆฌ-๋น„๋””์˜ค์ง€์›
์‹œ์ž‘-๋-ํˆฌ-๋น„๋””์˜ค์ง€์›
์ง€๋Šฅํ˜• ์ƒท ์ „ํ™˜์ง€์›
์ฃผ์š” ํฌ์ปค์Šค๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ์Šคํ† ๋ฆฌํ…”๋ง๊ณผ ์‹œ๋„ค๋งˆํ‹ฑ ๋น„๋””์˜ค ์ œ์ž‘

Vidu Q3๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”?

Vidu Q3๋Š” ์Šคํ† ๋ฆฌ ์ค‘์‹ฌ์˜ ๋น„๋””์˜ค ์ƒ์„ฑ์„ ์œ„ํ•ด ํŠน๋ณ„ํžˆ ๊ตฌ์ถ•๋œ Vidu์˜ 3์„ธ๋Œ€ ํ”Œ๋ž˜๊ทธ์‹ญ ๋น„๋””์˜ค ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ „ํ†ต์ ์ธ AI ๋น„๋””์˜ค ์‹œ์Šคํ…œ์ด ๋จผ์ € ์˜์ƒ์„ ์ƒ์„ฑํ•œ ๋’ค ์˜ค๋””์˜ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ, Vidu Q3๋Š” ๋Œ€์‚ฌ, ๋‚ด๋ ˆ์ด์…˜, ํšจ๊ณผ์Œ, ์Œ์•…, ์˜์ƒ์„ ๋™์‹œ์— ์ƒ์„ฑํ•˜์—ฌ ํ•˜๋‚˜์˜ ์ƒ์„ฑ ์›Œํฌํ”Œ๋กœ๋งŒ์œผ๋กœ ๋™๊ธฐํ™”๋œ ์Šคํ† ๋ฆฌํ…”๋ง์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์€ ์ˆ ๋“œ๋ผ๋งˆ, ์‹œ๋„ค๋งˆํ‹ฑ ์‹œํ€€์Šค, ๊ด‘๊ณ  ์ฝ˜ํ…์ธ , ์บ๋ฆญํ„ฐ ์ค‘์‹ฌ ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Vidu Q3์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • ๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋””์˜ค-๋น„๋””์˜ค ๋™๊ธฐํ™”: ๋น„๋””์˜ค์™€ ํ•จ๊ป˜ ๋Œ€์‚ฌ, ๋‚ด๋ ˆ์ด์…˜, ํšจ๊ณผ์Œ, ์Œ์•…์„ ์ง์ ‘ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • 16์ดˆ ์—ฐ์† ์ƒ์„ฑ: ๋‹จ์ผ ์ƒ์„ฑ ์‹คํ–‰์œผ๋กœ ์™„๊ฒฐ๋œ ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ํด๋ฆฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ํ”„๋ ˆ์ž„ ๋‹จ์œ„ ์นด๋ฉ”๋ผ ์ œ์–ด: ์นด๋ฉ”๋ผ ์›€์ง์ž„, ํ…œํฌ, ์žฅ๋ฉด ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ •๊ตํ•œ ์ œ์–ด๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹ค์ค‘ ํ™”์ž ๋Œ€ํ™” ์ง€์›: ๋Œ€ํ™”์™€ ์บ๋ฆญํ„ฐ ์ƒํ˜ธ์ž‘์šฉ์— ์ตœ์ ํ™”๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค๊ตญ์–ด ์ƒ์„ฑ: ์˜์–ด, ์ผ๋ณธ์–ด, ์ค‘๊ตญ์–ด ์ฝ˜ํ…์ธ  ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๋„ค๋งˆํ‹ฑ ์Šคํ† ๋ฆฌํ…”๋ง ์ตœ์ ํ™”: ๋“œ๋ผ๋งˆ, ์˜ํ™” ์Šคํƒ€์ผ ์ฝ˜ํ…์ธ , ์ฝ”๋ฏน์Šค, ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ๊ด‘๊ณ ์— ๋งž์ถฐ ํŠœ๋‹๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Vidu Q3์˜ ๋ฒค์น˜๋งˆํฌ ์„ฑ๋Šฅ

์–ธ์–ด ๋ชจ๋ธ๊ณผ ๋‹ฌ๋ฆฌ, Vidu Q3๋Š” MMLU๋‚˜ SWE-Bench์™€ ๊ฐ™์€ ํ‘œ์ค€ํ™”๋œ ๋ฒค์น˜๋งˆํฌ ์ ์ˆ˜๋ฅผ ๊ณต๊ฐœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณต๊ฐœ๋œ ์„ฑ๋Šฅ ์ง€ํ‘œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

์ง€ํ‘œ๊ณต๊ฐœ ์ •๋ณด
์ตœ๋Œ€ ๊ธธ์ด16์ดˆ
์ตœ๋Œ€ ํ•ด์ƒ๋„1080p
๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋””์˜ค ์ƒ์„ฑ์˜ˆ
๋‹ค์ค‘ ํ™”์ž ๋Œ€ํ™”์˜ˆ
๋‹ค๊ตญ์–ด ์ง€์›์˜์–ด, ์ผ๋ณธ์–ด, ์ค‘๊ตญ์–ด
ํ”„๋ ˆ์ž„ ๋ ˆ๋ฒจ ์นด๋ฉ”๋ผ ์ œ์–ด์˜ˆ

๋…๋ฆฝ ๋ฒค์น˜๋งˆํฌ ๊ฒ€์ฆ์€ ์ œํ•œ์ ์ด์ง€๋งŒ, Artificial Analysis ์ ์ˆ˜ 1241๋กœ ๊ธ€๋กœ๋ฒŒ ์„ ๋„ ๋น„๋””์˜ค ์ƒ์„ฑ ์‹œ์Šคํ…œ์— ์†ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ํ‰๊ฐ€๋ฉ๋‹ˆ๋‹ค.

Vidu Q3 vs Vidu Q3 Turbo vs Kling 2.1

๊ธฐ๋ŠฅVidu Q3Vidu Q3 TurboKling 2.1
ํฌ์ง€์…”๋‹ํ”„๋ฆฌ๋ฏธ์—„ ํ’ˆ์งˆ์†๋„ ์ตœ์ ํ™”์ผ๋ฐ˜ ๋น„๋””์˜ค ์ƒ์„ฑ
๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋””์˜ค์˜ˆ์˜ˆ์›Œํฌํ”Œ๋กœ์— ๋”ฐ๋ผ ๋‹ค๋ฆ„
์ตœ๋Œ€ ๊ธธ์ด16์ดˆ16์ดˆ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์ƒ์ด
ํ•ด์ƒ๋„์ตœ๋Œ€ 1080p์ตœ๋Œ€ 1080p์ตœ๋Œ€ 1080p
์นด๋ฉ”๋ผ ์ œ์–ด๊ณ ๊ธ‰๊ณ ๊ธ‰๊ฐ•๋ ฅ
๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ํฌ์ปค์Šค์ตœ๊ณ ๋ณดํ†ต๊ฐ•๋ ฅ
์ƒ์„ฑ ์†๋„ํ‘œ์ค€๋” ๋น ๋ฆ„๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š”

์•Œ๋ ค์ง„ ์ œํ•œ ์‚ฌํ•ญ

  • ๊ฐœ๋ณ„ ํด๋ฆฝ์€ 16์ดˆ๋กœ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • ์žฅํŽธ ์ œ์ž‘์—๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ์˜ ์ƒ์„ฑ์„ ๊ฒฐํ•ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์„ ๋„ LLM ์ œ๊ณต์—…์ฒด์™€ ๋น„๊ตํ•ด ๊ณต๊ฐœ ๋ฒค์น˜๋งˆํฌ์˜ ํˆฌ๋ช…์„ฑ์ด ์—ฌ์ „ํžˆ ์ œํ•œ์ ์ž…๋‹ˆ๋‹ค.
  • ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ํ’ˆ์งˆ์€ ํ”„๋กฌํ”„ํŠธ ์„ค๊ณ„์™€ ์”ฌ ๊ณ„ํš์— ํฌ๊ฒŒ ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์  ์‚ฌ์šฉ ์‚ฌ๋ก€

AI ๋‹จํŽธ ์˜ํ™”

๋™๊ธฐํ™”๋œ ์Œ์„ฑ, ํ™˜๊ฒฝ์Œ, ์Œ์•…๊ณผ ํ•จ๊ป˜ ์‹œ๋„ค๋งˆํ‹ฑํ•œ ์žฅ๋ฉด์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋‹จํŽธ ๋“œ๋ผ๋งˆ ์ œ์ž‘

๋ณ„๋„์˜ ์˜ค๋””์˜ค ์ œ์ž‘ ์›Œํฌํ”Œ๋กœ ์—†์ด ์—ฐ์žฌํ˜• ๋“œ๋ผ๋งˆ ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๊ด‘๊ณ  ๋ฐ ๋ธŒ๋žœ๋“œ ์Šคํ† ๋ฆฌํ…”๋ง

์Œ์„ฑ ๋‚ด๋ ˆ์ด์…˜๊ณผ ์‚ฌ์šด๋“œ ๋””์ž์ธ์ด ํ†ตํ•ฉ๋œ ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ๊ด‘๊ณ ๋ฅผ ์ œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์ฝ”๋ฏน ๋ฐ ๋งŒํ™” ๊ฐ์ƒ‰

์Šคํ† ๋ฆฌ๋ณด๋“œ์™€ ์ผ๋Ÿฌ์ŠคํŠธ๋ฅผ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ํด๋ฆฝ์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์†Œ์…œ ๋ฏธ๋””์–ด ์˜์ƒ ์ œ์ž‘

TikTok, Shorts, Reels์šฉ ์ฝ˜ํ…์ธ ๋ฅผ ๋™๊ธฐํ™” ์˜ค๋””์˜ค์™€ ํ•จ๊ป˜ ์ฆ‰์‹œ ๊ฒŒ์‹œ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋ธ ๋ฒ„์ „ ๋…ธํŠธ

Vidu Q3๋Š” Q3 ์ œํ’ˆ๊ตฐ์˜ ํ”„๋ฆฌ๋ฏธ์—„ ๋ฒ„์ „์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. Vidu Q3 Turbo์™€ ๋น„๊ตํ•˜๋ฉด, ํ‘œ์ค€ Q3 ๋ชจ๋ธ์€ ์ƒ์„ฑ ์†๋„๋ณด๋‹ค๋Š” ์ถœ๋ ฅ ํ’ˆ์งˆ, ๋‚ด๋Ÿฌํ‹ฐ๋ธŒ ์ผ๊ด€์„ฑ, ์‹œ๋„ค๋งˆํ‹ฑ ์Šคํ† ๋ฆฌํ…”๋ง์„ ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ชจ๋ธ ๋ชจ๋‘ ๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋””์˜ค-๋น„๋””์˜ค ์ถœ๋ ฅ๊ณผ ์ตœ๋Œ€ 16์ดˆ ๋น„๋””์˜ค ์ƒ์„ฑ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

CometAPI์—์„œ viduq3 API์— ์ ‘๊ทผํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•

1๋‹จ๊ณ„: CometAPI์— ๋“ฑ๋กํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์ธํ•˜๊ณ  viduq3 API ํ‚ค ๋ฐ›๊ธฐ

CometAPI ๊ณ„์ •์„ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ธฐ์กด ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์—ฌ, API๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง€๋ฉด ์ ‘๊ทผํ•˜์„ธ์š”. ์ถœ์‹œ ํ›„์—๋Š” ํ”Œ๋žซํผ์—์„œ HappyHorse-1.0 API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์•„ ํ…Œ์ŠคํŠธ ๋˜๋Š” ํ†ตํ•ฉ์„ ์ค€๋น„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2๋‹จ๊ณ„: Playground์—์„œ viduq3 API๋ฅผ ๋ฌด๋ฃŒ๋กœ ํ…Œ์ŠคํŠธ

๋ฐฐํฌ ์ „์— CometAPI Playground์—์„œ viduq3 API๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ถœ๋ ฅ ํ’ˆ์งˆ์„ ํ™•์ธํ•˜๊ณ , ํ”„๋กฌํ”„ํŠธ๋‚˜ ์ด๋ฏธ์ง€ ์ž…๋ ฅ์„ ํ…Œ์ŠคํŠธํ•˜๋ฉฐ, ์šด์˜์— ์‚ฌ์šฉํ•˜๊ธฐ ์ „ API ์„ฑ๋Šฅ์„ ๋” ๋ช…ํ™•ํžˆ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3๋‹จ๊ณ„: ์šด์˜ ํ™˜๊ฒฝ์— viduq3 API ๋ฐฐํฌ

ํ…Œ์ŠคํŠธ ํ›„์—๋Š” viduq3 API๋ฅผ ์ž์ฒด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜, ์ œํ’ˆ ๋˜๋Š” ๋‚ด๋ถ€ ํ™˜๊ฒฝ์— ๋ฐฐํฌํ•˜์„ธ์š”. ์ด๋ฅผ ํ†ตํ•ด ์•ˆ์ •์  ์ ‘๊ทผ๊ณผ ์‹ค์‚ฌ์šฉ ํ†ตํ•ฉ์ด ์ค‘์š”ํ•œ ์‹ค์ œ ๋น„๋””์˜ค ์ƒ์„ฑ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ viduq3 API๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž์ฃผ ๋ฌป๋Š” ์งˆ๋ฌธ

Vidu Q3 ๊ฐ€๊ฒฉ

[๋ชจ๋ธ๋ช…]์˜ ๊ฒฝ์Ÿ๋ ฅ ์žˆ๋Š” ๊ฐ€๊ฒฉ์„ ์‚ดํŽด๋ณด์„ธ์š”. ๋‹ค์–‘ํ•œ ์˜ˆ์‚ฐ๊ณผ ์‚ฌ์šฉ ์š”๊ตฌ์— ๋งž๊ฒŒ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์—ฐํ•œ ์š”๊ธˆ์ œ๋กœ ์‚ฌ์šฉํ•œ ๋งŒํผ๋งŒ ์ง€๋ถˆํ•˜๋ฏ€๋กœ ์š”๊ตฌ์‚ฌํ•ญ์ด ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. [๋ชจ๋ธ๋ช…]์ด ๋น„์šฉ์„ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์œผ๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์„ธ์š”.

Vidu Video Generation Pricing

Pricing (Per Second)

Model360p540p720p1080p
viduq3$0.056$0.056$0.1232$0.1232
viduq3-turbo$0.028$0.028$0.0616$0.0616

๐Ÿ’ก Billed per second. Total cost = price per second ร— video duration (seconds).

Vidu Q3์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ ๋ฐ API

[๋ชจ๋ธ ์ด๋ฆ„]์˜ ํฌ๊ด„์ ์ธ ์ƒ˜ํ”Œ ์ฝ”๋“œ์™€ API ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•˜์—ฌ ํ†ตํ•ฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ„์†Œํ™”ํ•˜์„ธ์š”. ์ž์„ธํ•œ ๋ฌธ์„œ๋Š” ๋‹จ๊ณ„๋ณ„ ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์—์„œ [๋ชจ๋ธ ์ด๋ฆ„]์˜ ๋ชจ๋“  ์ž ์žฌ๋ ฅ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•์Šต๋‹ˆ๋‹ค.

# Create a video with viduq3
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=viduq3" \
  -F "prompt=Ultra-realistic cinematic shot of an astronaut walking slowly through soft fog, volumetric light in light blue and pale amber tones, shallow depth of field, 35mm film texture, graceful camera movement." \
  -F "seconds=1" \
  -F "size=960x528")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '
' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")

  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')

  echo "Progress: $progress, Status: $status"

  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi

  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi

  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

cURL Code Example

# Create a video with viduq3
# Step 1: Submit the video generation request
echo "Submitting video generation request..."
response=$(curl -s https://api.cometapi.com/v1/videos \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -F "model=viduq3" \
  -F "prompt=Ultra-realistic cinematic shot of an astronaut walking slowly through soft fog, volumetric light in light blue and pale amber tones, shallow depth of field, 35mm film texture, graceful camera movement." \
  -F "seconds=1" \
  -F "size=960x528")

echo "Response: $response"

# Extract video_id from response (handle JSON with spaces like "id": "xxx")
video_id=$(echo "$response" | tr -d '\n' | sed 's/.*"id"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/')
echo "Video ID: $video_id"

# Step 2: Poll for progress until 100%
echo ""
echo "Checking video generation progress..."
while true; do
  status_response=$(curl -s "https://api.cometapi.com/v1/videos/$video_id" \
    -H "Authorization: Bearer $COMETAPI_KEY")
  
  progress=$(echo "$status_response" | grep -o '"progress"[[:space:]]*:[[:space:]]*"\?[^",}]*"\?' | head -1 | sed 's/.*:[[:space:]]*"\?//;s/"$//')
  status=$(echo "$status_response" | grep -o '"status"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"status"[[:space:]]*:[[:space:]]*"//;s/"$//')
  
  echo "Progress: $progress, Status: $status"
  
  if [ "$status" = "FAILURE" ] || [ "$status" = "failed" ] || [ "$status" = "error" ]; then
    echo "Video generation failed!"
    exit 1
  fi
  
  if [ "$progress" = "100%" ] || [ "$progress" = "100" ] || [ "$status" = "completed" ] || [ "$status" = "success" ]; then
    echo "Video generation completed!"
    break
  fi
  
  sleep 10
done

# Step 3: Download the video to output directory
echo ""
echo "Downloading video to ./output/$video_id.mp4..."
mkdir -p ./output
curl -s "https://api.cometapi.com/v1/videos/$video_id/content" \
  -H "Authorization: Bearer $COMETAPI_KEY" \
  -o "./output/$video_id.mp4"

if [ -f "./output/$video_id.mp4" ]; then
  echo "Video saved to ./output/$video_id.mp4"
  ls -la "./output/$video_id.mp4"
else
  echo "Failed to download video"
  exit 1
fi

Python Code Example

# Create a video with viduq3 using raw HTTP requests
import os
import time
import requests

api_key = os.environ.get("COMETAPI_KEY")
base_url = "https://api.cometapi.com/v1"
headers = {"Authorization": f"Bearer {api_key}"}

# Step 1: Submit the video generation request
print("Submitting video generation request...")
response = requests.post(
    f"{base_url}/videos",
    headers=headers,
    files={
        "model": (None, "viduq3"),
        "prompt": (None, "Ultra-realistic cinematic shot of an astronaut walking slowly through soft fog, volumetric light in light blue and pale amber tones, shallow depth of field, 35mm film texture, graceful camera movement."),
        "seconds": (None, "1"),
        "size": (None, "960x528"),
    },
)

result = response.json()
print(f"Response: {result}")

video_id = result.get("id") or result.get("task_id")
print(f"Video ID: {video_id}")

# Step 2: Poll for progress until 100%
print("\nChecking video generation progress...")
while True:
    try:
        status_response = requests.get(f"{base_url}/videos/{video_id}", headers=headers)
        status_result = status_response.json()

        data = status_result.get("data") or status_result
        progress = data.get("progress", "0%")
        status = data.get("status", "unknown")

        print(f"Progress: {progress}, Status: {status}")

        if status in ["FAILURE", "failed", "error"]:
            print("Video generation failed!")
            print(status_result)
            exit(1)

        if progress == "100%" or progress == 100 or status in ["completed", "success"]:
            print("Video generation completed!")
            break
    except Exception as e:
        print(f"Temporary error: {e}, retrying...")

    time.sleep(10)

# Step 3: Download the video to output directory
print(f"\nDownloading video to ./output/{video_id}.mp4...")
os.makedirs("./output", exist_ok=True)

video_response = requests.get(f"{base_url}/videos/{video_id}/content", headers=headers)

output_path = f"./output/{video_id}.mp4"
with open(output_path, "wb") as f:
    f.write(video_response.content)

if os.path.exists(output_path):
    file_size = os.path.getsize(output_path)
    print(f"Video saved to {output_path}")
    print(f"File size: {file_size} bytes")
else:
    print("Failed to download video")
    exit(1)

JavaScript Code Example

// Create a video with viduq3 using raw HTTP requests
import fs from "fs";
import path from "path";

const apiKey = process.env.COMETAPI_KEY;
const baseUrl = "https://api.cometapi.com/v1";
const headers = { Authorization: `Bearer ${apiKey}` };

function sleep(ms) {
  return new Promise((resolve) => setTimeout(resolve, ms));
}

// Step 1: Submit the video generation request
console.log("Submitting video generation request...");
const formData = new FormData();
formData.append("model", "viduq3");
formData.append("prompt", "Ultra-realistic cinematic shot of an astronaut walking slowly through soft fog, volumetric light in light blue and pale amber tones, shallow depth of field, 35mm film texture, graceful camera movement.");
formData.append("seconds", "1");
formData.append("size", "960x528");

const submitResponse = await fetch(`${baseUrl}/videos`, {
  method: "POST",
  headers,
  body: formData,
});

const result = await submitResponse.json();
console.log("Response:", JSON.stringify(result, null, 2));

const videoId = result.id || result.task_id;
console.log("Video ID:", videoId);

// Step 2: Poll for progress until 100%
console.log("\nChecking video generation progress...");
while (true) {
  try {
    const statusResponse = await fetch(`${baseUrl}/videos/${videoId}`, { headers });
    const statusResult = await statusResponse.json();
    const data = statusResult.data || statusResult;
    const progress = data.progress || "0%";
    const status = data.status || "unknown";

    console.log(`Progress: ${progress}, Status: ${status}`);

    if (status === "FAILURE" || status === "failed" || status === "error") {
      console.log("Video generation failed!");
      console.log(JSON.stringify(statusResult, null, 2));
      process.exit(1);
    }

    if (progress === "100%" || progress === 100 || status === "completed" || status === "success") {
      console.log("Video generation completed!");
      break;
    }
  } catch (e) {
    console.log(`Temporary error: ${e.message}, retrying...`);
  }

  await sleep(10000);
}

// Step 3: Download the video to output directory
console.log(`\nDownloading video to ./output/${videoId}.mp4...`);
fs.mkdirSync("./output", { recursive: true });

const videoResponse = await fetch(`${baseUrl}/videos/${videoId}/content`, { headers });
const outputPath = path.join("./output", `${videoId}.mp4`);
fs.writeFileSync(outputPath, Buffer.from(await videoResponse.arrayBuffer()));

if (fs.existsSync(outputPath)) {
  const stats = fs.statSync(outputPath);
  console.log(`Video saved to ${outputPath}`);
  console.log(`File size: ${stats.size} bytes`);
} else {
  console.log("Failed to download video");
  process.exit(1);
}

Vidu Q3์˜ ๋ฒ„์ „

Vidu Q3์— ์—ฌ๋Ÿฌ ์Šค๋ƒ…์ƒท์ด ์กด์žฌํ•˜๋Š” ์ด์œ ๋Š” ์—…๋ฐ์ดํŠธ ํ›„ ์ถœ๋ ฅ ๋ณ€๋™์œผ๋กœ ์ธํ•ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ด์ „ ์Šค๋ƒ…์ƒท์„ ๋ณด๊ด€ํ•˜๊ฑฐ๋‚˜, ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์ ์‘ ๋ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ์ „ํ™˜ ๊ธฐ๊ฐ„์„ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜, ๊ธ€๋กœ๋ฒŒ ๋˜๋Š” ์ง€์—ญ๋ณ„ ์—”๋“œํฌ์ธํŠธ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์Šค๋ƒ…์ƒท์„ ์ œ๊ณตํ•˜์—ฌ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ ๋“ฑ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ „ ๊ฐ„ ์ƒ์„ธํ•œ ์ฐจ์ด์ ์€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Version
viduq3
viduq3-turbo