---
title: "Get video details"
method: GET
path: "/videos/{platform}/{platformVideoId}"
tags: ["Video Analytics"]
---

# Get video details

`GET /videos/{platform}/{platformVideoId}`

## Request

- Base URL: `https://viral.app/api/v1`
- URL: `https://viral.app/api/v1/videos/{platform}/{platformVideoId}`
- Auth: API key in header `x-api-key`

Retrieves comprehensive video details including metadata (title, caption, hashtags, music), analytics metrics (views, likes, engagement rate), account information, and content properties. Includes platform-specific data and computed performance indicators, and the creative the video is a copy of (the same video posted to other platforms), when it is in one.

## Path parameters

- `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
- `platformVideoId` string, required: Native platform video id found in the URL of the video

## Response `200`

OK

- object, nullable: Comprehensive video details including metadata, analytics, and account information
  - `id` string, required
  - `platformVideoId` string, required
  - `platform` string, required
  - `accountUsername` string, required
  - `platformAccountId` string, required
  - `accountDisplayName` string, nullable, required
  - `accountProfilePictureUrl` string, nullable, required
  - `caption` string, nullable, required
  - `hashtags` string[], required
  - `contentType` string, required
  - `videoIndex` number, required
  - `thumbnailUrl` string, nullable, required
  - `musicId` string, nullable, required
  - `musicTitle` string, nullable, required
  - `musicArtist` string, nullable, required
  - `musicAlbum` string, nullable, required
  - `musicPlayUrl` string, nullable, required
  - `musicCoverUrl` string, nullable, required
  - `isOriginalMusic` number, nullable, required
  - `durationSeconds` number, nullable, required
  - `viewCount` number, nullable, required
  - `organicViewCount` number, nullable
  - `paidViewCount` number, nullable
  - `likeCount` number, nullable, required
  - `commentCount` number, nullable, required
  - `shareCount` number, nullable, required
  - `bookmarkCount` number, nullable, required
  - `engagementRate` number, nullable, required
  - `viralityFactor` number, nullable, required
  - `publishedDate` string, required
  - `publishedAt` string, required
  - `loadAt` string, required
  - `orgAccountId` string, required: Organization account ID with orgacc_ prefix. Not the same as platform account ID.
  - `orgVideoId` string, nullable: Organization video ID with orgvid_ prefix
  - `orgAccountMaxVideos` integer, nullable: Tracking limit (max_videos) of the account that owns this video; 0 means the account is paused or only holds individually tracked videos
  - `orgCreatorId` string, nullable, required: Organization creator ID with orgcre_ prefix
  - `access` 'own' | 'briefSample': How the caller may see this video: 'own' for the organization's own tracked content (or, for a creator, a video on one of their assigned accounts); 'briefSample' for a creator viewing a sample video of a campaign brief they were given — a reference view without assignment, paid-media, exclusion, or tracking details
  - `archivedRawVideoUrl` string, nullable: Public URL of the video's archived raw file in viral.app storage, when the media pipeline has stored one (the detail view's native 'Video Player' toggle); null otherwise
  - `archivedThumbnailUrl` string, nullable: Public URL of the archived thumbnail (the native player's poster), if stored
  - `archivedSlideshow` object, nullable: Stored frames and sound track of a slideshow (a TikTok photo post, contentType 'slideshow'), which has no video file: the frames' public URLs in post order plus the sound track's, when the media pipeline has stored them (the detail view's frame carousel); null for videos, whenever archivedRawVideoUrl is set, and when nothing is stored. The stored files expire, so read the URLs fresh instead of saving them
    - `frameUrls` string[], required: Public URLs of the slideshow's frames (JPEG), in post order
    - `audioUrl` string, nullable, required: Public URL of the slideshow's sound track, if one was stored
  - `isCompetitor` boolean: Whether the tracked account is marked as a competitor
  - `isExcluded` boolean: Whether this video is excluded from analytics: its metrics are omitted from dashboards, aggregate totals, and exports
  - `tracking_status` union, required: Tracking status indicator: 1 for actively tracked videos, 0 for retained data no longer actively tracked
    - unknown
    - unknown
  - `adSpendByCurrency` object: This organization's total Spark Ads spend on this video, keyed by advertiser currency — one video can be boosted by several ads and advertisers
  - `creative` object, nullable: The creative this video is a copy of: the same video posted to several platforms, grouped in Analytics → Videos → Creatives. Only live creatives (active or suggested) are returned; null when the video is in none, and on a creator's own view. Read-only: linking copies, reviewing suggestions and a creative's tags are managed in the app
    - `id` string, required: The creative's id (orgvgrp_…)
    - `status` 'active' | 'suggested', required: active: confirmed by a person or matched automatically with high confidence; analytics and campaigns that count creatives treat its copies as one video. suggested: likely copies nobody has reviewed yet; they count as separate videos everywhere until someone confirms the creative in the app
    - `copies` object[], required: Every live copy of the creative, this video included, one per platform, in platform order (TikTok, Instagram, YouTube, Facebook, Snapchat). Pass a copy's platform and platformVideoId to get_video for its numbers
      - `platform` 'facebook' | 'instagram' | 'tiktok' | 'youtube' | 'snapchat', required: Social media platform (facebook, instagram, tiktok, youtube, snapchat)
      - `platformVideoId` string, required: Native platform video id found in the URL of the video

## Other responses

- `400`: 400
- `401`: 401
- `402`: 402
- `404`: 404
- `408`: 408
- `429`: 429
- `500`: 500

---

[API](https://skmtc.dev/viral/apis/viral-app-api.md) · [All operations](https://skmtc.dev/viral/apis/viral-app-api/llms.txt) · [OpenAPI document](https://skmtc.dev/viral/apis/viral-app-api/revisions/31e97fa79ef1?raw)
