diff --git a/codegen/examples/brand-kit.yaml b/codegen/examples/brand-kit.yaml new file mode 100644 index 0000000..47c0e39 --- /dev/null +++ b/codegen/examples/brand-kit.yaml @@ -0,0 +1,3 @@ +"GET /v3/brand-kits": + - desc: "List brand kits" + cmd: "heygen brand-kit list" diff --git a/gen/avatar.go b/gen/avatar.go index 2bfced4..b46a8d5 100644 --- a/gen/avatar.go +++ b/gen/avatar.go @@ -10,7 +10,7 @@ var AvatarConsentCreate = &command.Spec{ Summary: "Create Avatar Consent", Description: "Initiates the consent flow for an avatar group and returns a URL for the user to complete approval in their browser. Required before a private avatar can be used for video generation.", RequestSchema: "{\n \"description\": \"Request body for POST /v3/avatars/{group_id}/consent.\",\n \"properties\": {\n \"reroute_url\": {\n \"description\": \"Callback URL where the user is redirected after completing consent. Defaults to HeyGen's consent completion page.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response body for POST /v3/avatars/{group_id}/consent.\",\n \"properties\": {\n \"avatar_group\": {\n \"description\": \"A single avatar group in the list response.\\n\\nGroups are containers for looks (outfits/styles). To determine avatar type\\nand engine compatibility, fetch the looks via GET /v3/avatars/looks.\",\n \"properties\": {\n \"consent_status\": {\n \"description\": \"The status of consent for the group. None means consent is not required.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp (seconds) when the avatar was created.\",\n \"type\": \"integer\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique avatar group identifier.\",\n \"type\": \"string\"\n },\n \"looks_count\": {\n \"description\": \"Number of looks (outfits/styles) available for this avatar.\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the avatar.\",\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the avatar preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the avatar preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar group. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"created_at\",\n \"looks_count\"\n ],\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL to the consent page.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"avatar_group\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response body for POST /v3/avatars/{group_id}/consent.\",\n \"properties\": {\n \"avatar_group\": {\n \"description\": \"The avatar group associated with this consent.\",\n \"properties\": {\n \"consent_status\": {\n \"description\": \"The status of consent for the group. None means consent is not required.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp (seconds) when the avatar was created.\",\n \"type\": \"integer\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique avatar group identifier.\",\n \"type\": \"string\"\n },\n \"looks_count\": {\n \"description\": \"Number of looks (outfits/styles) available for this avatar.\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the avatar.\",\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the avatar preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the avatar preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar group. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"created_at\",\n \"looks_count\"\n ],\n \"type\": \"object\"\n },\n \"url\": {\n \"description\": \"URL to the consent page.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"avatar_group\",\n \"url\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/avatars/{group_id}/consent", Method: "POST", BodyEncoding: "json", @@ -42,7 +42,7 @@ var AvatarCreate = &command.Spec{ Summary: "Create Avatar", Description: "Creates a new avatar from an image, video footage, or a text prompt. Supports photo, digital_twin, and prompt types. Avatar training is asynchronous.", RequestSchema: "{\n \"description\": \"Discriminated union for POST /v3/avatars request body.\",\n \"discriminator\": {\n \"mapping\": {\n \"digital_twin\": \"#/components/schemas/CreateDigitalTwinRequest\",\n \"photo\": \"#/components/schemas/CreatePhotoAvatarRequest\",\n \"prompt\": \"#/components/schemas/CreatePromptAvatarRequest\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"properties\": {\n \"avatar_group_id\": {\n \"description\": \"Optional identity you would like to attach the prompted avatar to. By default it will create a new identity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Name of the avatar.\",\n \"type\": \"string\"\n },\n \"prompt\": {\n \"description\": \"Prompt for avatar generation.\",\n \"type\": \"string\"\n },\n \"reference_images\": {\n \"description\": \"Reference images — each as {\\\"type\\\": \\\"url\\\", \\\"url\\\": \\\"https://...\\\"} or {\\\"type\\\": \\\"asset_id\\\", \\\"asset_id\\\": \\\"...\\\"}. Max 3. Will only work with an avatar_group_id.\",\n \"items\": {\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"type\": {\n \"description\": \"Must be 'prompt' for AI-generated avatars.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"name\",\n \"prompt\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"avatar_group_id\": {\n \"description\": \"Optional identity you would like to attach the digital twin to. By default it will create a new identity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"file\": {\n \"description\": \"Footage of the avatar — provide as {\\\"type\\\": \\\"url\\\", \\\"url\\\": \\\"https://...\\\"} or {\\\"type\\\": \\\"asset_id\\\", \\\"asset_id\\\": \\\"...\\\"}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"Name of the avatar.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'digital_twin' for digital twin avatars.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"name\",\n \"file\"\n ],\n \"type\": \"object\"\n },\n {\n \"properties\": {\n \"avatar_group_id\": {\n \"description\": \"Optional identity you would like to attach the photo avatar to. By default it will create a new identity.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"file\": {\n \"description\": \"Photo asset of the avatar — provide as {\\\"type\\\": \\\"url\\\", \\\"url\\\": \\\"https://...\\\"} or {\\\"type\\\": \\\"asset_id\\\", \\\"asset_id\\\": \\\"...\\\"}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"name\": {\n \"description\": \"Name of the avatar.\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'photo' for photo-based avatars.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"name\",\n \"file\"\n ],\n \"type\": \"object\"\n }\n ]\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"properties\": {\n \"avatar_group\": {\n \"description\": \"The avatar group.\",\n \"nullable\": true,\n \"properties\": {\n \"consent_status\": {\n \"description\": \"The status of consent for the group. None means consent is not required.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp (seconds) when the avatar was created.\",\n \"type\": \"integer\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique avatar group identifier.\",\n \"type\": \"string\"\n },\n \"looks_count\": {\n \"description\": \"Number of looks (outfits/styles) available for this avatar.\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the avatar.\",\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the avatar preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the avatar preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar group. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"created_at\",\n \"looks_count\"\n ],\n \"type\": \"object\"\n },\n \"avatar_item\": {\n \"description\": \"The avatar item.\",\n \"nullable\": true,\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar look type — determines engine compatibility with POST /v3/videos.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"properties\": {\n \"avatar_group\": {\n \"description\": \"The avatar group.\",\n \"nullable\": true,\n \"properties\": {\n \"consent_status\": {\n \"description\": \"The status of consent for the group. None means consent is not required.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp (seconds) when the avatar was created.\",\n \"type\": \"integer\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique avatar group identifier.\",\n \"type\": \"string\"\n },\n \"looks_count\": {\n \"description\": \"Number of looks (outfits/styles) available for this avatar.\",\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the avatar.\",\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the avatar preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the avatar preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar group. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"created_at\",\n \"looks_count\"\n ],\n \"type\": \"object\"\n },\n \"avatar_item\": {\n \"description\": \"The avatar item.\",\n \"nullable\": true,\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar type — determines engine and parameter compatibility.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/avatars", Method: "POST", BodyEncoding: "json", @@ -126,7 +126,7 @@ var AvatarLooksGet = &command.Spec{ Name: "looks get", Summary: "Get Avatar Look", Description: "Returns details for a specific avatar look including supported engines, preferred orientation, preview URLs, and training status.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar look type — determines engine compatibility with POST /v3/videos.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar type — determines engine and parameter compatibility.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/avatars/looks/{look_id}", Method: "GET", BodyEncoding: "", @@ -143,7 +143,7 @@ var AvatarLooksList = &command.Spec{ Name: "looks list", Summary: "List Avatar Looks", Description: "Returns a paginated list of avatar looks (outfits, poses, styles). Filterable by group_id, avatar_type, and ownership. The look id is the avatar_id to pass when creating a video.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar look type — determines engine compatibility with POST /v3/videos.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar type — determines engine and parameter compatibility.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/avatars/looks", Method: "GET", BodyEncoding: "", @@ -221,7 +221,7 @@ var AvatarLooksUpdate = &command.Spec{ Summary: "Update Avatar Look", Description: "Updates the display name of an avatar look. Only supported for photo avatar and digital twin look types.", RequestSchema: "{\n \"description\": \"Request body for PATCH /v3/avatars/looks/\\u003clook_id\\u003e.\",\n \"properties\": {\n \"name\": {\n \"description\": \"New display name for the look.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar look type — determines engine compatibility with POST /v3/videos.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"A single avatar look in the list response.\\n\\nThe ``id`` field is the look-level identifier to pass as ``avatar_id``\\nto POST /v3/videos.\",\n \"properties\": {\n \"avatar_type\": {\n \"description\": \"Avatar type — determines engine and parameter compatibility.\",\n \"enum\": [\n \"studio_avatar\",\n \"digital_twin\",\n \"photo_avatar\"\n ],\n \"type\": \"string\"\n },\n \"default_voice_id\": {\n \"description\": \"Default voice ID for this look.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"error\": {\n \"description\": \"Error details. Only present when status is 'failed'.\",\n \"nullable\": true,\n \"properties\": {\n \"code\": {\n \"description\": \"Machine-readable error code.\",\n \"type\": \"string\"\n },\n \"message\": {\n \"description\": \"Human-readable error description.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"code\",\n \"message\"\n ],\n \"type\": \"object\"\n },\n \"gender\": {\n \"description\": \"Gender of the avatar.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"group_id\": {\n \"description\": \"ID of the avatar group this look belongs to.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique look identifier. Pass this as avatar_id to POST /v3/videos.\",\n \"type\": \"string\"\n },\n \"image_height\": {\n \"description\": \"Native height of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"image_width\": {\n \"description\": \"Native width of the look in pixels.\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"name\": {\n \"description\": \"Display name of the look.\",\n \"type\": \"string\"\n },\n \"preferred_orientation\": {\n \"description\": \"Preferred orientation of the look: 'portrait', 'landscape', or 'square'.\",\n \"enum\": [\n \"portrait\",\n \"landscape\",\n \"square\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_image_url\": {\n \"description\": \"URL to the look preview image.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"preview_video_url\": {\n \"description\": \"URL to the look preview video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Training status of the avatar look: 'processing', 'completed', or 'failed'. Only present for private avatars.\",\n \"enum\": [\n \"processing\",\n \"pending_consent\",\n \"failed\",\n \"completed\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"supported_api_engines\": {\n \"description\": \"Engine values this look supports for POST /v3/videos.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"tags\": {\n \"description\": \"Tags associated with the look.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"id\",\n \"name\",\n \"avatar_type\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/avatars/looks/{look_id}", Method: "PATCH", BodyEncoding: "json", diff --git a/gen/brand-kit.go b/gen/brand-kit.go new file mode 100644 index 0000000..f575eef --- /dev/null +++ b/gen/brand-kit.go @@ -0,0 +1,46 @@ +// Code generated by heygen-cli/codegen. DO NOT EDIT. + +package gen + +import "github.com/heygen-com/heygen-cli/internal/command" + +var BrandKitList = &command.Spec{ + Group: "brand-kit", + Name: "list", + Summary: "List Brand Kits", + Description: "Returns brand kits available in the authenticated user's workspace. Each brand kit contains colors, fonts, and logos that can be applied to Video Agent sessions. Use the returned brand_kit_id with POST /v3/video-agents to generate on-brand videos.", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"A brand kit in the listing response.\",\n \"properties\": {\n \"brand_kit_id\": {\n \"description\": \"Unique brand kit identifier. Pass to POST /v3/video-agents as brand_kit_id.\",\n \"type\": \"string\"\n },\n \"colors\": {\n \"description\": \"Brand colors as hex values (e.g., '#FF5733').\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"logo_url\": {\n \"description\": \"Primary brand logo URL (public CDN).\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Display name of the brand kit.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"brand_kit_id\",\n \"name\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + Endpoint: "/v3/brand-kits", + Method: "GET", + BodyEncoding: "", + Paginated: true, + Examples: []string{ + "# List brand kits\n heygen brand-kit list", + }, + Flags: []command.FlagSpec{ + { + Name: "limit", + Type: "int", + Default: "20", + Help: "Results per page (1-100).", + Required: false, + Enum: nil, + Min: intPtr(1), + Max: intPtr(100), + Source: "query", + JSONName: "limit", + }, + { + Name: "token", + Type: "string", + Default: "", + Help: "Opaque cursor token for the next page. Obtained from next_token in a previous response.", + Required: false, + Enum: nil, + Min: nil, + Max: nil, + Source: "query", + JSONName: "token", + }, + }, +} diff --git a/gen/lipsync.go b/gen/lipsync.go index 2f821e1..38930e6 100644 --- a/gen/lipsync.go +++ b/gen/lipsync.go @@ -9,7 +9,7 @@ var LipsyncCreate = &command.Spec{ Name: "create", Summary: "Create Lipsync", Description: "Replaces the audio on an existing video and re-animates the speaker's lip movements to match the new audio. Use mode: 'speed' for fast output or 'precision' for high-quality lip-sync.", - RequestSchema: "{\n \"description\": \"Request body for POST /v3/lipsyncs.\",\n \"properties\": {\n \"audio\": {\n \"description\": \"Replacement audio — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"callback_id\": {\n \"description\": \"ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_caption\": {\n \"default\": false,\n \"description\": \"Generate captions for the output video\",\n \"type\": \"boolean\"\n },\n \"enable_dynamic_duration\": {\n \"default\": true,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_watermark\": {\n \"default\": false,\n \"description\": \"Add watermark to output\",\n \"type\": \"boolean\"\n },\n \"end_time\": {\n \"description\": \"End time in seconds for partial lipsync\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize lipsync into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fps_mode\": {\n \"description\": \"Frame rate mode: 'vfr', 'cfr', or 'passthrough'.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate).\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"start_time\": {\n \"description\": \"Start time in seconds for partial lipsync\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"title\": {\n \"description\": \"Title for the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"audio\"\n ],\n \"type\": \"object\"\n}", + RequestSchema: "{\n \"description\": \"Request body for POST /v3/lipsyncs.\",\n \"properties\": {\n \"audio\": {\n \"description\": \"Replacement audio — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"callback_id\": {\n \"description\": \"ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_caption\": {\n \"default\": false,\n \"description\": \"Generate captions for the output video\",\n \"type\": \"boolean\"\n },\n \"enable_dynamic_duration\": {\n \"default\": true,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_watermark\": {\n \"default\": false,\n \"description\": \"Add watermark to output\",\n \"type\": \"boolean\"\n },\n \"end_time\": {\n \"description\": \"End time in seconds for partial lipsync\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize lipsync into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fps_mode\": {\n \"description\": \"Frame rate mode: 'vfr', 'cfr', or 'passthrough'.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate).\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"default\": \"speed\",\n \"description\": \"Quality mode: 'speed' (faster) or 'precision' (higher quality, uses avatar inference)\",\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"start_time\": {\n \"description\": \"Start time in seconds for partial lipsync\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"title\": {\n \"description\": \"Title for the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"audio\"\n ],\n \"type\": \"object\"\n}", ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/lipsyncs.\",\n \"properties\": {\n \"lipsync_id\": {\n \"description\": \"Lipsync ID — use GET /v3/lipsyncs/{id} to poll status\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"lipsync_id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/lipsyncs", Method: "POST", @@ -153,8 +153,8 @@ var LipsyncCreate = &command.Spec{ { Name: "mode", Type: "string", - Default: "", - Help: "", + Default: "speed", + Help: "Quality mode: 'speed' (faster) or 'precision' (higher quality, uses avatar inference)", Required: false, Enum: []string{"speed", "precision"}, Min: nil, @@ -212,7 +212,7 @@ var LipsyncGet = &command.Spec{ Name: "get", Summary: "Get Lipsync", Description: "Returns details for a lipsync job including status, video_url, caption_url, and failure info if applicable.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/lipsyncs/{lipsync_id}", Method: "GET", BodyEncoding: "", @@ -229,7 +229,7 @@ var LipsyncList = &command.Spec{ Name: "list", Summary: "List Lipsyncs", Description: "Returns a paginated list of all lipsync jobs in the account.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/lipsyncs", Method: "GET", BodyEncoding: "", @@ -271,7 +271,7 @@ var LipsyncUpdate = &command.Spec{ Summary: "Update Lipsync", Description: "Updates the display title of a lipsync job.", RequestSchema: "{\n \"description\": \"Request body for PATCH /v3/lipsyncs/{id}.\",\n \"properties\": {\n \"title\": {\n \"description\": \"New title for the lipsync\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\"\n ],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed lipsync resource.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the lipsync was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique lipsync identifier\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the lipsync job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the output video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/lipsyncs/{lipsync_id}", Method: "PATCH", BodyEncoding: "json", diff --git a/gen/registry.go b/gen/registry.go index 3a7a0cb..df26235 100644 --- a/gen/registry.go +++ b/gen/registry.go @@ -21,6 +21,9 @@ var Groups = map[string][]*command.Spec{ AvatarLooksList, AvatarLooksUpdate, }, + "brand-kit": { + BrandKitList, + }, "lipsync": { LipsyncCreate, LipsyncDelete, @@ -82,6 +85,7 @@ var Groups = map[string][]*command.Spec{ var GroupDescriptions = map[string]string{ "asset": "Upload files for use in video creation", "avatar": "List and manage avatars and looks", + "brand-kit": "List brand kits for on-brand video generation", "lipsync": "Dub or replace audio on existing videos", "user": "Account information and billing", "video": "Create, list, retrieve, and delete videos", diff --git a/gen/video-agent.go b/gen/video-agent.go index 5da1951..1c47120 100644 --- a/gen/video-agent.go +++ b/gen/video-agent.go @@ -9,7 +9,7 @@ var VideoAgentCreate = &command.Spec{ Name: "create", Summary: "Create Video Agent Session", Description: "One-shot video generation from a prompt — agent handles scripting, avatar selection, scene composition, and rendering. Supports generate (fire-and-forget) and chat (multi-turn) modes.", - RequestSchema: "{\n \"description\": \"Request body for creating a video from a prompt using Video Agent v3.\\n\\nAll configuration is flat (no nested config object). Files use the\\ntype-discriminated AssetInput union for flexible asset inputs.\\n\\nSupports two modes:\\n- ``generate`` (default): one-shot — auto-proceeds through storyboard, produces one video.\\n- ``chat``: multi-turn — may pause for user input on real decisions (e.g. pick a voice),\\n auto-proceeds on confirmations. Allows revisions and follow-up videos.\",\n \"properties\": {\n \"avatar_id\": {\n \"description\": \"Specific avatar ID to use\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Optional callback ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion/failure notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"Optional file attachments (max 20 files)\",\n \"items\": {\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"incognito_mode\": {\n \"default\": false,\n \"description\": \"When enabled, disables memory injection and extraction for this session\",\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"default\": \"generate\",\n \"description\": \"Session mode. 'generate' produces one video (fire-and-forget). 'chat' enables multi-turn interaction — the agent may pause for decisions and allows revisions.\",\n \"enum\": [\n \"generate\",\n \"chat\"\n ],\n \"type\": \"string\"\n },\n \"orientation\": {\n \"description\": \"Video orientation. If not provided, auto-detected from content.\",\n \"enum\": [\n \"landscape\",\n \"portrait\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"prompt\": {\n \"description\": \"The message/prompt for video generation (1-10000 characters)\",\n \"type\": \"string\"\n },\n \"style_id\": {\n \"description\": \"Style ID from GET /v3/video-agents/styles. Applies a curated visual template to the generated video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Specific voice ID to use for narration\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"prompt\"\n ],\n \"type\": \"object\"\n}", + RequestSchema: "{\n \"description\": \"Request body for creating a video from a prompt using Video Agent v3.\\n\\nAll configuration is flat (no nested config object). Files use the\\ntype-discriminated AssetInput union for flexible asset inputs.\\n\\nSupports two modes:\\n- ``generate`` (default): one-shot — auto-proceeds through storyboard, produces one video.\\n- ``chat``: multi-turn — may pause for user input on real decisions (e.g. pick a voice),\\n auto-proceeds on confirmations. Allows revisions and follow-up videos.\",\n \"properties\": {\n \"avatar_id\": {\n \"description\": \"Specific avatar ID to use\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"brand_kit_id\": {\n \"description\": \"Brand kit ID to apply brand colors, fonts, and logos to the generated video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Optional callback ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion/failure notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"Optional file attachments (max 20 files)\",\n \"items\": {\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"incognito_mode\": {\n \"default\": false,\n \"description\": \"When enabled, disables memory injection and extraction for this session\",\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"default\": \"generate\",\n \"description\": \"Session mode. 'generate' produces one video (fire-and-forget). 'chat' enables multi-turn interaction — the agent may pause for decisions and allows revisions.\",\n \"enum\": [\n \"generate\",\n \"chat\"\n ],\n \"type\": \"string\"\n },\n \"orientation\": {\n \"description\": \"Video orientation. If not provided, auto-detected from content.\",\n \"enum\": [\n \"landscape\",\n \"portrait\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"prompt\": {\n \"description\": \"The message/prompt for video generation (1-10000 characters)\",\n \"type\": \"string\"\n },\n \"style_id\": {\n \"description\": \"Style ID from GET /v3/video-agents/styles. Applies a curated visual template to the generated video.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Specific voice ID to use for narration\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"prompt\"\n ],\n \"type\": \"object\"\n}", ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response from creating a video agent session.\\n\\nDesigned as a session resource for future extensibility — GET /v3/video-agents/{session_id}\\ncan return the same shape enriched with more fields (messages, video URL, etc.).\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp of session creation\",\n \"type\": \"integer\"\n },\n \"session_id\": {\n \"description\": \"Session ID — primary identifier for this video agent session\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Session status\",\n \"enum\": [\n \"generating\",\n \"thinking\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"video_id\": {\n \"description\": \"Video ID for polling via GET /v3/videos/{video_id}. Nullable in future multi-turn flows.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"session_id\",\n \"status\",\n \"created_at\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-agents", Method: "POST", @@ -32,6 +32,18 @@ var VideoAgentCreate = &command.Spec{ Source: "body", JSONName: "avatar_id", }, + { + Name: "brand-kit-id", + Type: "string", + Default: "", + Help: "Brand kit ID to apply brand colors, fonts, and logos to the generated video.", + Required: false, + Enum: nil, + Min: nil, + Max: nil, + Source: "body", + JSONName: "brand_kit_id", + }, { Name: "callback-id", Type: "string", @@ -136,7 +148,7 @@ var VideoAgentGet = &command.Spec{ Name: "get", Summary: "Get Video Agent Session", Description: "Returns the current status, progress, video_id, and recent chat messages for a session.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response from getting a video agent session.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp of session creation\",\n \"type\": \"integer\"\n },\n \"messages\": {\n \"description\": \"Most recent visible messages (max 40, newest-first)\",\n \"items\": {\n \"description\": \"Simplified chat message for external consumers.\",\n \"properties\": {\n \"content\": {\n \"description\": \"Message text content\",\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of message creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"resource_ids\": {\n \"description\": \"Resource IDs referenced in this message\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"role\": {\n \"description\": \"Message author: 'user' or 'model'\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Public message types exposed to external consumers.\",\n \"enum\": [\n \"text\",\n \"resource\",\n \"error\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role\",\n \"content\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"progress\": {\n \"default\": 0,\n \"description\": \"Progress 0-100\",\n \"type\": \"integer\"\n },\n \"session_id\": {\n \"description\": \"Session ID\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Session status\",\n \"enum\": [\n \"thinking\",\n \"waiting_for_input\",\n \"reviewing\",\n \"generating\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"LLM-generated session title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_id\": {\n \"description\": \"Video ID once generation starts\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"session_id\",\n \"status\",\n \"created_at\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response from getting a video agent session.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp of session creation\",\n \"type\": \"integer\"\n },\n \"messages\": {\n \"description\": \"Most recent visible messages (max 40, newest-first)\",\n \"items\": {\n \"description\": \"Simplified chat message for external consumers.\",\n \"properties\": {\n \"content\": {\n \"description\": \"Message text content\",\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of message creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"resource_ids\": {\n \"description\": \"Resource IDs referenced in this message\",\n \"items\": {\n \"type\": \"string\"\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"role\": {\n \"description\": \"Message author: 'user' or 'model'\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Message type: text, resource, or error\",\n \"enum\": [\n \"text\",\n \"resource\",\n \"error\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"role\",\n \"content\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"progress\": {\n \"default\": 0,\n \"description\": \"Progress 0-100\",\n \"type\": \"integer\"\n },\n \"session_id\": {\n \"description\": \"Session ID\",\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Session status\",\n \"enum\": [\n \"thinking\",\n \"waiting_for_input\",\n \"reviewing\",\n \"generating\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"LLM-generated session title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_id\": {\n \"description\": \"Video ID once generation starts\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"session_id\",\n \"status\",\n \"created_at\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-agents/{session_id}", Method: "GET", BodyEncoding: "", @@ -212,7 +224,7 @@ var VideoAgentSend = &command.Spec{ Name: "send", Summary: "Send Message or Request Revision", Description: "Sends a follow-up message to an existing session. Use to answer agent questions, add context, or request edits to a generated video. Only valid for sessions created in chat mode.", - RequestSchema: "{\n \"description\": \"Request body for sending a follow-up message, answering the agent's question,\\nor requesting edits and revisions to a previously generated video.\",\n \"properties\": {\n \"avatar_id\": {\n \"description\": \"Override avatar for this message\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"Optional file attachments (max 20 files)\",\n \"items\": {\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"message\": {\n \"description\": \"Text message to the agent\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Override voice for this message\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"message\"\n ],\n \"type\": \"object\"\n}", + RequestSchema: "{\n \"description\": \"Request body for sending a follow-up message, answering the agent's question,\\nor requesting edits and revisions to a previously generated video.\",\n \"properties\": {\n \"avatar_id\": {\n \"description\": \"Override avatar for this message\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"brand_kit_id\": {\n \"description\": \"Brand kit ID to apply for this message\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"files\": {\n \"description\": \"Optional file attachments (max 20 files)\",\n \"items\": {\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"nullable\": true,\n \"type\": \"array\"\n },\n \"message\": {\n \"description\": \"Text message to the agent\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Override voice for this message\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"message\"\n ],\n \"type\": \"object\"\n}", ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response from sending a message to a session.\",\n \"properties\": {\n \"run_id\": {\n \"description\": \"Run ID for this message processing\",\n \"type\": \"string\"\n },\n \"session_id\": {\n \"description\": \"Session ID\",\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"LLM-generated session title\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"session_id\",\n \"run_id\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-agents/{session_id}", Method: "POST", @@ -236,6 +248,18 @@ var VideoAgentSend = &command.Spec{ Source: "body", JSONName: "avatar_id", }, + { + Name: "brand-kit-id", + Type: "string", + Default: "", + Help: "Brand kit ID to apply for this message", + Required: false, + Enum: nil, + Min: nil, + Max: nil, + Source: "body", + JSONName: "brand_kit_id", + }, { Name: "message", Type: "string", @@ -339,7 +363,7 @@ var VideoAgentVideosList = &command.Spec{ Name: "videos list", Summary: "List Session Videos", Description: "Returns all videos produced within a Video Agent session, sorted newest-first.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current video status\",\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-agents/{session_id}/videos", Method: "GET", BodyEncoding: "", diff --git a/gen/video-translate.go b/gen/video-translate.go index 91c4793..c4f6cbc 100644 --- a/gen/video-translate.go +++ b/gen/video-translate.go @@ -9,7 +9,7 @@ var VideoTranslateCreate = &command.Spec{ Name: "create", Summary: "Create Video Translation", Description: "Translates a video into one or more target languages with voice cloning and lip-sync. Returns one video_translation_id per language. Use mode: 'speed' (default) for fast turnaround or 'precision' for higher lip-sync quality.", - RequestSchema: "{\n \"description\": \"Request body for POST /v3/video-translations.\",\n \"properties\": {\n \"audio\": {\n \"description\": \"Custom audio for dubbing — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"brand_voice_id\": {\n \"description\": \"Custom brand voice ID. Requires brand voice setup.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_caption\": {\n \"default\": false,\n \"description\": \"Generate captions for translated video\",\n \"type\": \"boolean\"\n },\n \"enable_dynamic_duration\": {\n \"default\": true,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_watermark\": {\n \"default\": false,\n \"description\": \"Add watermark to output\",\n \"type\": \"boolean\"\n },\n \"end_time\": {\n \"description\": \"End time in seconds for partial translation\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize translation into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fps_mode\": {\n \"description\": \"Frame rate mode: 'vfr', 'cfr', or 'passthrough'. Only valid with audio.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Source language code (auto-detected if omitted)\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate).\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"output_languages\": {\n \"description\": \"Target language names (e.g. 'Chinese (Cantonese, Traditional)', 'Spanish (Spain)', 'English'). Use GET /v3/video-translations/languages for valid values. Use one for single translation, multiple for batch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"speaker_num\": {\n \"description\": \"Number of speakers (improves speaker separation)\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"srt\": {\n \"description\": \"Custom subtitle file — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}. Enterprise plan only.\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"srt_role\": {\n \"description\": \"Which video the subtitle applies to: 'input' (source) or 'output' (translated). Enterprise plan only.\",\n \"enum\": [\n \"input\",\n \"output\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"start_time\": {\n \"description\": \"Start time in seconds for partial translation\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"title\": {\n \"description\": \"Title for the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"default\": false,\n \"description\": \"Only translate audio, keep original video\",\n \"type\": \"boolean\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"output_languages\"\n ],\n \"type\": \"object\"\n}", + RequestSchema: "{\n \"description\": \"Request body for POST /v3/video-translations.\",\n \"properties\": {\n \"audio\": {\n \"description\": \"Custom audio for dubbing — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"brand_voice_id\": {\n \"description\": \"Custom brand voice ID. Requires brand voice setup.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_caption\": {\n \"default\": false,\n \"description\": \"Generate captions for translated video\",\n \"type\": \"boolean\"\n },\n \"enable_dynamic_duration\": {\n \"default\": true,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_watermark\": {\n \"default\": false,\n \"description\": \"Add watermark to output\",\n \"type\": \"boolean\"\n },\n \"end_time\": {\n \"description\": \"End time in seconds for partial translation\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize translation into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fps_mode\": {\n \"description\": \"Frame rate mode: 'vfr', 'cfr', or 'passthrough'. Only valid with audio.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Source language code (auto-detected if omitted)\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate).\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"default\": \"speed\",\n \"description\": \"Translation quality mode: 'speed' (faster) or 'precision' (higher quality, uses avatar inference)\",\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"output_languages\": {\n \"description\": \"Target language names (e.g. 'Chinese (Cantonese, Traditional)', 'Spanish (Spain)', 'English'). Use GET /v3/video-translations/languages for valid values. Use one for single translation, multiple for batch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"speaker_num\": {\n \"description\": \"Number of speakers (improves speaker separation)\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"srt\": {\n \"description\": \"Custom subtitle file — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}. Enterprise plan only.\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"srt_role\": {\n \"description\": \"Which video the subtitle applies to: 'input' (source) or 'output' (translated). Enterprise plan only.\",\n \"enum\": [\n \"input\",\n \"output\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"start_time\": {\n \"description\": \"Start time in seconds for partial translation\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stock_voice_config\": {\n \"description\": \"Opt into Stock TTS instead of Voice Clone. Set use_stock_voice=true to route the request to a stock voice; optionally pin specific voices via preferred_stock_voice_ids. Gated by per-space and per-locale Nacos allowlists.\",\n \"nullable\": true,\n \"properties\": {\n \"preferred_stock_voice_ids\": {\n \"description\": \"Optional allow-list of stock voice IDs to draw from. If empty, the locale's default stock-voice pool is used. Each ID must be a known stock voice.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"use_stock_voice\": {\n \"default\": false,\n \"description\": \"Set to true to opt into Stock TTS instead of Voice Clone.\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"title\": {\n \"description\": \"Title for the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"default\": false,\n \"description\": \"Only translate audio, keep original video\",\n \"type\": \"boolean\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"output_languages\"\n ],\n \"type\": \"object\"\n}", ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/video-translations.\",\n \"properties\": {\n \"video_translation_ids\": {\n \"description\": \"Video translation IDs, one per target language\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"video_translation_ids\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations", Method: "POST", @@ -178,8 +178,8 @@ var VideoTranslateCreate = &command.Spec{ { Name: "mode", Type: "string", - Default: "", - Help: "", + Default: "speed", + Help: "Translation quality mode: 'speed' (faster) or 'precision' (higher quality, uses avatar inference)", Required: false, Enum: []string{"speed", "precision"}, Min: nil, @@ -285,7 +285,7 @@ var VideoTranslateGet = &command.Spec{ Name: "get", Summary: "Get Video Translation", Description: "Returns details for a translation job including status, output language, video_url, and failure info if applicable.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status of the translation\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/{video_translation_id}", Method: "GET", BodyEncoding: "", @@ -316,7 +316,7 @@ var VideoTranslateList = &command.Spec{ Name: "list", Summary: "List Video Translations", Description: "Returns a paginated list of all video translation jobs in the account.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status of the translation\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations", Method: "GET", BodyEncoding: "", @@ -357,8 +357,8 @@ var VideoTranslateProofreadsCreate = &command.Spec{ Name: "proofreads create", Summary: "Create Proofread Session", Description: "Creates a proofread session that extracts editable subtitles from a video before final rendering.", - RequestSchema: "{\n \"description\": \"Request body for POST /v3/video-translations/proofreads.\",\n \"properties\": {\n \"brand_voice_id\": {\n \"description\": \"Custom brand voice ID. Requires brand voice setup.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_video_stretching\": {\n \"default\": false,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize proofread into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"default\": false,\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate)\",\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"output_languages\": {\n \"description\": \"Target language codes. Use one for single proofread, multiple for batch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"speaker_num\": {\n \"description\": \"Number of speakers (improves speaker separation)\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"srt\": {\n \"description\": \"Initial SRT file — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"title\": {\n \"description\": \"Title for the proofread job\",\n \"type\": \"string\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"output_languages\",\n \"title\"\n ],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/video-translations/proofreads.\",\n \"properties\": {\n \"proofread_ids\": {\n \"description\": \"Proofread IDs, one per target language\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"proofread_ids\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + RequestSchema: "{\n \"description\": \"Request body for POST /v3/video-translations/proofreads.\",\n \"properties\": {\n \"brand_voice_id\": {\n \"description\": \"Custom brand voice ID. Requires brand voice setup.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"disable_music_track\": {\n \"default\": false,\n \"description\": \"Remove background music\",\n \"type\": \"boolean\"\n },\n \"enable_speech_enhancement\": {\n \"default\": false,\n \"description\": \"Enhance speech quality\",\n \"type\": \"boolean\"\n },\n \"enable_video_stretching\": {\n \"default\": false,\n \"description\": \"Allow dynamic duration adjustment\",\n \"type\": \"boolean\"\n },\n \"folder_id\": {\n \"description\": \"Project/folder ID to organize proofread into\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"keep_the_same_format\": {\n \"default\": false,\n \"description\": \"Preserve the source video's encoding specs (resolution, bitrate)\",\n \"type\": \"boolean\"\n },\n \"mode\": {\n \"default\": \"speed\",\n \"description\": \"Translation quality mode: 'speed' (faster) or 'precision' (higher quality)\",\n \"enum\": [\n \"speed\",\n \"precision\"\n ],\n \"type\": \"string\"\n },\n \"output_languages\": {\n \"description\": \"Target language codes. Use one for single proofread, multiple for batch.\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"speaker_num\": {\n \"description\": \"Number of speakers (improves speaker separation)\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"srt\": {\n \"description\": \"Initial SRT file — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"title\": {\n \"description\": \"Title for the proofread job\",\n \"type\": \"string\"\n },\n \"video\": {\n \"description\": \"Source video — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"video\",\n \"output_languages\",\n \"title\"\n ],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/video-translations/proofreads.\",\n \"properties\": {\n \"proofread_ids\": {\n \"description\": \"Proofread IDs, one per target language\",\n \"items\": {\n \"type\": \"string\"\n },\n \"type\": \"array\"\n },\n \"status\": {\n \"description\": \"Initial status (always processing)\",\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"proofread_ids\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/proofreads", Method: "POST", BodyEncoding: "json", @@ -441,8 +441,8 @@ var VideoTranslateProofreadsCreate = &command.Spec{ { Name: "mode", Type: "string", - Default: "", - Help: "", + Default: "speed", + Help: "Translation quality mode: 'speed' (faster) or 'precision' (higher quality)", Required: false, Enum: []string{"speed", "precision"}, Min: nil, @@ -495,7 +495,7 @@ var VideoTranslateProofreadsGenerate = &command.Spec{ Summary: "Generate Video from Proofread", Description: "Starts final video generation using the approved subtitles from a proofread session.", RequestSchema: "{\n \"description\": \"Request body for POST /v3/video-translations/proofreads/{id}/generate.\",\n \"properties\": {\n \"callback_id\": {\n \"description\": \"ID included in webhook payload\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL for completion notifications\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"captions\": {\n \"default\": false,\n \"description\": \"Generate captions for the translated video\",\n \"type\": \"boolean\"\n },\n \"translate_audio_only\": {\n \"default\": false,\n \"description\": \"Only translate audio, keep original video\",\n \"type\": \"boolean\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/video-translations/proofreads/{id}/generate.\",\n \"properties\": {\n \"status\": {\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"video_translation_id\": {\n \"description\": \"Video translation ID — use GET /v3/video-translations/{id} to poll status\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"video_translation_id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response for POST /v3/video-translations/proofreads/{id}/generate.\",\n \"properties\": {\n \"status\": {\n \"description\": \"Initial status (always processing)\",\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"video_translation_id\": {\n \"description\": \"Video translation ID — use GET /v3/video-translations/{id} to poll status\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"video_translation_id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/proofreads/{proofread_id}/generate", Method: "POST", BodyEncoding: "json", @@ -562,7 +562,7 @@ var VideoTranslateProofreadsGet = &command.Spec{ Name: "proofreads get", Summary: "Get Proofread Session", Description: "Returns the status and details of a proofread session.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed proofread resource.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp when the proofread was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique proofread identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"submitted_for_review\": {\n \"description\": \"Whether the proofread has been submitted for review\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Title of the proofread job\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed proofread resource.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp when the proofread was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique proofread identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status\",\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"submitted_for_review\": {\n \"description\": \"Whether the proofread has been submitted for review\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Title of the proofread job\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/proofreads/{proofread_id}", Method: "GET", BodyEncoding: "", @@ -597,7 +597,7 @@ var VideoTranslateProofreadsSrtUpdate = &command.Spec{ Summary: "Upload Proofread SRT", Description: "Replaces the proofread subtitles with an edited SRT file.", RequestSchema: "{\n \"description\": \"Request body for PUT /v3/video-translations/proofreads/{id}/srt.\",\n \"properties\": {\n \"srt\": {\n \"description\": \"SRT file — provide as {type: 'url', url: '...'} or {type: 'asset_id', asset_id: '...'}\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"srt\"\n ],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed proofread resource.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp when the proofread was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique proofread identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"submitted_for_review\": {\n \"description\": \"Whether the proofread has been submitted for review\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Title of the proofread job\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed proofread resource.\",\n \"properties\": {\n \"created_at\": {\n \"description\": \"Unix timestamp when the proofread was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique proofread identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status\",\n \"enum\": [\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"submitted_for_review\": {\n \"description\": \"Whether the proofread has been submitted for review\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"title\": {\n \"description\": \"Title of the proofread job\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/proofreads/{proofread_id}/srt", Method: "PUT", BodyEncoding: "json", @@ -615,7 +615,7 @@ var VideoTranslateUpdate = &command.Spec{ Summary: "Update Video Translation", Description: "Updates the display title of a video translation job.", RequestSchema: "{\n \"description\": \"Request body for PATCH /v3/video-translations/{id}.\",\n \"properties\": {\n \"title\": {\n \"description\": \"New title for the video translation\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"title\"\n ],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Detailed video translation resource.\",\n \"properties\": {\n \"audio_url\": {\n \"description\": \"Presigned download URL for the translated audio. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_id\": {\n \"description\": \"Client-provided callback ID\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp when the translation was created\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_message\": {\n \"description\": \"Error description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video translation identifier\",\n \"type\": \"string\"\n },\n \"input_language\": {\n \"description\": \"Detected or specified source language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"Target language code\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"srt_caption_url\": {\n \"description\": \"Presigned download URL for the SRT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current status of the translation\",\n \"enum\": [\n \"pending\",\n \"running\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Title of the translation job\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"translate_audio_only\": {\n \"description\": \"Whether only the audio was translated, keeping the original video\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"video_url\": {\n \"description\": \"Presigned download URL for the translated video. Only present when status is completed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"vtt_caption_url\": {\n \"description\": \"Presigned download URL for the VTT caption file. Only present when completed and enable_caption=true.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/video-translations/{video_translation_id}", Method: "PATCH", BodyEncoding: "json", diff --git a/gen/video.go b/gen/video.go index f8fd869..448b85e 100644 --- a/gen/video.go +++ b/gen/video.go @@ -8,9 +8,9 @@ var VideoCreate = &command.Spec{ Group: "video", Name: "create", Summary: "Create Video", - Description: "Creates a video from a HeyGen avatar or an arbitrary image. Supports scripts or pre-recorded audio for lip-sync. Supports the Avatar IV engine and the upcoming Avatar V, while Avatar III video generation requires the legacy API (v1 or v2).", - RequestSchema: "{\n \"description\": \"Discriminated union for POST /v3/videos request body.\",\n \"discriminator\": {\n \"mapping\": {\n \"avatar\": \"#/components/schemas/CreateVideoFromAvatar\",\n \"image\": \"#/components/schemas/CreateVideoFromImage\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Create a video from a HeyGen avatar (video or photo avatar).\\n\\nProvide an avatar_id to use a previously created avatar. The server\\nautomatically selects the appropriate engine based on the avatar type\\n(video avatar or photo avatar).\",\n \"properties\": {\n \"aspect_ratio\": {\n \"description\": \"Output video aspect ratio.\",\n \"enum\": [\n \"16:9\",\n \"9:16\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_asset_id\": {\n \"description\": \"HeyGen asset ID of an uploaded audio file. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_url\": {\n \"description\": \"Public URL of an audio file to lip-sync. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"avatar_id\": {\n \"description\": \"HeyGen avatar ID (video avatar or photo avatar look ID).\",\n \"type\": \"string\"\n },\n \"background\": {\n \"description\": \"Background settings for the video.\",\n \"nullable\": true,\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID of the background image. Used when type is 'image'. Mutually exclusive with url.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Background type. 'color' uses a solid hex color; 'image' uses an image from url or asset_id.\",\n \"enum\": [\n \"color\",\n \"image\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the background image. Used when type is 'image'. Mutually exclusive with asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Hex color code (e.g. '#ff0000'). Required when type is 'color'.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"callback_id\": {\n \"description\": \"Caller-defined identifier echoed back in the webhook payload.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL to receive a POST notification when the video is ready.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption\": {\n \"description\": \"Caption generation settings. A sidecar subtitle file is always returned via subtitle_url; set 'style' to additionally burn captions into the rendered video.\",\n \"nullable\": true,\n \"properties\": {\n \"file_format\": {\n \"description\": \"Supported caption file output formats.\",\n \"enum\": [\n \"srt\"\n ],\n \"type\": \"string\"\n },\n \"style\": {\n \"description\": \"Visual style for burning captions into the rendered video. Omit for sidecar-only captions.\",\n \"enum\": [\n \"default\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"expressiveness\": {\n \"description\": \"Avatar expressiveness level. Photo avatars only. Defaults to 'low' when omitted.\",\n \"enum\": [\n \"high\",\n \"medium\",\n \"low\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"motion_prompt\": {\n \"description\": \"Natural-language prompt controlling avatar body motion. Photo avatars only.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_format\": {\n \"description\": \"Output container for the generated video.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"remove_background\": {\n \"description\": \"Remove the avatar background. Video avatars must be trained with matting enabled.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"resolution\": {\n \"description\": \"Output video resolution.\",\n \"enum\": [\n \"4k\",\n \"1080p\",\n \"720p\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"script\": {\n \"description\": \"Text script for the avatar to speak. Pair with voice_id, or omit voice_id when using avatar_id to use the avatar's default voice. Mutually exclusive with audio_url/audio_asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Display title for the video in the HeyGen dashboard.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'avatar' for avatar-based video creation.\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Voice ID for text-to-speech. Required when script is provided, unless avatar_id is set (the avatar's default voice is used as fallback).\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_settings\": {\n \"description\": \"Voice tuning parameters (speed, pitch, locale).\",\n \"nullable\": true,\n \"properties\": {\n \"engine_settings\": {\n \"description\": \"Engine-specific voice tuning, discriminated by 'engine_type'. Use the variant matching the engine backing the chosen voice (e.g. engine_type='elevenlabs' for ElevenLabs-backed voices). The request is rejected if the voice_id is not compatible with the selected engine.\",\n \"discriminator\": {\n \"mapping\": {\n \"elevenlabs\": \"#/components/schemas/ElevenLabsEngineSettings\",\n \"fish\": \"#/components/schemas/FishEngineSettings\",\n \"starfish\": \"#/components/schemas/StarfishEngineSettings\"\n },\n \"propertyName\": \"engine_type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Engine-specific voice settings for ElevenLabs-backed voices.\\n\\nInherits the ElevenLabs tuning fields (model, stability, similarity_boost, style,\\nuse_speaker_boost) along with the eleven_v3 stability validator from\\n:class:`movio.api_service.app.api_types.video.ElevenLabsSettings`.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'elevenlabs' for ElevenLabs-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"The model ID to use for ElevenLabs.\",\n \"enum\": [\n \"eleven_multilingual_v2\",\n \"eleven_turbo_v2_5\",\n \"eleven_flash_v2_5\",\n \"eleven_v3\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity_boost\": {\n \"description\": \"The similarity boost parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"The stability parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"style\": {\n \"description\": \"The style parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"use_speaker_boost\": {\n \"description\": \"Whether to use speaker boost for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-specific voice settings for Fish Audio-backed voices.\\n\\nInherits Fish's tuning fields (model, stability, similarity).\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'fish' for Fish Audio-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"Fish Audio model version (default 's1').\",\n \"enum\": [\n \"s1\",\n \"s2-pro\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity\": {\n \"description\": \"Similarity parameter; how closely to match the source voice.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"Stability parameter; higher is more consistent.\",\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-selection for Starfish-backed voices.\\n\\nStarfish has no user-tunable settings today; set ``engine_type='starfish'`` to force\\nStarfish routing on voices that support multiple engines.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'starfish' for Starfish-backed voices.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"locale\": {\n \"description\": \"Locale/accent hint for multi-lingual voices (e.g. 'en-US').\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"pitch\": {\n \"default\": 0,\n \"description\": \"Pitch adjustment in semitones. -50 to +50.\",\n \"type\": \"number\"\n },\n \"speed\": {\n \"default\": 1,\n \"description\": \"Playback speed multiplier. 0.5 (half speed) to 1.5 (1.5x speed).\",\n \"type\": \"number\"\n },\n \"volume\": {\n \"default\": 1,\n \"description\": \"Voice audio volume. 1.0 = full, 0.0 = silent. Useful when mixing spoken voice with background audio.\",\n \"type\": \"number\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"watermark\": {\n \"description\": \"Custom watermark image to overlay on the video (PNG or JPEG). Available as a premium option for select Enterprise customers. To request access, please contact our support team.\",\n \"nullable\": true,\n \"properties\": {\n \"image\": {\n \"description\": \"Image asset to use as the watermark overlay (PNG or JPEG).\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"type\",\n \"avatar_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a video by animating an arbitrary image.\\n\\nProvide an image via URL, asset ID, or inline base64. The image will be\\nanimated with lip-sync to the provided audio or generated speech.\",\n \"properties\": {\n \"aspect_ratio\": {\n \"description\": \"Output video aspect ratio.\",\n \"enum\": [\n \"16:9\",\n \"9:16\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_asset_id\": {\n \"description\": \"HeyGen asset ID of an uploaded audio file. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_url\": {\n \"description\": \"Public URL of an audio file to lip-sync. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"background\": {\n \"description\": \"Background settings for the video.\",\n \"nullable\": true,\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID of the background image. Used when type is 'image'. Mutually exclusive with url.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Background type. 'color' uses a solid hex color; 'image' uses an image from url or asset_id.\",\n \"enum\": [\n \"color\",\n \"image\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the background image. Used when type is 'image'. Mutually exclusive with asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Hex color code (e.g. '#ff0000'). Required when type is 'color'.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"callback_id\": {\n \"description\": \"Caller-defined identifier echoed back in the webhook payload.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL to receive a POST notification when the video is ready.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption\": {\n \"description\": \"Caption generation settings. A sidecar subtitle file is always returned via subtitle_url; set 'style' to additionally burn captions into the rendered video.\",\n \"nullable\": true,\n \"properties\": {\n \"file_format\": {\n \"description\": \"Supported caption file output formats.\",\n \"enum\": [\n \"srt\"\n ],\n \"type\": \"string\"\n },\n \"style\": {\n \"description\": \"Visual style for burning captions into the rendered video. Omit for sidecar-only captions.\",\n \"enum\": [\n \"default\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"expressiveness\": {\n \"description\": \"Avatar expressiveness level. Defaults to 'low' when omitted.\",\n \"enum\": [\n \"high\",\n \"medium\",\n \"low\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"Image to animate. Accepts URL, asset ID, or base64-encoded data.\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"motion_prompt\": {\n \"description\": \"Natural-language prompt controlling avatar body motion.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_format\": {\n \"description\": \"Output container for the generated video.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"remove_background\": {\n \"description\": \"Remove the avatar background. Video avatars must be trained with matting enabled.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"resolution\": {\n \"description\": \"Output video resolution.\",\n \"enum\": [\n \"4k\",\n \"1080p\",\n \"720p\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"script\": {\n \"description\": \"Text script for the avatar to speak. Pair with voice_id, or omit voice_id when using avatar_id to use the avatar's default voice. Mutually exclusive with audio_url/audio_asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Display title for the video in the HeyGen dashboard.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'image' for image-based video creation.\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Voice ID for text-to-speech. Required when script is provided, unless avatar_id is set (the avatar's default voice is used as fallback).\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_settings\": {\n \"description\": \"Voice tuning parameters (speed, pitch, locale).\",\n \"nullable\": true,\n \"properties\": {\n \"engine_settings\": {\n \"description\": \"Engine-specific voice tuning, discriminated by 'engine_type'. Use the variant matching the engine backing the chosen voice (e.g. engine_type='elevenlabs' for ElevenLabs-backed voices). The request is rejected if the voice_id is not compatible with the selected engine.\",\n \"discriminator\": {\n \"mapping\": {\n \"elevenlabs\": \"#/components/schemas/ElevenLabsEngineSettings\",\n \"fish\": \"#/components/schemas/FishEngineSettings\",\n \"starfish\": \"#/components/schemas/StarfishEngineSettings\"\n },\n \"propertyName\": \"engine_type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Engine-specific voice settings for ElevenLabs-backed voices.\\n\\nInherits the ElevenLabs tuning fields (model, stability, similarity_boost, style,\\nuse_speaker_boost) along with the eleven_v3 stability validator from\\n:class:`movio.api_service.app.api_types.video.ElevenLabsSettings`.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'elevenlabs' for ElevenLabs-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"The model ID to use for ElevenLabs.\",\n \"enum\": [\n \"eleven_multilingual_v2\",\n \"eleven_turbo_v2_5\",\n \"eleven_flash_v2_5\",\n \"eleven_v3\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity_boost\": {\n \"description\": \"The similarity boost parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"The stability parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"style\": {\n \"description\": \"The style parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"use_speaker_boost\": {\n \"description\": \"Whether to use speaker boost for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-specific voice settings for Fish Audio-backed voices.\\n\\nInherits Fish's tuning fields (model, stability, similarity).\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'fish' for Fish Audio-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"Fish Audio model version (default 's1').\",\n \"enum\": [\n \"s1\",\n \"s2-pro\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity\": {\n \"description\": \"Similarity parameter; how closely to match the source voice.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"Stability parameter; higher is more consistent.\",\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-selection for Starfish-backed voices.\\n\\nStarfish has no user-tunable settings today; set ``engine_type='starfish'`` to force\\nStarfish routing on voices that support multiple engines.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'starfish' for Starfish-backed voices.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"locale\": {\n \"description\": \"Locale/accent hint for multi-lingual voices (e.g. 'en-US').\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"pitch\": {\n \"default\": 0,\n \"description\": \"Pitch adjustment in semitones. -50 to +50.\",\n \"type\": \"number\"\n },\n \"speed\": {\n \"default\": 1,\n \"description\": \"Playback speed multiplier. 0.5 (half speed) to 1.5 (1.5x speed).\",\n \"type\": \"number\"\n },\n \"volume\": {\n \"default\": 1,\n \"description\": \"Voice audio volume. 1.0 = full, 0.0 = silent. Useful when mixing spoken voice with background audio.\",\n \"type\": \"number\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"watermark\": {\n \"description\": \"Custom watermark image to overlay on the video (PNG or JPEG). Available as a premium option for select Enterprise customers. To request access, please contact our support team.\",\n \"nullable\": true,\n \"properties\": {\n \"image\": {\n \"description\": \"Image asset to use as the watermark overlay (PNG or JPEG).\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"type\",\n \"image\"\n ],\n \"type\": \"object\"\n }\n ]\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"properties\": {\n \"output_format\": {\n \"description\": \"Output container for the generated video.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Initial video status (e.g. 'waiting').\",\n \"type\": \"string\"\n },\n \"video_id\": {\n \"description\": \"Unique identifier for the created video.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"video_id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + Description: "Creates a video from a HeyGen avatar or an arbitrary image. Supports scripts or pre-recorded audio for lip-sync. Supports Avatar IV and Avatar V engines; set the 'engine' field to select. Avatar III video generation requires the legacy API (v1 or v2).", + RequestSchema: "{\n \"description\": \"Discriminated union for POST /v3/videos request body.\",\n \"discriminator\": {\n \"mapping\": {\n \"avatar\": \"#/components/schemas/CreateVideoFromAvatar\",\n \"image\": \"#/components/schemas/CreateVideoFromImage\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Create a video from a HeyGen avatar (video or photo avatar).\\n\\nProvide an avatar_id to use a previously created avatar. Supports all\\navatar types: studio_avatar, digital_twin, and photo_avatar. Optionally\\nset ``engine`` to select Avatar V for eligible avatars; when omitted, the\\nserver defaults to Avatar IV.\",\n \"properties\": {\n \"aspect_ratio\": {\n \"description\": \"Output video aspect ratio.\",\n \"enum\": [\n \"16:9\",\n \"9:16\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_asset_id\": {\n \"description\": \"HeyGen asset ID of an uploaded audio file. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_url\": {\n \"description\": \"Public URL of an audio file to lip-sync. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"avatar_id\": {\n \"description\": \"HeyGen avatar ID (video avatar or photo avatar look ID).\",\n \"type\": \"string\"\n },\n \"background\": {\n \"description\": \"Background settings for the video.\",\n \"nullable\": true,\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID of the background image. Used when type is 'image'. Mutually exclusive with url.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Background type. 'color' uses a solid hex color; 'image' uses an image from url or asset_id.\",\n \"enum\": [\n \"color\",\n \"image\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the background image. Used when type is 'image'. Mutually exclusive with asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Hex color code (e.g. '#ff0000'). Required when type is 'color'.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"callback_id\": {\n \"description\": \"Caller-defined identifier echoed back in the webhook payload.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL to receive a POST notification when the video is ready.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption\": {\n \"description\": \"Caption generation settings. A sidecar subtitle file is always returned via subtitle_url; set 'style' to additionally burn captions into the rendered video.\",\n \"nullable\": true,\n \"properties\": {\n \"file_format\": {\n \"default\": \"srt\",\n \"description\": \"Output format for the sidecar caption file.\",\n \"enum\": [\n \"srt\"\n ],\n \"type\": \"string\"\n },\n \"style\": {\n \"description\": \"Visual style for burning captions into the rendered video. Omit for sidecar-only captions.\",\n \"enum\": [\n \"default\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"engine\": {\n \"description\": \"Engine configuration for video generation. Pass {\\\"type\\\": \\\"avatar_v\\\"} to enable cross-reference-driven animation for higher quality. Check supported_api_engines on the avatar look to confirm eligibility. Defaults to Avatar IV when omitted.\",\n \"discriminator\": {\n \"mapping\": {\n \"avatar_iv\": \"#/components/schemas/AvatarIVEngineConfig\",\n \"avatar_v\": \"#/components/schemas/AvatarVEngineConfig\"\n },\n \"propertyName\": \"type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Avatar V engine configuration with cross-reference-driven animation.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Engine type discriminator. Must be 'avatar_v'. Check supported_api_engines on the avatar look to confirm eligibility.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Avatar IV engine configuration (default behavior).\",\n \"properties\": {\n \"type\": {\n \"description\": \"Engine type discriminator. Must be 'avatar_iv'.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"expressiveness\": {\n \"description\": \"Avatar expressiveness level. Photo avatars only. Defaults to 'low' when omitted. Avatar IV only; not supported when engine.type is 'avatar_v'.\",\n \"enum\": [\n \"high\",\n \"medium\",\n \"low\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fit\": {\n \"description\": \"How the subject is fitted to the output canvas. 'cover' scales to fill the frame (may crop edges). 'contain' scales to fit entirely within the frame (may show background). When omitted, the server picks the best option based on the source and canvas orientations.\",\n \"enum\": [\n \"contain\",\n \"cover\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"motion_prompt\": {\n \"description\": \"Natural-language prompt controlling avatar body motion. Photo avatars only. Avatar IV only; not supported when engine.type is 'avatar_v'.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_format\": {\n \"default\": \"mp4\",\n \"description\": \"Output container. 'webm' returns a video with a transparent background (alpha channel); 'mp4' (default) returns a standard video. 'webm' requires an avatar that supports matting. When 'webm' is selected, any 'background' value is rejected and background removal is applied automatically — the caller does not need to set 'remove_background'.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"remove_background\": {\n \"description\": \"Remove the avatar background. Video avatars must be trained with matting enabled.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"resolution\": {\n \"description\": \"Output video resolution.\",\n \"enum\": [\n \"4k\",\n \"1080p\",\n \"720p\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"script\": {\n \"description\": \"Text script for the avatar to speak. Pair with voice_id, or omit voice_id when using avatar_id to use the avatar's default voice. Mutually exclusive with audio_url/audio_asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Display title for the video in the HeyGen dashboard.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'avatar' for avatar-based video creation.\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Voice ID for text-to-speech. Required when script is provided, unless avatar_id is set (the avatar's default voice is used as fallback).\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_settings\": {\n \"description\": \"Voice tuning parameters (speed, pitch, locale).\",\n \"nullable\": true,\n \"properties\": {\n \"engine_settings\": {\n \"description\": \"Engine-specific voice tuning, discriminated by 'engine_type'. Use the variant matching the engine backing the chosen voice (e.g. engine_type='elevenlabs' for ElevenLabs-backed voices). The request is rejected if the voice_id is not compatible with the selected engine.\",\n \"discriminator\": {\n \"mapping\": {\n \"elevenlabs\": \"#/components/schemas/ElevenLabsEngineSettings\",\n \"fish\": \"#/components/schemas/FishEngineSettings\",\n \"starfish\": \"#/components/schemas/StarfishEngineSettings\"\n },\n \"propertyName\": \"engine_type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Engine-specific voice settings for ElevenLabs-backed voices.\\n\\nInherits the ElevenLabs tuning fields (model, stability, similarity_boost, style,\\nuse_speaker_boost) along with the eleven_v3 stability validator from\\n:class:`movio.api_service.app.api_types.video.ElevenLabsSettings`.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'elevenlabs' for ElevenLabs-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"The model ID to use for ElevenLabs.\",\n \"enum\": [\n \"eleven_multilingual_v2\",\n \"eleven_turbo_v2_5\",\n \"eleven_flash_v2_5\",\n \"eleven_v3\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity_boost\": {\n \"description\": \"The similarity boost parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"The stability parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"style\": {\n \"description\": \"The style parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"use_speaker_boost\": {\n \"description\": \"Whether to use speaker boost for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-specific voice settings for Fish Audio-backed voices.\\n\\nInherits Fish's tuning fields (model, stability, similarity).\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'fish' for Fish Audio-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"Fish Audio model version (default 's1').\",\n \"enum\": [\n \"s1\",\n \"s2-pro\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity\": {\n \"description\": \"Similarity parameter; how closely to match the source voice.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"Stability parameter; higher is more consistent.\",\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-selection for Starfish-backed voices.\\n\\nStarfish has no user-tunable settings today; set ``engine_type='starfish'`` to force\\nStarfish routing on voices that support multiple engines.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'starfish' for Starfish-backed voices.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"locale\": {\n \"description\": \"Locale/accent hint for multi-lingual voices (e.g. 'en-US').\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"pitch\": {\n \"default\": 0,\n \"description\": \"Pitch adjustment in semitones. -50 to +50.\",\n \"type\": \"number\"\n },\n \"speed\": {\n \"default\": 1,\n \"description\": \"Playback speed multiplier. 0.5 (half speed) to 1.5 (1.5x speed).\",\n \"type\": \"number\"\n },\n \"volume\": {\n \"default\": 1,\n \"description\": \"Voice audio volume. 1.0 = full, 0.0 = silent. Useful when mixing spoken voice with background audio.\",\n \"type\": \"number\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"watermark\": {\n \"description\": \"Custom watermark image to overlay on the video (PNG or JPEG). Available as a premium option for select Enterprise customers. To request access, please contact our support team.\",\n \"nullable\": true,\n \"properties\": {\n \"image\": {\n \"description\": \"Image asset to use as the watermark overlay (PNG or JPEG).\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"opacity\": {\n \"default\": 1,\n \"description\": \"Watermark opacity. 0.0 is fully transparent, 1.0 is fully opaque.\",\n \"type\": \"number\"\n },\n \"placement\": {\n \"description\": \"Watermark placement. Defaults to bottom-right with standard margins when omitted.\",\n \"nullable\": true,\n \"properties\": {\n \"offset_x\": {\n \"description\": \"Fine-tune horizontal position. Fraction of frame width; 0.05 shifts 5% rightward, -0.05 shifts 5% leftward.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"offset_y\": {\n \"description\": \"Fine-tune vertical position. Fraction of frame height; 0.05 shifts 5% downward, -0.05 shifts 5% upward.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"position\": {\n \"default\": \"bottom_right\",\n \"description\": \"Anchor corner for the watermark.\",\n \"enum\": [\n \"top_left\",\n \"top_right\",\n \"bottom_left\",\n \"bottom_right\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"scale\": {\n \"default\": 1,\n \"description\": \"Scale multiplier for the watermark image. 1.0 renders at native size.\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"type\",\n \"avatar_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Create a video by animating an arbitrary image.\\n\\nProvide an image via URL, asset ID, or inline base64. The image will be\\nanimated with lip-sync to the provided audio or generated speech.\",\n \"properties\": {\n \"aspect_ratio\": {\n \"description\": \"Output video aspect ratio.\",\n \"enum\": [\n \"16:9\",\n \"9:16\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_asset_id\": {\n \"description\": \"HeyGen asset ID of an uploaded audio file. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"audio_url\": {\n \"description\": \"Public URL of an audio file to lip-sync. Mutually exclusive with script.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"background\": {\n \"description\": \"Background settings for the video.\",\n \"nullable\": true,\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID of the background image. Used when type is 'image'. Mutually exclusive with url.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Background type. 'color' uses a solid hex color; 'image' uses an image from url or asset_id.\",\n \"enum\": [\n \"color\",\n \"image\"\n ],\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"URL of the background image. Used when type is 'image'. Mutually exclusive with asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"value\": {\n \"description\": \"Hex color code (e.g. '#ff0000'). Required when type is 'color'.\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"callback_id\": {\n \"description\": \"Caller-defined identifier echoed back in the webhook payload.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"callback_url\": {\n \"description\": \"Webhook URL to receive a POST notification when the video is ready.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"caption\": {\n \"description\": \"Caption generation settings. A sidecar subtitle file is always returned via subtitle_url; set 'style' to additionally burn captions into the rendered video.\",\n \"nullable\": true,\n \"properties\": {\n \"file_format\": {\n \"default\": \"srt\",\n \"description\": \"Output format for the sidecar caption file.\",\n \"enum\": [\n \"srt\"\n ],\n \"type\": \"string\"\n },\n \"style\": {\n \"description\": \"Visual style for burning captions into the rendered video. Omit for sidecar-only captions.\",\n \"enum\": [\n \"default\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"expressiveness\": {\n \"description\": \"Avatar expressiveness level. Defaults to 'low' when omitted.\",\n \"enum\": [\n \"high\",\n \"medium\",\n \"low\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"fit\": {\n \"description\": \"How the subject is fitted to the output canvas. 'cover' scales to fill the frame (may crop edges). 'contain' scales to fit entirely within the frame (may show background). When omitted, the server picks the best option based on the source and canvas orientations.\",\n \"enum\": [\n \"contain\",\n \"cover\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"image\": {\n \"description\": \"Image to animate. Accepts URL, asset ID, or base64-encoded data.\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"motion_prompt\": {\n \"description\": \"Natural-language prompt controlling avatar body motion.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"output_format\": {\n \"default\": \"mp4\",\n \"description\": \"Output container. 'webm' returns a video with a transparent background (alpha channel); 'mp4' (default) returns a standard video. 'webm' requires an avatar that supports matting. When 'webm' is selected, any 'background' value is rejected and background removal is applied automatically — the caller does not need to set 'remove_background'.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"remove_background\": {\n \"description\": \"Remove the avatar background. Video avatars must be trained with matting enabled.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n },\n \"resolution\": {\n \"description\": \"Output video resolution.\",\n \"enum\": [\n \"4k\",\n \"1080p\",\n \"720p\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"script\": {\n \"description\": \"Text script for the avatar to speak. Pair with voice_id, or omit voice_id when using avatar_id to use the avatar's default voice. Mutually exclusive with audio_url/audio_asset_id.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Display title for the video in the HeyGen dashboard.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Must be 'image' for image-based video creation.\",\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Voice ID for text-to-speech. Required when script is provided, unless avatar_id is set (the avatar's default voice is used as fallback).\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"voice_settings\": {\n \"description\": \"Voice tuning parameters (speed, pitch, locale).\",\n \"nullable\": true,\n \"properties\": {\n \"engine_settings\": {\n \"description\": \"Engine-specific voice tuning, discriminated by 'engine_type'. Use the variant matching the engine backing the chosen voice (e.g. engine_type='elevenlabs' for ElevenLabs-backed voices). The request is rejected if the voice_id is not compatible with the selected engine.\",\n \"discriminator\": {\n \"mapping\": {\n \"elevenlabs\": \"#/components/schemas/ElevenLabsEngineSettings\",\n \"fish\": \"#/components/schemas/FishEngineSettings\",\n \"starfish\": \"#/components/schemas/StarfishEngineSettings\"\n },\n \"propertyName\": \"engine_type\"\n },\n \"nullable\": true,\n \"oneOf\": [\n {\n \"description\": \"Engine-specific voice settings for ElevenLabs-backed voices.\\n\\nInherits the ElevenLabs tuning fields (model, stability, similarity_boost, style,\\nuse_speaker_boost) along with the eleven_v3 stability validator from\\n:class:`movio.api_service.app.api_types.video.ElevenLabsSettings`.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'elevenlabs' for ElevenLabs-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"The model ID to use for ElevenLabs.\",\n \"enum\": [\n \"eleven_multilingual_v2\",\n \"eleven_turbo_v2_5\",\n \"eleven_flash_v2_5\",\n \"eleven_v3\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity_boost\": {\n \"description\": \"The similarity boost parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"The stability parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"style\": {\n \"description\": \"The style parameter for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"use_speaker_boost\": {\n \"description\": \"Whether to use speaker boost for ElevenLabs.\",\n \"nullable\": true,\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-specific voice settings for Fish Audio-backed voices.\\n\\nInherits Fish's tuning fields (model, stability, similarity).\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'fish' for Fish Audio-backed voices.\",\n \"type\": \"string\"\n },\n \"model\": {\n \"description\": \"Fish Audio model version (default 's1').\",\n \"enum\": [\n \"s1\",\n \"s2-pro\"\n ],\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"similarity\": {\n \"description\": \"Similarity parameter; how closely to match the source voice.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"stability\": {\n \"description\": \"Stability parameter; higher is more consistent.\",\n \"nullable\": true,\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Engine-selection for Starfish-backed voices.\\n\\nStarfish has no user-tunable settings today; set ``engine_type='starfish'`` to force\\nStarfish routing on voices that support multiple engines.\",\n \"properties\": {\n \"engine_type\": {\n \"description\": \"Engine type discriminator. Must be 'starfish' for Starfish-backed voices.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"engine_type\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"locale\": {\n \"description\": \"Locale/accent hint for multi-lingual voices (e.g. 'en-US').\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"pitch\": {\n \"default\": 0,\n \"description\": \"Pitch adjustment in semitones. -50 to +50.\",\n \"type\": \"number\"\n },\n \"speed\": {\n \"default\": 1,\n \"description\": \"Playback speed multiplier. 0.5 (half speed) to 1.5 (1.5x speed).\",\n \"type\": \"number\"\n },\n \"volume\": {\n \"default\": 1,\n \"description\": \"Voice audio volume. 1.0 = full, 0.0 = silent. Useful when mixing spoken voice with background audio.\",\n \"type\": \"number\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"watermark\": {\n \"description\": \"Custom watermark image to overlay on the video (PNG or JPEG). Available as a premium option for select Enterprise customers. To request access, please contact our support team.\",\n \"nullable\": true,\n \"properties\": {\n \"image\": {\n \"description\": \"Image asset to use as the watermark overlay (PNG or JPEG).\",\n \"discriminator\": {\n \"mapping\": {\n \"asset_id\": \"#/components/schemas/AssetId\",\n \"base64\": \"#/components/schemas/AssetBase64\",\n \"url\": \"#/components/schemas/AssetUrl\"\n },\n \"propertyName\": \"type\"\n },\n \"oneOf\": [\n {\n \"description\": \"Asset input via publicly accessible HTTPS URL.\",\n \"properties\": {\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n },\n \"url\": {\n \"description\": \"Publicly accessible HTTPS URL for the asset\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"url\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via HeyGen asset ID from the asset upload endpoint.\",\n \"properties\": {\n \"asset_id\": {\n \"description\": \"HeyGen asset ID from the asset upload endpoint\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"asset_id\"\n ],\n \"type\": \"object\"\n },\n {\n \"description\": \"Asset input via base64-encoded content.\",\n \"properties\": {\n \"data\": {\n \"description\": \"Base64-encoded file content\",\n \"type\": \"string\"\n },\n \"media_type\": {\n \"description\": \"MIME type of the encoded content (e.g. \\\"image/png\\\")\",\n \"type\": \"string\"\n },\n \"type\": {\n \"description\": \"Input type discriminator\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"type\",\n \"media_type\",\n \"data\"\n ],\n \"type\": \"object\"\n }\n ]\n },\n \"opacity\": {\n \"default\": 1,\n \"description\": \"Watermark opacity. 0.0 is fully transparent, 1.0 is fully opaque.\",\n \"type\": \"number\"\n },\n \"placement\": {\n \"description\": \"Watermark placement. Defaults to bottom-right with standard margins when omitted.\",\n \"nullable\": true,\n \"properties\": {\n \"offset_x\": {\n \"description\": \"Fine-tune horizontal position. Fraction of frame width; 0.05 shifts 5% rightward, -0.05 shifts 5% leftward.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"offset_y\": {\n \"description\": \"Fine-tune vertical position. Fraction of frame height; 0.05 shifts 5% downward, -0.05 shifts 5% upward.\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"position\": {\n \"default\": \"bottom_right\",\n \"description\": \"Anchor corner for the watermark.\",\n \"enum\": [\n \"top_left\",\n \"top_right\",\n \"bottom_left\",\n \"bottom_right\"\n ],\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n },\n \"scale\": {\n \"default\": 1,\n \"description\": \"Scale multiplier for the watermark image. 1.0 renders at native size.\",\n \"type\": \"number\"\n }\n },\n \"required\": [\n \"image\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"type\",\n \"image\"\n ],\n \"type\": \"object\"\n }\n ]\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"properties\": {\n \"output_format\": {\n \"default\": \"mp4\",\n \"description\": \"Resolved output format for the video.\",\n \"enum\": [\n \"mp4\",\n \"webm\"\n ],\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Initial video status (e.g. 'waiting').\",\n \"type\": \"string\"\n },\n \"video_id\": {\n \"description\": \"Unique identifier for the created video.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"video_id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/videos", Method: "POST", BodyEncoding: "json", @@ -44,7 +44,7 @@ var VideoGet = &command.Spec{ Name: "get", Summary: "Get Video", Description: "Returns details for a video including status, video_url, thumbnail_url, duration, and failure info if applicable.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current video status\",\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/videos/{video_id}", Method: "GET", BodyEncoding: "", @@ -61,7 +61,7 @@ var VideoList = &command.Spec{ Name: "list", Summary: "List Videos", Description: "Returns a paginated list of all videos in the account. Filterable by folder_id or title substring.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"Video resource returned by list and detail endpoints.\\n\\nIf ``output_language`` is present the video is a translated video;\\notherwise it is a generated video.\",\n \"properties\": {\n \"captioned_video_url\": {\n \"description\": \"Presigned URL to download the video file with captions burned in\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"completed_at\": {\n \"description\": \"Unix timestamp when video generation finished\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"created_at\": {\n \"description\": \"Unix timestamp of creation\",\n \"nullable\": true,\n \"type\": \"integer\"\n },\n \"duration\": {\n \"description\": \"Video duration in seconds\",\n \"nullable\": true,\n \"type\": \"number\"\n },\n \"failure_code\": {\n \"description\": \"Machine-readable failure reason. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"failure_message\": {\n \"description\": \"Human-readable failure description. Only present when status is failed.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"folder_id\": {\n \"description\": \"ID of containing folder\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"gif_url\": {\n \"description\": \"URL to animated GIF preview\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"id\": {\n \"description\": \"Unique video identifier\",\n \"type\": \"string\"\n },\n \"output_language\": {\n \"description\": \"BCP-47 output language code. Present only for translated videos.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"status\": {\n \"description\": \"Current video status\",\n \"enum\": [\n \"pending\",\n \"processing\",\n \"completed\",\n \"failed\"\n ],\n \"type\": \"string\"\n },\n \"subtitle_url\": {\n \"description\": \"Presigned URL to download the SRT subtitle file\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"thumbnail_url\": {\n \"description\": \"URL to video thumbnail image\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"title\": {\n \"description\": \"Video title\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_page_url\": {\n \"description\": \"URL to the video page in the HeyGen app\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"video_url\": {\n \"description\": \"Presigned URL to download the video file\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"id\",\n \"status\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/videos", Method: "GET", BodyEncoding: "", diff --git a/gen/voice.go b/gen/voice.go index 5e54b9f..33c2555 100644 --- a/gen/voice.go +++ b/gen/voice.go @@ -64,7 +64,7 @@ var VoiceCreate = &command.Spec{ Summary: "Design a Voice", Description: "Returns up to 3 voices matching a natural language description (e.g. 'warm, confident female narrator'). Use the seed parameter to get different batches of results.", RequestSchema: "{\n \"description\": \"Request body for POST /v3/voices — design a voice via semantic search.\",\n \"properties\": {\n \"gender\": {\n \"description\": \"Filter by gender: 'male' or 'female'.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"locale\": {\n \"description\": \"BCP-47 locale tag to filter by (e.g., 'en-US', 'pt-BR').\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"prompt\": {\n \"description\": \"Natural language description of the desired voice (e.g., 'warm, confident female narrator').\",\n \"type\": \"string\"\n },\n \"seed\": {\n \"default\": 0,\n \"description\": \"Controls which batch of results to return. seed=0 returns the top matches, seed=1 the next batch, etc. Same prompt + seed always returns the same voices.\",\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"prompt\"\n ],\n \"type\": \"object\"\n}", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response payload for POST /v3/voices.\",\n \"properties\": {\n \"seed\": {\n \"description\": \"The seed used for this request. Increment to get different voices.\",\n \"type\": \"integer\"\n },\n \"voices\": {\n \"description\": \"Matching voices for the given prompt, ordered by relevance.\",\n \"items\": {\n \"description\": \"A single voice in the listing response.\",\n \"properties\": {\n \"gender\": {\n \"description\": \"Gender of the voice.\",\n \"type\": \"string\"\n },\n \"language\": {\n \"description\": \"Primary language of the voice.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Display name of the voice.\",\n \"type\": \"string\"\n },\n \"preview_audio_url\": {\n \"description\": \"URL to a short audio preview of the voice.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"support_locale\": {\n \"description\": \"Whether the voice supports locale variants.\",\n \"type\": \"boolean\"\n },\n \"support_pause\": {\n \"description\": \"Whether the voice supports SSML pause/break tags.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"public\",\n \"private\"\n ],\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Unique voice identifier.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"voice_id\",\n \"name\",\n \"language\",\n \"gender\",\n \"support_pause\",\n \"support_locale\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"voices\",\n \"seed\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"description\": \"Response payload for POST /v3/voices.\",\n \"properties\": {\n \"seed\": {\n \"description\": \"The seed used for this request. Increment to get different voices.\",\n \"type\": \"integer\"\n },\n \"voices\": {\n \"description\": \"Matching voices for the given prompt, ordered by relevance.\",\n \"items\": {\n \"description\": \"A single voice in the listing response.\",\n \"properties\": {\n \"gender\": {\n \"description\": \"Gender of the voice.\",\n \"type\": \"string\"\n },\n \"language\": {\n \"description\": \"Primary language of the voice.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Display name of the voice.\",\n \"type\": \"string\"\n },\n \"preview_audio_url\": {\n \"description\": \"URL to a short audio preview of the voice.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"support_locale\": {\n \"description\": \"Whether the voice supports locale variants.\",\n \"type\": \"boolean\"\n },\n \"support_pause\": {\n \"description\": \"Whether the voice supports SSML pause/break tags.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Whether this is a public or private voice.\",\n \"enum\": [\n \"public\",\n \"private\"\n ],\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Unique voice identifier.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"voice_id\",\n \"name\",\n \"language\",\n \"gender\",\n \"support_pause\",\n \"support_locale\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n }\n },\n \"required\": [\n \"voices\",\n \"seed\"\n ],\n \"type\": \"object\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/voices", Method: "POST", BodyEncoding: "json", @@ -147,7 +147,7 @@ var VoiceList = &command.Spec{ Name: "list", Summary: "List Voices", Description: "Returns a paginated list of voices, filterable by type, engine, language, and gender. Use engine=starfish for voices compatible with the TTS endpoint.", - ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"A single voice in the listing response.\",\n \"properties\": {\n \"gender\": {\n \"description\": \"Gender of the voice.\",\n \"type\": \"string\"\n },\n \"language\": {\n \"description\": \"Primary language of the voice.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Display name of the voice.\",\n \"type\": \"string\"\n },\n \"preview_audio_url\": {\n \"description\": \"URL to a short audio preview of the voice.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"support_locale\": {\n \"description\": \"Whether the voice supports locale variants.\",\n \"type\": \"boolean\"\n },\n \"support_pause\": {\n \"description\": \"Whether the voice supports SSML pause/break tags.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"enum\": [\n \"public\",\n \"private\"\n ],\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Unique voice identifier.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"voice_id\",\n \"name\",\n \"language\",\n \"gender\",\n \"support_pause\",\n \"support_locale\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", + ResponseSchema: "{\n \"properties\": {\n \"data\": {\n \"items\": {\n \"description\": \"A single voice in the listing response.\",\n \"properties\": {\n \"gender\": {\n \"description\": \"Gender of the voice.\",\n \"type\": \"string\"\n },\n \"language\": {\n \"description\": \"Primary language of the voice.\",\n \"type\": \"string\"\n },\n \"name\": {\n \"description\": \"Display name of the voice.\",\n \"type\": \"string\"\n },\n \"preview_audio_url\": {\n \"description\": \"URL to a short audio preview of the voice.\",\n \"nullable\": true,\n \"type\": \"string\"\n },\n \"support_locale\": {\n \"description\": \"Whether the voice supports locale variants.\",\n \"type\": \"boolean\"\n },\n \"support_pause\": {\n \"description\": \"Whether the voice supports SSML pause/break tags.\",\n \"type\": \"boolean\"\n },\n \"type\": {\n \"description\": \"Whether this is a public or private voice.\",\n \"enum\": [\n \"public\",\n \"private\"\n ],\n \"type\": \"string\"\n },\n \"voice_id\": {\n \"description\": \"Unique voice identifier.\",\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"voice_id\",\n \"name\",\n \"language\",\n \"gender\",\n \"support_pause\",\n \"support_locale\",\n \"type\"\n ],\n \"type\": \"object\"\n },\n \"type\": \"array\"\n },\n \"has_more\": {\n \"description\": \"Whether more pages are available\",\n \"type\": \"boolean\"\n },\n \"next_token\": {\n \"description\": \"Opaque cursor for the next page\",\n \"nullable\": true,\n \"type\": \"string\"\n }\n },\n \"required\": [],\n \"type\": \"object\"\n}", Endpoint: "/v3/voices", Method: "GET", BodyEncoding: "",