소개
Video Character Swap은 분석의 작업 ID, 그 미리보기 이미지에서 고른 위치, 위치별 참고 사진 1~3장을 받아 해당 인물이 교체된 클립을 돌려줍니다. 의상과 체형까지 포함한 인물 전체가 바뀌고, 세트와 카메라 워크, 동선, 원본 오디오 트랙은 촬영된 그대로 남습니다. 넣지 않은 인물에는 손이 가지 않습니다.
Video Character Swap은 두 번의 호출로 끝납니다. 첫 번째 호출은 530초 클립에서 인물을 모두 추적해 인물마다 미리보기 스틸을 정해진 순서로 돌려줍니다. 두 번째 호출에 고른 위치와 위치별 참고 사진 13장을 넘기면, 해당 인물만 교체되고 원본 오디오가 그대로 남은 클립을 받습니다.
핵심 기능 및 하이라이트
누구를 바꿀지는 사용자가 정합니다
이런 종류의 엔드포인트는 대개 어느 인물을 가리켰는지 추측할 수밖에 없습니다. 여기서는 첫 번째 호출이 찾아낸 인물을 번호와 함께 보여 주고, 두 번째 호출은 돌려받은 번호에만 손을 댑니다. 네 사람이 나오는 장면에서 한 명만 교체하고 나머지 셋은 촬영된 그대로 둘 수 있습니다.
목 아래 정보를 함께 넘깁니다
Video Character Swap은 하나가 아니라 두 개가 한 쌍인 엔드포인트입니다. 첫 번째 호출인 video-analyze는 530초 클립 안의 인물을 모두 추적해 인물마다 미리보기 스틸을 정해진 순서로 돌려주며, 클립 길이나 검출 수와 무관하게 요청당 정액으로 청구됩니다. 두 번째 호출인 video-edit에는 그 분석의 작업 ID, 고른 위치, 위치별 참고 사진 13장을 넘깁니다. 돌아오는 것은 원본 오디오 트랙이 살아 있는 클립 한 편이며, 480p 또는 720p 해상도에 따라 영상 초 단위로 청구됩니다. 머리만 바꾸는 head swap과 달리 이쪽은 의상과 체형까지 포함한 인물 전체를 교체하고, 세트와 카메라 워크, 동선은 촬영된 그대로 남깁니다. 추적 데이터 자체는 밖으로 나가지 않으며, 다루는 것은 본인의 작업 ID와 0부터 시작하는 위치 번호뿐입니다.
요청 파라미터
| 파라미터 | 필수 | 설명 |
|---|---|---|
analysis_task_id | 예 | 이 클립을 분석한 호출의 작업 ID입니다. 미리보기 이미지가 object_index와 같은 순서로 나열되며 24시간 동안 쓸 수 있습니다. 1자 이상 · 64자 이하 |
swap_targets | 예 | 교체할 인물마다 항목 하나씩입니다. 넣지 않은 인물에는 손이 가지 않습니다. 1개 이상 · 10개 이하 |
video_url | 아니요 | 생략할 수 있습니다. 생략하면 분석 쪽 영상이 쓰입니다. 1자 이상 |
resolution | 아니요 | 분석이 실행된 해상도와 일치해야 합니다. 요금 등급을 정하는 항목이기도 합니다. |
seed | 아니요 | 난수 시드이며 0을 넘기면 무작위가 됩니다. 다른 조건 하나만 바꿔 비교할 때 조건을 맞추기 위한 값이지, 프레임 단위로 동일한 결과를 약속하지는 않습니다. |
요금
원본 클립을 5초 단위로 올림하여 과금합니다. 6초 클립은 10초분입니다. 제출 전 견적은 업로드한 클립이면 실제 길이로, 동영상 URL이면 최대 30초로 계산하며, 차액이 있으면 정산 시 해제됩니다.
| 사양 | 요금 |
|---|---|
| $0.064 / 초 |
| $0.12 / 초 |
활용 사례
다시 찍지 않고 캐스팅을 바꾸기
세트도 카메라 워크도 동선도 이미 원하는 대로입니다. 샷 전체를 다시 만들어 룩 개발을 처음부터 하는 대신, 그것을 연기하는 인물만 교체합니다.
동의한 연기자라면 어떤 소재든
영상에 무엇이 담겼든 요청의 형태는 달라지지 않습니다. 동시에 아래 제한에 적힌 권한 요건도 달라지지 않습니다. 형식적인 문구가 아니라 반드시 충족해야 하는 조건입니다.
생성한 시리즈 전체에 같은 캐릭터
어떤 영상 모델로든 클립을 여러 편 생성한 뒤 각각을 분석하고, 같은 캐릭터를 전편에 통과시킵니다. 시리즈 전체가 한 명의 연기자로 읽히게 됩니다.
군중 속에서 한 사람만 교체
여러 사람이 나오는 장면을 분석하고 미리보기를 확인한 뒤 의도한 위치만 돌려보냅니다. 나머지 인물에게는 전혀 손이 가지 않습니다.
프롬프트 가이드 및 실전 팁
관련된 모든 인물에 대해 권리를 확인합니다
영상에도 참고 사진에도 사람이 등장합니다. 옮기는 초상과 옮겨 넣는 영상 양쪽 모두에 대한 권한이 필요합니다. 동의 기록은 작업 기록과 함께 보관하십시오.
먼저 분석하고 미리보기 순서를 읽습니다
분석은 미리보기 스틸을 정해진 순서로 돌려줍니다. 첫 장이 object_index 0, 두 번째가 1입니다. 필요한 단서는 이 위치 번호뿐이며, 그대로 swap_targets에 돌려보내면 됩니다.
목 아래 정보를 함께 넘깁니다
이 엔드포인트는 인물을 통째로 교체하므로 가슴 위 사진만으로는 체형과 의상이 모두 짐작에 맡겨집니다. 아주 선명한 접사 한 장보다 각도가 다른 전신 사진 두세 장이 훨씬 쓸모 있습니다.
API 빠른 시작
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "spicyapi/character-swap-v1/video-edit",
"input": {
"analysis_task_id": "example",
"resolution": "720p",
"swap_targets": [
{
"image_urls": [
"example"
],
"object_index": 0
}
]
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
인증, 전체 스키마, 폴링과 오류 처리는 API 레퍼런스에서 확인하세요.
