Find Moments
The Find Moments API lets you describe the moments you want using natural language — such as "funny reactions" or "product demos" — and the API finds and extracts matching clips with timestamps, titles, descriptions, and hashtags. If export is enabled, the response also includes rendered video download links for each clip.
Supported Video Sources
The API accepts URLs from the following platforms: YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Instagram, Zoom, Rumble, Google Drive and more.
You can also use locally uploaded files. Local upload requires a Standard plan or above. See the Upload API for details.
Submit Find Moments Task
POST https://wayinvideo-api.wayin.ai/open/v2/clips/find-moments
Request Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
video_url | string | Yes | — | The source video URL or uploaded file identifier |
query | string | No | "" | Natural-language query describing the moments you want (e.g. "funny reactions", "product demos") |
project_name | string | No | "" | Custom task name |
source_lang | string | No | Auto-detect | Source language of the video (see Supported Languages) |
target_lang | string | No | — | Target language for captions (see Supported Languages). When omitted, no translation is applied. |
enable_export | boolean | No | false | See below. When false, only clip time ranges, titles, and descriptions are returned (no rendering); when true, clips are rendered and each clip includes an export link. |
ratio | string | No | RATIO_ORIGINAL | Aspect ratio: RATIO_ORIGINAL, RATIO_16_9, RATIO_1_1, RATIO_4_5, RATIO_9_16. Only used when enable_export is true. |
resolution | string | No | SD_480 | Output resolution: SD_480, HD_720, FHD_1080. Only used when enable_export is true. |
enable_caption | boolean | No | false | Whether to add dynamic captions when rendering. Only used when enable_export is true. When true, caption_display and cc_style_tpl take effect. |
caption_display | string | No | original | Caption mode: both, original, translation. Only used when enable_export and enable_caption are both true. |
cc_style_tpl | string | No | — | Caption style template ID (see Subtitle Styles). Only used when enable_export and enable_caption are both true. If not set, the front-end default style is applied. |
enable_ai_reframe | boolean | No | false | Enable AI reframing. Only used when enable_export is true. |
enable_export behavior
- When
enable_exportis empty orfalse, the API only returns clip time ranges, titles, descriptions, and related metadata. No rendering is performed, and there are no export links in the result. The parametersratio,resolution,caption_display,enable_caption,enable_ai_reframe, andcc_style_tplhave no effect. - When
enable_exportistrue, those parameters take effect, each clip is rendered, and the result includes a download link for each clip. Because each clip is rendered, processing may take longer.
Example 1: Without export (clip metadata only)
Request body omits enable_export or sets it to false. Only clip time ranges, titles, descriptions, and tags are returned; no rendering, no export links.
Request
curl -X POST https://wayinvideo-api.wayin.ai/open/v2/clips/find-moments \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-wayinvideo-api-version: v2" \
-d '{
"video_url": "https://www.youtube.com/watch?v=example",
"query": "sample query",
"project_name": "sample project name"
}'
Submit response
{
"code": "0",
"data": {
"id": "proj_moment_456",
"name": "sample project name",
"status": "CREATED"
},
"message": "success"
}
Example 2: With export (rendered clips and download links)
Request body sets enable_export to true. Clips are rendered; each clip includes an export_link.
Request
curl -X POST https://wayinvideo-api.wayin.ai/open/v2/clips/find-moments \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-wayinvideo-api-version: v2" \
-d '{
"video_url": "https://www.youtube.com/watch?v=example",
"query": "sample query",
"project_name": "sample project name",
"enable_export": true,
"ratio": "RATIO_9_16",
"resolution": "FHD_1080",
"enable_caption": true,
"enable_ai_reframe": true
}'
Submit response
{
"code": "0",
"data": {
"id": "proj_moment_789",
"name": "sample project name",
"status": "CREATED"
},
"message": "success"
}
| Field | Type | Description |
|---|---|---|
id | string | Unique task identifier |
name | string | Task name |
status | string | CREATED, QUEUED, ONGOING, SUCCEEDED, FAILED |
Get Find Moments Results
Poll for results until status is SUCCEEDED.
GET https://wayinvideo-api.wayin.ai/open/v2/clips/find-moments/results/{id}
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The task ID returned by the submit endpoint |
Example Request
curl -X GET https://wayinvideo-api.wayin.ai/open/v2/clips/find-moments/results/proj_moment_456 \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-wayinvideo-api-version: v2"
Response example: without export
When the task was submitted without enable_export (or with enable_export: false), clips do not include export_link:
{
"code": "0",
"data": {
"id": "proj_moment_456",
"name": "sample project name",
"status": "SUCCEEDED",
"api_units_usage": 120,
"clips": [
{
"idx": 0,
"title": "sample title",
"begin_ms": "120000",
"end_ms": "185000",
"thumbnail": "https://cdn.example.com/thumb/moment_001.jpg",
"tags": ["product", "announcement"],
"desc": "sample description",
"score": "81"
}
]
},
"message": "success"
}
Response example: with export
When the task was submitted with enable_export: true, each clip includes an export_link for the rendered video:
{
"code": "0",
"data": {
"id": "proj_moment_789",
"name": "sample project name",
"status": "SUCCEEDED",
"api_units_usage": 120,
"clips": [
{
"idx": 0,
"title": "sample title",
"begin_ms": "120000",
"end_ms": "185000",
"thumbnail": "https://cdn.example.com/thumb/moment_001.jpg",
"tags": ["product", "announcement"],
"desc": "sample description",
"score": "81",
"export_link": "https://cdn.example.com/export/moment_001.mp4"
}
]
},
"message": "success"
}
Clip Object
| Field | Type | Description |
|---|---|---|
idx | integer | Clip index (0-based, ranked by viral potential) |
title | string | AI-generated clip title |
begin_ms | string | Start time in milliseconds |
end_ms | string | End time in milliseconds |
thumbnail | string | Thumbnail image URL |
tags | string[] | AI-generated hashtags |
desc | string | AI-generated description |
score | string | Viral potential score (0–100, higher is better) |
export_link | string | Rendered video download URL (when enable_export is true) |