Skip to main content
POST
https://app.hoox.video
/
api
/
public
/
v1
/
video
/
duplicate
curl -X POST "https://app.hoox.video/api/public/v1/video/duplicate" \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "video_id": "vid_abc123",
    "voice_id": "voice_en_us_female_1",
    "avatar_look_id": "avatar_business_woman_office_1"
  }'
{
  "video_id": "vid_dup_456",
  "status": "done",
  "message": "Video duplicated successfully. The video will need to be exported to generate the final output.",
  "changes_applied": {
    "voice_changed": true,
    "avatar_changed": true
  }
}

Overview

This endpoint duplicates an existing completed video inside the same space.
  • If no optional parameters are provided, it creates an exact copy of the video.
  • You can optionally apply a new voice and/or a new avatar look to the duplicated video while keeping the original script, structure, and media.
The original video must belong to your space and be in done status.

Authentication

This endpoint requires API key authentication. Include your API key in the Authorization header.

Request Body

video_id
string
required
Unique identifier of the original video to duplicate.
The video must belong to your space and be in done status (completed generation).
avatar_look_id
string
Optional ID of the avatar look to apply on the duplicated video.
Use an ID returned by the avatar resources endpoint or from your custom avatars.
When provided, the duplicated video will reference this new look, and avatar renders will be regenerated as needed.
voice_id
string
Optional ID of the voice to use for the duplicated video.
Use an ID returned by the voice resources endpoint or from your custom voices.
For non-Veo videos, the endpoint regenerates the audio and subtitles with the new voice.
For Veo 3 videos (generated with Veo 3), audio is generated later during export.

Response

video_id
string
Unique identifier of the newly duplicated video.
status
string
Current status of the duplicated video.
Typically done, meaning the video is ready to be exported.
message
string
Human-readable message describing the result of the duplication.
changes_applied
object
Details of which changes were applied to the duplicated video.

Example

curl -X POST "https://app.hoox.video/api/public/v1/video/duplicate" \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "video_id": "vid_abc123",
    "voice_id": "voice_en_us_female_1",
    "avatar_look_id": "avatar_business_woman_office_1"
  }'
{
  "video_id": "vid_dup_456",
  "status": "done",
  "message": "Video duplicated successfully. The video will need to be exported to generate the final output.",
  "changes_applied": {
    "voice_changed": true,
    "avatar_changed": true
  }
}

Prerequisites

Before duplicating a video:
  1. Completed video: The original video must be in done status.
  2. Video ownership: The video must belong to your space.
  3. Valid video_id: Provide the ID of an existing video in your space.

Error Codes

  • MISSING_VIDEO_ID: video_id parameter is required.
  • INVALID_TYPE: One of the parameters has an invalid type (must be strings).
  • INVALID_VOICE_ID: Provided voice_id does not match any available voice.
  • INVALID_AVATAR_ID: Provided avatar_look_id does not match any available avatar look.
  • VIDEO_NOT_FOUND: Video with specified ID does not exist.
  • UNAUTHORIZED_VIDEO: Video does not belong to your space.
  • VIDEO_NOT_READY: Video must be completed before duplication.
  • INTERNAL_ERROR: Unexpected internal server error.