curl -H "Authorization: Bearer reel25_sk_..." \
https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000
const response = await fetch(
'https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000',
{ headers: { 'Authorization': 'Bearer reel25_sk_...' } }
);
const { data } = await response.json();
import requests
video_id = '550e8400-e29b-41d4-a716-446655440000'
response = requests.get(
f'https://api.reel25.com/api/v1/video-analysis/{video_id}',
headers={'Authorization': 'Bearer reel25_sk_...'}
)
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"transcript": "Stop doing time zone math in your head. Meet HoverTime...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." },
{ "start": 2.1, "end": 5.3, "text": "Meet HoverTime: The easiest way to convert time zones instantly." },
{ "start": 5.3, "end": 8.0, "text": "Just hover over a time in your email or Slack, and boom it's in your local time." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": "Product demo showcasing HoverTime, a browser extension that converts time zones on hover.",
"category": "Software Apps",
"matchedTopics": ["time zones", "productivity", "browser extension"],
"format": "Product Demo Review",
"hookStyle": "Pain Point Callout",
"hookPhrase": "Stop doing time zone math in your head",
"visualHook": "Text appearing on white background with timezone abbreviations",
"textHook": "EST PST HoverTime",
"audioHook": "Stop doing time zone math in your head",
"hookStartsAt": "0.0",
"structure": [
{ "start": 0.0, "end": 2.0, "type": "Hook", "description": "Pain point callout about timezone math." },
{ "start": 2.0, "end": 8.0, "type": "Demo", "description": "Screen recording showing HoverTime in Gmail and Slack." },
{ "start": 8.0, "end": 12.0, "type": "Solution", "description": "Highlights no tabs, no Google, no math." },
{ "start": 12.0, "end": 15.0, "type": "CTA", "description": "Direct URL call-to-action." }
],
"primaryTrigger": "Relief & Simplicity",
"retentionPattern": "Step Sequence",
"shareDriver": "Utility for Others",
"saveDriver": "Tool Reference",
"hasCta": true,
"ctaType": "Direct URL",
"ctaText": "Get HoverTime now: seconds.ae/hovertime",
"ctaShownAt": "14.0",
"ctaDestinationUrl": "https://seconds.ae/hovertime",
"productType": "SaaS",
"brandFirstShownAt": "14.0",
"brandsMentioned": [
{ "name": "Seconds", "url": "https://seconds.ae" }
],
"productsMentioned": [
{ "name": "HoverTime", "type": "SaaS", "url": "https://seconds.ae/hovertime", "appStoreUrl": null }
],
"ugcFit": "Strong UGC fit",
"ugcConfidence": 95,
"ugcReason": "Clean screen recording format makes it easy to replicate for any SaaS product.",
"onScreenSetup": "No People",
"genderPresentation": "Not Applicable",
"ageRange": "Not Applicable",
"editingStyle": "Screen Recording",
"recordingType": "Screencast",
"hasSubtitles": false,
"hasTextOverlays": true,
"musicType": "Original Sound",
"hasVoiceover": true,
"hasBackgroundMusic": false,
"modelUsed": "whisper-1 + qwen/qwen3.5-flash-02-23",
"tokensIn": 14113,
"tokensOut": 3338,
"costUsd": "0.018423",
"processingTimeMs": 25045,
"error": null,
"createdAt": "2026-03-22T08:00:00.000Z",
"updatedAt": "2026-03-22T08:00:25.000Z"
}
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "transcribed",
"transcript": "Stop doing time zone math in your head...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": null,
"category": null,
"format": null,
"hookStyle": null
}
}
{
"data": null
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"error": "Qwen: Empty response from OpenRouter",
"transcript": "Stop doing time zone math...",
"transcriptDuration": "15s"
}
}
Video Analysis
Get Analysis
Retrieve AI analysis results for a video
GET
/
api
/
v1
/
video-analysis
/
{videoId}
curl -H "Authorization: Bearer reel25_sk_..." \
https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000
const response = await fetch(
'https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000',
{ headers: { 'Authorization': 'Bearer reel25_sk_...' } }
);
const { data } = await response.json();
import requests
video_id = '550e8400-e29b-41d4-a716-446655440000'
response = requests.get(
f'https://api.reel25.com/api/v1/video-analysis/{video_id}',
headers={'Authorization': 'Bearer reel25_sk_...'}
)
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"transcript": "Stop doing time zone math in your head. Meet HoverTime...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." },
{ "start": 2.1, "end": 5.3, "text": "Meet HoverTime: The easiest way to convert time zones instantly." },
{ "start": 5.3, "end": 8.0, "text": "Just hover over a time in your email or Slack, and boom it's in your local time." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": "Product demo showcasing HoverTime, a browser extension that converts time zones on hover.",
"category": "Software Apps",
"matchedTopics": ["time zones", "productivity", "browser extension"],
"format": "Product Demo Review",
"hookStyle": "Pain Point Callout",
"hookPhrase": "Stop doing time zone math in your head",
"visualHook": "Text appearing on white background with timezone abbreviations",
"textHook": "EST PST HoverTime",
"audioHook": "Stop doing time zone math in your head",
"hookStartsAt": "0.0",
"structure": [
{ "start": 0.0, "end": 2.0, "type": "Hook", "description": "Pain point callout about timezone math." },
{ "start": 2.0, "end": 8.0, "type": "Demo", "description": "Screen recording showing HoverTime in Gmail and Slack." },
{ "start": 8.0, "end": 12.0, "type": "Solution", "description": "Highlights no tabs, no Google, no math." },
{ "start": 12.0, "end": 15.0, "type": "CTA", "description": "Direct URL call-to-action." }
],
"primaryTrigger": "Relief & Simplicity",
"retentionPattern": "Step Sequence",
"shareDriver": "Utility for Others",
"saveDriver": "Tool Reference",
"hasCta": true,
"ctaType": "Direct URL",
"ctaText": "Get HoverTime now: seconds.ae/hovertime",
"ctaShownAt": "14.0",
"ctaDestinationUrl": "https://seconds.ae/hovertime",
"productType": "SaaS",
"brandFirstShownAt": "14.0",
"brandsMentioned": [
{ "name": "Seconds", "url": "https://seconds.ae" }
],
"productsMentioned": [
{ "name": "HoverTime", "type": "SaaS", "url": "https://seconds.ae/hovertime", "appStoreUrl": null }
],
"ugcFit": "Strong UGC fit",
"ugcConfidence": 95,
"ugcReason": "Clean screen recording format makes it easy to replicate for any SaaS product.",
"onScreenSetup": "No People",
"genderPresentation": "Not Applicable",
"ageRange": "Not Applicable",
"editingStyle": "Screen Recording",
"recordingType": "Screencast",
"hasSubtitles": false,
"hasTextOverlays": true,
"musicType": "Original Sound",
"hasVoiceover": true,
"hasBackgroundMusic": false,
"modelUsed": "whisper-1 + qwen/qwen3.5-flash-02-23",
"tokensIn": 14113,
"tokensOut": 3338,
"costUsd": "0.018423",
"processingTimeMs": 25045,
"error": null,
"createdAt": "2026-03-22T08:00:00.000Z",
"updatedAt": "2026-03-22T08:00:25.000Z"
}
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "transcribed",
"transcript": "Stop doing time zone math in your head...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": null,
"category": null,
"format": null,
"hookStyle": null
}
}
{
"data": null
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"error": "Qwen: Empty response from OpenRouter",
"transcript": "Stop doing time zone math...",
"transcriptDuration": "15s"
}
}
Returns the AI-powered analysis for a specific video, including transcript, hook analysis, virality signals, CTA detection, monetization insights, and more.
The response depends on the analysis status:
null— No analysis exists yet. Show an “Analyze” button.pending/downloading— Analysis is queued or downloading video.transcribed— Whisper transcription complete. Transcript and segments are available, but visual analysis is still running.analyzing— Visual analysis in progress.completed— Full analysis available with all fields populated.failed— Analysis failed. Check theerrorfield. User can retry.
Path parameters
string
required
The video UUID.
curl -H "Authorization: Bearer reel25_sk_..." \
https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000
const response = await fetch(
'https://api.reel25.com/api/v1/video-analysis/550e8400-e29b-41d4-a716-446655440000',
{ headers: { 'Authorization': 'Bearer reel25_sk_...' } }
);
const { data } = await response.json();
import requests
video_id = '550e8400-e29b-41d4-a716-446655440000'
response = requests.get(
f'https://api.reel25.com/api/v1/video-analysis/{video_id}',
headers={'Authorization': 'Bearer reel25_sk_...'}
)
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "completed",
"transcript": "Stop doing time zone math in your head. Meet HoverTime...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." },
{ "start": 2.1, "end": 5.3, "text": "Meet HoverTime: The easiest way to convert time zones instantly." },
{ "start": 5.3, "end": 8.0, "text": "Just hover over a time in your email or Slack, and boom it's in your local time." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": "Product demo showcasing HoverTime, a browser extension that converts time zones on hover.",
"category": "Software Apps",
"matchedTopics": ["time zones", "productivity", "browser extension"],
"format": "Product Demo Review",
"hookStyle": "Pain Point Callout",
"hookPhrase": "Stop doing time zone math in your head",
"visualHook": "Text appearing on white background with timezone abbreviations",
"textHook": "EST PST HoverTime",
"audioHook": "Stop doing time zone math in your head",
"hookStartsAt": "0.0",
"structure": [
{ "start": 0.0, "end": 2.0, "type": "Hook", "description": "Pain point callout about timezone math." },
{ "start": 2.0, "end": 8.0, "type": "Demo", "description": "Screen recording showing HoverTime in Gmail and Slack." },
{ "start": 8.0, "end": 12.0, "type": "Solution", "description": "Highlights no tabs, no Google, no math." },
{ "start": 12.0, "end": 15.0, "type": "CTA", "description": "Direct URL call-to-action." }
],
"primaryTrigger": "Relief & Simplicity",
"retentionPattern": "Step Sequence",
"shareDriver": "Utility for Others",
"saveDriver": "Tool Reference",
"hasCta": true,
"ctaType": "Direct URL",
"ctaText": "Get HoverTime now: seconds.ae/hovertime",
"ctaShownAt": "14.0",
"ctaDestinationUrl": "https://seconds.ae/hovertime",
"productType": "SaaS",
"brandFirstShownAt": "14.0",
"brandsMentioned": [
{ "name": "Seconds", "url": "https://seconds.ae" }
],
"productsMentioned": [
{ "name": "HoverTime", "type": "SaaS", "url": "https://seconds.ae/hovertime", "appStoreUrl": null }
],
"ugcFit": "Strong UGC fit",
"ugcConfidence": 95,
"ugcReason": "Clean screen recording format makes it easy to replicate for any SaaS product.",
"onScreenSetup": "No People",
"genderPresentation": "Not Applicable",
"ageRange": "Not Applicable",
"editingStyle": "Screen Recording",
"recordingType": "Screencast",
"hasSubtitles": false,
"hasTextOverlays": true,
"musicType": "Original Sound",
"hasVoiceover": true,
"hasBackgroundMusic": false,
"modelUsed": "whisper-1 + qwen/qwen3.5-flash-02-23",
"tokensIn": 14113,
"tokensOut": 3338,
"costUsd": "0.018423",
"processingTimeMs": 25045,
"error": null,
"createdAt": "2026-03-22T08:00:00.000Z",
"updatedAt": "2026-03-22T08:00:25.000Z"
}
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "transcribed",
"transcript": "Stop doing time zone math in your head...",
"transcriptSegments": [
{ "start": 0.0, "end": 2.1, "text": "Stop doing time zone math in your head." }
],
"transcriptDuration": "15s",
"transcriptLanguage": "en",
"summary": null,
"category": null,
"format": null,
"hookStyle": null
}
}
{
"data": null
}
{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"videoId": "550e8400-e29b-41d4-a716-446655440000",
"status": "failed",
"error": "Qwen: Empty response from OpenRouter",
"transcript": "Stop doing time zone math...",
"transcriptDuration": "15s"
}
}
Response fields
Status & Transcript
| Field | Type | Description |
|---|---|---|
status | string | pending | downloading | transcribed | analyzing | completed | failed |
transcript | string | null | Full Whisper transcription text |
transcriptSegments | array | null | Timestamped segments: [{start, end, text}] |
transcriptDuration | string | null | Video duration, e.g. "45s" |
transcriptLanguage | string | null | ISO language code, e.g. "en", "ru" |
Classification
| Field | Type | Description |
|---|---|---|
summary | string | null | 1-2 sentence summary of the video |
category | string | null | Vertical category (e.g. "Software Apps", "Beauty Fashion") |
matchedTopics | string[] | null | 2-5 topic tags for search/filtering |
format | string | null | Video format (e.g. "Product Demo Review", "Talking Head") |
Hook Analysis
| Field | Type | Description |
|---|---|---|
hookStyle | string | null | Hook type (e.g. "Pain Point Callout", "Curiosity Gap") |
hookPhrase | string | null | Exact spoken/displayed hook phrase |
visualHook | string | null | Description of the visual hook element |
textHook | string | null | On-screen text overlay in first 3 seconds |
audioHook | string | null | First spoken words |
hookStartsAt | string | null | Timestamp in seconds (e.g. "0.0") |
Video Structure
| Field | Type | Description |
|---|---|---|
structure | array | null | 2-6 segments: [{start, end, type, description}]. Types: Hook, Demo, Story, CTA, Problem, Solution, Transition, Punchline, B-Roll, Intro, Outro, Testimonial |
Virality Signals
| Field | Type | Description |
|---|---|---|
primaryTrigger | string | null | e.g. "Aspiration", "Humor & Relatability" |
retentionPattern | string | null | e.g. "Step Sequence", "Story Arc", "Loop Seamless" |
shareDriver | string | null | e.g. "Utility for Others", "Identity Signaling" |
saveDriver | string | null | e.g. "Tutorial Reference", "Shopping List" |
CTA
| Field | Type | Description |
|---|---|---|
hasCta | boolean | null | Whether a CTA was detected |
ctaType | string | null | "Link in Bio", "Direct URL", "Comment Keyword", "None", etc. |
ctaText | string | null | Exact CTA text or spoken phrase |
ctaShownAt | string | null | Timestamp in seconds |
ctaDestinationUrl | string | null | URL mentioned or shown on screen |
Monetization
| Field | Type | Description |
|---|---|---|
productType | string | null | "SaaS", "Ecommerce Physical", "Course Coaching", etc. |
brandFirstShownAt | string | null | Timestamp in seconds |
brandsMentioned | array | null | [{name, url}] |
productsMentioned | array | null | [{name, type, url, appStoreUrl}] |
UGC Assessment
| Field | Type | Description |
|---|---|---|
ugcFit | string | null | "No UGC fit", "Weak UGC fit", "Moderate UGC fit", "Strong UGC fit" |
ugcConfidence | integer | null | 0-100 confidence score |
ugcReason | string | null | Explanation of the UGC assessment |
Creator Profile
| Field | Type | Description |
|---|---|---|
onScreenSetup | string | null | "Solo", "Duo", "Group", "No People", "Voiceover Only" |
genderPresentation | string | null | "Male Presentation", "Female Presentation", "Mixed", "Not Applicable" |
ageRange | string | null | "Child", "Teen", "Young Adult", "Adult", "Middle-Aged", "Senior", "Not Applicable" |
Visual & Audio
| Field | Type | Description |
|---|---|---|
editingStyle | string | null | "Jump Cut", "Screen Recording", "Raw Unedited", etc. |
recordingType | string | null | "Camera", "Screencast", "Mixed", "AI Generated", etc. |
hasSubtitles | boolean | null | Whether subtitles are present |
hasTextOverlays | boolean | null | Whether text overlays are used |
musicType | string | null | "Original Sound", "Trending Audio", "Voiceover Only", etc. |
hasVoiceover | boolean | null | Whether voiceover is present |
hasBackgroundMusic | boolean | null | Whether background music is present |
Was this page helpful?