Clips Export API

April 1, 2026

Clips Export API

Use this API when you have already created an AI Clipping or Find Moments task and want to render clips later, or re-export them with a different subtitle style, aspect ratio, AI hook, or other export settings.

The project_id should be the original task ID returned by:

  • POST /api/v2/clips
  • POST /api/v2/clips/find-moments

Submit Export Task

POST https://wayinvideo-api.wayin.ai/api/v2/clips/export

Request Body

ParameterTypeRequiredDefaultDescription
project_idstringYesThe original AI Clipping or Find Moments task ID.
clip_indicesinteger[]NonullClip indices to export. When omitted, the system exports all clips in the project.
target_langstringNonullTarget language for output content including subtitles (see Supported Languages). When null, the output language matches the source task language.
resolutionstringNoSD_480Output resolution: SD_480, HD_720, FHD_1080, QHD_2K, UHD_4K.
enable_captionbooleanNofalseWhether to add Animated Caption when rendering. When true, caption_display and cc_style_tpl take effect; when false, the export has no Animated Caption.
caption_displaystringNooriginalCaption mode: both, original, translation. Only used when enable_caption is true.
cc_style_tplstringNotemp-7Caption style template ID (see Subtitle Styles). Only used when enable_caption is true.
enable_ai_hookbooleanNofalseWhether to add an automatically generated, attention-grabbing text hook at the beginning or end of each exported clip. When true, ai_hook_script_style and ai_hook_position take effect; when false, no AI hook is added.
ai_hook_script_stylestringNoseriousStyle of the generated hook text. Allowed values: serious, casual, informative, conversational, humorous, parody, inspirational, dramatic, empathetic, persuasive, neutral, excited, calm. Only used when enable_ai_hook is true.
ai_hook_positionstringNobeginningPosition of the generated hook text. Allowed values: beginning, end. Only used when enable_ai_hook is true.
ai_hook_keywordsstringNonullOptional keywords used to steer the generated AI hook text. Only used when enable_ai_hook is true.
ai_hook_text_durationintegerNonullDuration of the AI hook text overlay in milliseconds. Only used when enable_ai_hook is true.
enable_ai_reframebooleanNofalseEnable AI Reframe. When true, ratio is required; when false, the clip is exported with its original aspect ratio unchanged.
ratiostringYes when enable_ai_reframe is trueAspect ratio: RATIO_9_16, RATIO_1_1, RATIO_4_5, RATIO_16_9. Required when enable_ai_reframe is true.

Example Request

curl -X POST https://wayinvideo-api.wayin.ai/api/v2/clips/export \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2" \
  -d '{
    "project_id": "proj_abc123",
    "clip_indices": [0, 2],
    "resolution": "UHD_4K",
    "enable_caption": true,
    "caption_display": "both",
    "cc_style_tpl": "word-focus",
    "enable_ai_hook": true,
    "ai_hook_script_style": "serious",
    "ai_hook_position": "beginning",
    "enable_ai_reframe": true,
    "ratio": "RATIO_9_16"
  }'

Submit Response

{
  "data": {
    "export_task_id": "export_task_xyz789",
    "name": "sample export task",
    "status": "CREATED"
  }
}
FieldTypeDescription
export_task_idstringUnique export task identifier. Use this value to poll export progress.
namestringExport task name
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED

Get Export Results

Poll the export task until status is SUCCEEDED.

GET https://wayinvideo-api.wayin.ai/api/v2/clips/export/{taskId}

Path Parameters

ParameterTypeRequiredDescription
taskIdstringYesThe export_task_id returned by the export submit endpoint

Example Request

curl -X GET https://wayinvideo-api.wayin.ai/api/v2/clips/export/export_task_xyz789 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"

Example Response

{
  "data": {
    "export_task_id": "export_task_xyz789",
    "name": "sample export task",
    "status": "SUCCEEDED",
    "expire_at": 1775831883112,
    "cost_usage": 48.0,
    "clips": [
      {
        "idx": 0,
        "title": "sample title",
        "begin_ms": 15000,
        "end_ms": 75000,
        "thumbnail": "https://cdn.example.com/thumb/clip_001.jpg",
        "tags": ["insight", "analysis"],
        "desc": "sample description",
        "score": 81,
        "export_link": "https://cdn.example.com/export/clip_001.mp4"
      }
    ]
  }
}

Response Fields

FieldTypeDescription
export_task_idstringUnique export task identifier
namestringExport task name
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED
error_messagestringError reason (only present when status is FAILED)
expire_atintegerExpiration timestamp in milliseconds (epoch). After this time, the task expires and results can no longer be retrieved via the export results endpoint.
cost_usagenumberAPI units consumed for this export request
clipsarrayList of exported clip objects. When status is ONGOING, this may contain partial export results; when status is SUCCEEDED, it contains all exported clips.

The clips objects returned by the export results endpoint use the same structure as the clip objects in the main results endpoint, including export_link for each rendered clip.