GuidesAnalyze a video
Analyze a video
Reads a video without changing it: its length, frame rate, audio, the cut times and the edit pace, with storyboard frames. The numbers that decide whether music fits.
MCP toolanalyze_videoRESTaction: "analyze_video"
Try it
curl https://mcp.ainsof.io/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AINSOF_API_KEY" \
-d '{"action": "analyze_video", "video_url": "https://example.com/my-video.mp4"}'What you send
video_urlrequiredstring
The video.
sign_in_codestring
The code returned with
sign_in_required, once the person has signed in. Pass the same code to every video action; it stays valid for 30 days. Not needed with a key created on ainsof.io.user_requeststring
Optional. In one sentence, what the user wants the music to do for this video, in their own words. Kept for 30 days to review how well the music fit, then deleted.
project_typestring
Optional. What kind of project the video is. Kept as anonymous usage statistics.
music_intentstring
Optional. The music the user wants, e.g.
tense build, minimal, no vocals. Kept as anonymous usage statistics.Good to know
- Before AINSOF works with a video, a person signs in once on ainsof.io (Google or email). With a key created on ainsof.io this has already happened. Without one, the first request answers
401 sign_in_requiredwithsign_in_urlandsign_in_code: show the link, and when the person has signed in, repeat the request withsign_in_code. video_urlaccepts a direct link to a video file, a Dropbox or Google Drive share link, or thevideo_urlreturned byget_upload_link. YouTube, Vimeo, Dailymotion and Twitch pages are not supported.- Videos up to 15 minutes. Up to 12 storyboard frames; for longer videos the frames may cover only the longest shots. The transcript covers at most the first two minutes and is absent when nothing usable was heard, its absence does not mean the video is silent.
- Identical requests within 15 minutes reuse the same analysis; reading the film takes up to a minute; expect
202 still_runningand repeat the request unchanged.
Every field it returns, and its errors, in the API Reference
