사용 가이드
Veo 3.1 이미지→비디오: API로 정지 이미지 한 장을 짧은 영상 광고로 바꾸기
$0.03짜리 제품 정지 이미지 한 장에서 네이티브 오디오가 포함된 9:16 세로형 단편까지 단 115초——hiapi 작업 API에서 전체 veo-3.1/image-to-video 워크플로를 실행하며, 실제 출력과 패스트 티어 초안 루프, 배치 파이프라인을 포함합니다.
숏폼 영상에는 잔혹한 제작 산수가 하나 있습니다. TikTok과 Reels는 게시량으로 승부하지만, 정교한 제품 단편 하나만으로도 촬영, 편집, 사운드 디자인에 반나절이 날아갈 수 있습니다. Google의 Veo 3.1 이미지→비디오 모델(veo-3.1/image-to-video)은 이 파이프라인을 두 번의 API 호출——저렴한 정지 이미지 하나, 비디오 작업 하나——로 압축하고, 네이티브 오디오가 이미 믹싱된 세로형 단편을 돌려줍니다.
다음은 이 파이프라인이 이 글을 위해 생성한 전체 출력입니다. $0.03짜리 소스 이미지 한 장, API 호출 한 번, 115초 대기:
소리를 켜 보세요——착지하는 둔탁한 소리, 저음의 환경 펄스, 안개가 쉬익 하는 소리까지 모두 모델이 생성한 것입니다. 여기서 어떤 것도 수작업 편집, 색 보정, 사운드 디자인을 거치지 않았습니다. 이 가이드에서는 hiapi 작업 API를 통해 이 단편을 처음부터 끝까지 만들어 보고, 이어서 동일한 워크플로를 배치 파이프라인으로 확장해 숏폼 변형을 대량 생산합니다.
이미지→비디오가 숏폼에 맞는 도구인 이유
텍스트→비디오는 탐색에 아주 좋지만, 숏폼 상업 콘텐츠는 보통 이미 통제하고 있는 소재에서 시작합니다. 제품 사진, 패키지 이미지, 포스터 프레임 같은 것이죠. 이미지→비디오는 이런 시각적 정체성을 그대로 유지하면서 움직임을 더합니다. TikTok/Reels 포맷에서는 veo-3.1/image-to-video의 세 가지 특성이 특히 중요합니다:
- 출력이 입력한 화면비를 따릅니다.
aspect_ratio파라미터가 없습니다——모델이 제공한 이미지에서 구도를 물려받습니다. 9:16 세로형 정지 이미지를 주면 9:16 세로형 영상이 나옵니다. 이 글의 두 단편 모두 소스 정지 이미지가 9:16이기 때문에 정확히 1080×1920과 720×1280으로 출력되었습니다. 구도 결정은 이미지 단계에서 한 번만 하면 됩니다. - 네이티브 오디오. 모든 단편에는 프롬프트에 따라 생성된 48 kHz AAC 오디오 트랙——폴리, 환경음, 음악적 질감——이 함께 붙습니다. 숏폼에서는 음소거 자동 재생보다 소리가 있는 콘텐츠의 전환율이 더 높으므로, 편집 단계 하나가 통째로 사라집니다.
- 플랫폼에 맞는 해상도.
720p는 초안용,1080p는 피드 품질의 세로형,4k는 다른 게재 위치의 마스터 역할까지 겸하는 단편용입니다.
입력 파라미터 구조(실시간 API로 검증됨)
이 가이드를 쓰기 전에 실시간 엔드포인트를 탐색해 보았습니다. 파라미터 구조는 엄격합니다——알 수 없는 필드는 400으로 거부되므로 추측하지 마세요:
| 필드 | 필수 | 유형 | 값 |
|---|---|---|---|
prompt |
권장 | string | 움직임, 카메라, 오디오 지시 |
image_url |
예 | string | 공개적으로 접근 가능한 이미지 URL |
resolution |
예 | string | 720p, 1080p, 4k |
duration |
예 | integer | 4, 6 또는 8(초) |
미리 알아 두면 좋은 두 가지 문제가 있습니다. image_url은 단수입니다——이 모델은 단일 참조 모델이며 다중 이미지 믹서가 아닙니다——그리고 URL은 공개적으로 가져올 수 있어야 합니다(자체 CDN이나 오브젝트 스토리지에 호스팅하세요. 서명된 localhost 링크는 안 됩니다).
1단계——소스 정지 이미지 생성
어떤 9:16 이미지든 사용할 수 있습니다. 실제 제품 사진도 포함해서요. 우리는 gpt-image-2로 $0.03에 소스 이미지를 생성해 전체 파이프라인을 하나의 API 안에 유지했습니다:

curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2/text-to-image",
"input": {
"prompt": "Vertical product hero shot of a chunky retro basketball sneaker in wolf-gray suede with volt yellow laces, floating at a slight tilt above a wet concrete pedestal, dramatic teal-to-amber gradient backdrop, fine mist and dust particles suspended in hard rim light, ultra-sharp commercial product photography, no text, no logos",
"aspect_ratio": "9:16",
"resolution": "1K"
}
}'
좋은 i2v 소스 이미지의 구도 규칙은 정물 사진작가에게 주는 규칙과 같고, 하나가 더 붙습니다: 움직임의 여지를 남겨 두세요. 우리 스니커즈가 받침대 위에 떠 있는 이유는 비디오 모델이 할 수 있는 분명한 물리적 동작——신발이 돌 위로 떨어지는——을 주기 위해서입니다. 동작이 멈춰 있는 피사체는 Veo에게 완성할 이야기를 주지만, 정적으로 중앙에 놓인 패키지 이미지는 아무것도 주지 못하며, 드리프트 카메라로 채운 화면만 얻게 됩니다.
2단계——비디오 작업 제출
같은 /v1/tasks 엔드포인트, 다른 모델. 프롬프트는 피사체 움직임, 카메라, 오디오 세 채널을 모두 지시해야 합니다.
curl -X POST https://api.hiapi.ai/v1/tasks \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3.1/image-to-video",
"input": {
"prompt": "The sneaker slowly rotates about 90 degrees as the camera pushes in from a low angle. Dust particles drift through the rim light. The shoe settles onto the wet stone pedestal with a deep, satisfying thud, sending a soft ring of mist rolling off the edges. A warm light sweep travels across the suede texture. Subtle bass-heavy electronic pulse builds in the background with a low whoosh on the landing. Cinematic product commercial, smooth stabilized motion, no text overlays.",
"image_url": "https://your-cdn.example.com/stills/sneaker-916.jpg",
"resolution": "1080p",
"duration": 6
}
}'
응답은 즉시 작업 ID를 반환합니다:
{"code": 200, "data": {"taskId": "tk-hiapi-01KXCTHP6F6VXQ9XZCSCCEEEMM"}, "message": "success"}
프롬프트는 단편이 재생되는 순서대로 작성했습니다: 회전 → 푸시인 → 착지 → 빛 스윕, 오디오 힌트는 그것이 속한 순간에 붙입니다(착지 시의 "둔탁한 소리", 아래쪽의 펄스). Veo는 프롬프트의 사건 순서를 매우 문자 그대로 따릅니다——그래서 스크립트로 자동화할 수 있는 것입니다.
3단계——폴링 및 다운로드
비디오 작업은 비동기입니다. status가 success로 바뀔 때까지 작업을 폴링한 다음 출력을 즉시 다운로드하세요——해당 URL은 expireAt 타임스탬프가 붙은 임시 링크이며 영구 저장소가 아닙니다:
import os, time, requests
API = "https://api.hiapi.ai/v1/tasks"
HEADERS = {"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"}
def wait_and_download(task_id: str, out_path: str, timeout_s: int = 900):
deadline = time.time() + timeout_s
while time.time() < deadline:
task = requests.get(f"{API}/{task_id}", headers=HEADERS, timeout=30).json()["data"]
if task["status"] == "success":
url = task["output"][0]["url"] # temp link — expires!
clip = requests.get(url, timeout=120).content
with open(out_path, "wb") as f:
f.write(clip) # persist to your own storage now
return out_path
if task["status"] == "fail":
raise RuntimeError(task.get("error"))
time.sleep(10)
raise TimeoutError(task_id)
우리 실행에서 6초 1080p 단편은 제출부터 완료까지 115초가 걸렸습니다. 콘텐츠 파이프라인 앞에 큐를 붙일 필요 없이 넣을 수 있을 만큼 빠릅니다.
저렴한 초안, 정교한 최종본: 2단계 워크플로
Veo 3.1에는 패스트 티어——veo-3.1-fast/image-to-video——가 있으며 입력 구조가 완전히 같고 초당 가격이 절반도 안 됩니다. 이것이 사진에서 빌려온 워크플로를 가능하게 합니다: 필름을 쓸기 전에 폴라로이드로 먼저 찍는 것입니다. 패스트 티어에서 720p로 모션 프롬프트를 반복하고, 승리한 프롬프트만 스탠더드 티어에서 다시 렌더링하세요.
다음은 완전히 같은 프롬프트와 소스 정지 이미지의 패스트 티어 초안입니다(6초, 720p, $1.50, 58초에 완료):
초안은 같은 비트——회전, 착지, 안개——를 잡아냈지만 텍스처 디테일이 눈에 띄게 단순하고 오디오 믹스가 더 평평합니다. 프롬프트 반복에는 이것만으로 충분합니다: 확인하는 것은 구성이지 최종 연마가 아니니까요. 이 글의 두 단편 모두 첫 촬영이었습니다. 패스트 티어는 스탠더드 티어 촬영이 유일하게 비용을 지불하는 촬영이 되게 해 주는 방법입니다.
대량 생산으로 확장하기
숏폼 전략은 물량 게임입니다——제품마다 훅을 테스트할 5–10개의 변형이 필요합니다. 모든 것이 하나의 비동기 엔드포인트에 있으므로, 배치는 루프 하나에 불과합니다: 모든 작업을 먼저 제출한 다음 수집합니다.
STILLS = [
("sneaker-916.jpg", "rotates and lands on the pedestal with a deep thud..."),
("bottle-916.jpg", "condensation beads race down the glass as camera orbits..."),
("headphones-916.jpg","earcup unfolds in slow motion, soft click, synth swell..."),
]
task_ids = []
for still, motion in STILLS:
r = requests.post(API, headers=HEADERS, json={
"model": "veo-3.1-fast/image-to-video", # draft tier for the first sweep
"input": {
"prompt": motion,
"image_url": f"https://your-cdn.example.com/stills/{still}",
"resolution": "720p",
"duration": 6,
},
}, timeout=60).json()
task_ids.append(r["data"]["taskId"])
for i, tid in enumerate(task_ids):
wait_and_download(tid, f"draft-{i}.mp4")
먼저 제출하고 나중에 수집하는 것이 중요합니다: 단편은 플랫폼 측에서 동시에 생성되므로, 초안 열 개는 초안 하나 걸리는 시간 정도면 충분하고 열 배가 걸리지 않습니다.
비용은 얼마인가
hiapi 가격에 따르면 두 티어 모두 출력 비디오 초 단위로 과금됩니다:
| 모델 | 가격 | 4초 단편 | 6초 단편 | 8초 단편 |
|---|---|---|---|---|
veo-3.1/image-to-video |
$0.57/s | $2.28 | $3.42 | $4.56 |
veo-3.1-fast/image-to-video |
$0.25/s | $1.00 | $1.50 | $2.00 |
이 글에서 보여 준 모든 것——소스 정지 이미지 한 장, 표지 이미지 한 장, 패스트 초안 한 편, 1080p 최종본 한 편——의 API 비용은 $4.98입니다. 패스트 초안 세 편에 스탠더드 최종본 한 편을 더하는 워크플로는 완성된 세로형 한 편당 약 $8이 들어, 촬영일 하나와는 전혀 다른 차원의 비용입니다.
자주 묻는 질문
화면비는 어떻게 제어하나요? 할 수 없습니다——출력은 입력 이미지의 화면비를 물려받습니다. TikTok/Reels용이라면 제출 전에 소스 정지 이미지를 9:16으로 생성하거나 잘라 내세요. 우리의 9:16 정지 이미지는 정확히 1080×1920 출력을 생성했습니다.
오디오는 정말 생성되나요? 네. 위의 두 단편 모두 모델이 생성한 48 kHz AAC 오디오 트랙——폴리(착지 둔탁한 소리), 환경음, 음악적 질감——을 담고 있으며 모두 프롬프트로 이끌어낸 것입니다. 프롬프트에서 소리가 나야 하는 순간에 소리를 설명하세요.
생성에는 얼마나 걸리나요? 우리가 실측한 실행에서: 6초/720p 패스트 티어 단편은 58초, 6초/1080p 스탠더드 티어 단편은 115초였습니다. 단편마다 몇 분을 예산으로 잡고, 배치에는 전부 먼저 제출한 뒤 수집하는 패턴을 쓰세요.
생성된 정지 이미지 대신 실제 제품 사진을 써도 되나요? 물론입니다——이것이 주요 사용 사례입니다. 이미지는 URL로 공개적으로 가져올 수 있기만 하면 됩니다. 피사체를 선명하게 유지하고, 움직임의 여지를 남기고, 원하는 움직임을 프롬프트에 설명하세요.
4k에 언제 비용을 지불해야 하나요? 세로형이 동시에 마스터 에셋 역할을 할 때입니다——4k 소스를 잘라 피드 광고, 웹 히어로, 유료 소재에 쓰는 경우죠. 피드 전달만 한다면 1080p가 플랫폼이 최종 트랜스코딩하는 해상도입니다.
첫 단편을 게시하세요
전체 파이프라인은 POST 두 번에 폴링 한 번입니다: 정지 이미지가 들어가고, 소리가 있는 세로형 광고가 나오며, 약 2분이 걸립니다. API 키를 발급받고, 위 코드 조각을 가장 좋은 제품 사진에 연결하고, 720p 패스트 티어 초안을 한 번 실행해 보세요——6초에 $1.50, 맡길 수 있는 가장 저렴한 오디션입니다. 전체 파라미터와 실시간 예시는 veo-3.1/image-to-video 모델 페이지에 있으며, i2v 엔진을 비교 중이라면 Hailuo 2.3 이미지→비디오 프롬프트 레시피가 나란히 비교하기에 좋습니다.
관련 글
모든 아티클 보기 →-
사용 가이드
seedream-5.0-pro/image-to-image 시작 가이드: 기능, 가격 및 연동 핵심 포인트
ByteDance 이미지 편집 모델의 기능 경계, 과금 방식 및 엔지니어링 연동 실무
-
사용 가이드
seedream-5.0-pro 텍스트-이미지 생성 입문 가이드: 능력 경계, API 연동 및 비용 관리
개발자를 위한 실무 관점: 파라미터 핵심부터 장당 $0.05 비용 추정까지
-
사용 가이드
Hailuo 2.3 Fast 이미지-투-비디오 입문 가이드: 성능 범위, 가격 및 연동 실무
개발자를 위한 MiniMax 이미지-투-비디오 모델 선택과 연동 핵심 포인트