API Find Moments

April 1, 2026

API Find Moments

L'API Find Moments vous permet de décrire les moments souhaités en langage naturel — comme "réactions drôles" ou "démonstrations de produits" — et l'API trouve et extrait les clips correspondants avec horodatages, titres, descriptions et hashtags depuis des vidéos de toutes durées, y compris des contenus de plusieurs heures. Si l'export est activé, la réponse inclut également des liens de téléchargement des vidéos rendues pour chaque clip, avec un recadrage automatique optionnel qui maintient le sujet principal centré et des overlays de sous-titres animés pour des sorties plus engageantes.

Sources Vidéo Prises en Charge

L'API accepte les URLs des plateformes suivantes : YouTube, Vimeo, Dailymotion, Kick, Twitch, TikTok, Facebook, Zoom, Rumble et plus encore.

Vous pouvez également utiliser des fichiers téléversés localement. Le téléversement local nécessite un abonnement Standard ou supérieur. Consultez l'API Upload pour plus de détails.


Soumettre une Tâche Find Moments

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

Corps de la Requête

Lors du rendu des clips, vous pouvez activer des fonctionnalités telles que les Sous-titres Animés, l'AI Reframe et des overlays de texte AI Hook optionnels. Avec l'AI Reframe, le système détecte le sujet principal dans le cadre, le maintient centré, optimise le recadrage selon le format choisi et sélectionne la mise en page la plus adaptée selon la structure de la scène. Ces fonctionnalités sont contrôlées par des paramètres dont les noms commencent par enable_ (voir le tableau ci-dessous).

ParamètreTypeObligatoireDéfautDescription
video_urlstringOuiL'URL de la vidéo source. Pour les fichiers téléversés localement, utilisez l'identifiant de fichier retourné par l'API Upload.
querystringOui""Requête en langage naturel décrivant les moments souhaités (ex. "réactions drôles", "démonstrations de produits")
project_namestringNon""Nom de tâche personnalisé
source_langstringNonnullLangue source de la vidéo (voir Langues prises en charge). Si null, le système détecte automatiquement la langue d'origine.
target_langstringNonnullLangue cible pour le contenu de sortie, y compris les titres des clips, descriptions et sous-titres (voir Langues prises en charge). Si null, la langue de sortie correspond à source_lang.
limitnumberNonnullNombre maximum de clips à retourner, classés par score de viralité du plus élevé au plus bas. Si null ou omis, tous les clips sont retournés.
enable_exportbooleanNonfalseVoir ci-dessous. Si false, seuls les plages temporelles, titres et descriptions des clips sont retournés (sans rendu) ; si true, les clips sont rendus immédiatement et chaque clip inclut un lien d'export. Vous pouvez également exporter ultérieurement avec des styles différents via l'endpoint Ré-exporter des clips existants.
resolutionstringNonSD_480Résolution de sortie : SD_480, HD_720, FHD_1080, QHD_2K, UHD_4K. Utilisé uniquement quand enable_export est true.
enable_captionbooleanNonfalseAjouter des sous-titres animés lors du rendu. Utilisé uniquement quand enable_export est true. Si true, caption_display et cc_style_tpl prennent effet ; si false, l'export n'a pas de sous-titres animés.
caption_displaystringNonoriginalMode de sous-titres : both, original, translation. Utilisé uniquement quand enable_export et enable_caption sont tous deux true.
cc_style_tplstringNontemp-7ID du modèle de style de sous-titres (voir Styles de sous-titres). Utilisé uniquement quand enable_export et enable_caption sont tous deux true.
enable_ai_hookbooleanNonfalseAjouter un texte d'accroche généré automatiquement au début ou à la fin de chaque clip rendu. Utilisé uniquement quand enable_export est true. Si true, ai_hook_script_style et ai_hook_position prennent effet ; si false, aucun AI Hook n'est ajouté.
ai_hook_script_stylestringNonseriousStyle du texte d'accroche généré. Valeurs autorisées : serious, casual, informative, conversational, humorous, parody, inspirational, dramatic, empathetic, persuasive, neutral, excited, calm. Utilisé uniquement quand enable_export et enable_ai_hook sont tous deux true.
ai_hook_positionstringNonbeginningPosition du texte d'accroche généré. Valeurs autorisées : beginning, end. Utilisé uniquement quand enable_export et enable_ai_hook sont tous deux true.
enable_ai_reframebooleanNonfalseActiver l'AI Reframe. Utilisé uniquement quand enable_export est true. Si true, ratio est obligatoire ; si false, la vidéo est exportée avec son format d'origine inchangé.
ratiostringOui si enable_ai_reframe est trueFormat d'image : RATIO_9_16, RATIO_1_1, RATIO_4_5, RATIO_16_9. Utilisé uniquement quand enable_export est true, et obligatoire quand enable_ai_reframe est true.
reframe_layoutstringNonAutoMise en page AI Reframe. Utilisé uniquement quand enable_export et enable_ai_reframe sont tous deux true. Par défaut Auto : le modèle choisit la meilleure mise en page pour le cadre (omettez le champ ou passez une chaîne vide pour le même comportement). Si défini sur une autre valeur autorisée pour le ratio choisi, le recadrage utilise cette mise en page fixe. Voir Valeurs de mise en page Reframe.

Valeurs de mise en page Reframe

Les valeurs reframe_layout autorisées dépendent du ratio. Auto est toujours autorisé (par défaut) ; omettre le champ ou passer une chaîne vide a le même comportement. Passez les noms de mise en page exactement comme indiqué ci-dessous (sensible à la casse et aux espaces).

ratioValeurs reframe_layout autorisées
RATIO_16_9Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, OTS, Screen First
RATIO_9_16Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, Screen First, Gameplay A, Gameplay B
RATIO_1_1Auto, Full, Fit, Grid 4, Trio
RATIO_4_5Auto, Full, Fit, Grid 4, Split 2, Trio, PiP, Screen First, Gameplay A, Gameplay B

Comportement de enable_export

  • Si enable_export est vide ou false, l'API retourne uniquement les plages temporelles des clips, titres, descriptions et métadonnées associées. Aucun rendu n'est effectué et il n'y a pas de liens d'export dans le résultat. Les paramètres ratio, reframe_layout, resolution, caption_display, enable_caption, cc_style_tpl, enable_ai_hook, ai_hook_script_style, ai_hook_position et enable_ai_reframe n'ont aucun effet lors de la création de la tâche. Vous pouvez ultérieurement rendre les clips sélectionnés via l'endpoint Ré-exporter des clips existants.
  • Si enable_export est true, ces paramètres prennent effet, chaque clip est rendu immédiatement, et le résultat inclut un lien de téléchargement pour chaque clip. Le traitement peut être plus long car chaque clip est rendu.

Le corps de la requête définit enable_export à true. Les clips sont rendus ; chaque clip inclut un export_link.

Requête

curl -X POST https://wayinvideo-api.wayin.ai/api/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,
    "resolution": "FHD_1080",
    "enable_caption": true,
    "enable_ai_reframe": true,
    "ratio": "RATIO_9_16"
  }'

Réponse de soumission

{
  "data": {
    "id": "proj_moment_789",
    "name": "sample project name",
    "status": "CREATED"
  }
}

Le corps de la requête omet enable_export ou le définit à false. Seules les plages temporelles, titres, descriptions et tags des clips sont retournés ; pas de rendu, pas de liens d'export.

Requête

curl -X POST https://wayinvideo-api.wayin.ai/api/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"
  }'

Réponse de soumission

{
  "data": {
    "id": "proj_moment_456",
    "name": "sample project name",
    "status": "CREATED"
  }
}
ChampTypeDescription
idstringIdentifiant unique de la tâche
namestringNom de la tâche
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED

Récupérer les Résultats Find Moments

Interrogez pour obtenir les résultats jusqu'à ce que status soit SUCCEEDED.

Résultats incrémentiels : Lorsque status est ONGOING, chaque appel retourne les clips générés jusqu'à présent — vous pouvez commencer à traiter les résultats partiels immédiatement. Lorsque status passe à SUCCEEDED, la réponse contient l'ensemble complet des clips.

GET https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments/results/{id}

Paramètres de Chemin

ParamètreTypeObligatoireDescription
idstringOuiL'ID de tâche retourné par l'endpoint de soumission

Exemple de Requête

curl -X GET https://wayinvideo-api.wayin.ai/api/v2/clips/find-moments/results/proj_moment_456 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "x-wayinvideo-api-version: v2"

Lorsque la tâche a été soumise avec enable_export: true, chaque clip inclut un export_link pour la vidéo rendue :

{
  "data": {
    "id": "proj_moment_789",
    "name": "sample project name",
    "status": "SUCCEEDED",
    "expire_at": 1775831883112,
    "cost_usage": 120.0,
    "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"
      }
    ]
  }
}

Lorsque la tâche a été soumise sans enable_export (ou avec enable_export: false), les clips n'incluent pas export_link :

{
  "data": {
    "id": "proj_moment_456",
    "name": "sample project name",
    "status": "SUCCEEDED",
    "expire_at": 1775831883112,
    "cost_usage": 120.0,
    "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
      }
    ]
  }
}

Champs de la Réponse

ChampTypeDescription
idstringIdentifiant unique de la tâche
namestringNom de la tâche
statusstringCREATED, QUEUED, ONGOING, SUCCEEDED, FAILED
error_messagestringRaison de l'erreur (présent uniquement quand status est FAILED)
expire_atintegerHorodatage d'expiration en millisecondes (epoch). Après cette date, la tâche expire et les résultats ne peuvent plus être récupérés via l'endpoint des résultats. La durée d'expiration dépend de votre plan d'abonnement. Consultez la page Plans d'abonnement pour plus de détails.
cost_usagenumberCrédits API consommés pour cette requête
clipsarrayListe d'objets clip (voir ci-dessous). Quand status est ONGOING, contient les clips générés jusqu'à présent (résultats partiels) ; quand status est SUCCEEDED, contient tous les clips (résultats finaux).

Objet Clip

ChampTypeDescription
idxintegerIndex du clip (basé sur 0, classé par potentiel viral)
titlestringTitre du clip généré par IA
begin_msnumberTemps de début en millisecondes
end_msnumberTemps de fin en millisecondes
thumbnailstringURL de l'image miniature
tagsstring[]Hashtags générés par IA
descstringDescription générée par IA
scorenumberScore de potentiel viral (0–100, plus élevé est mieux)
export_linkstringURL de téléchargement de la vidéo rendue (quand enable_export est true). Un nouveau lien est généré à chaque appel de l'endpoint des résultats. Chaque lien expire après 24 heures — veuillez télécharger la vidéo avant expiration. Si le lien a expiré, appelez à nouveau l'endpoint des résultats pour en obtenir un nouveau.

Ré-exporter des Clips Existants

Si vous souhaitez rendre des clips ultérieurement ou les ré-exporter avec un style de sous-titres différent, un format d'image, un AI Hook, des overlays ou d'autres paramètres d'export, utilisez l'API Clips Export.

Pour les projets Find Moments, passez l'id de tâche retourné par POST /api/v2/clips/find-moments comme project_id dans la requête d'export.