trackagoat logotrackagoat/Docs

Command Palette

Search for a command to run...

Getting started

  • Welcome
  • Quickstart
  • Core concepts

Guides

  • Creators & Accounts
  • Creators
  • Instagram tracking
  • YouTube tracking
  • Videos
  • Campaigns
  • Creator Goals
  • Tracking Inbox
  • Content calendar
  • How scraping works
  • Analytics & metrics
  • Similar creator pools
  • Over-posting & suppression
  • Program Health
  • Sentiment Radar
  • API keys
  • Limits & plan tiers
  • Notifications
  • Payouts
  • Shareable creator pages
  • Conversions

API reference

  • Overview
  • Authentication
  • Errors
  • Projects
  • Creators
  • Accounts
  • Share Links
  • Videos
  • Content Groups
  • Campaigns
  • Analytics
  • Aggregate Analytics
  • Goal Compliance
  • Payouts
  • Conversions
  • Schema

For agents

  • Agent guide
  • Data model
  • MCP & tooling

Platform

  • Brand
  • Changelog
  • Support
DocsAPI reference

Videos

Add, list, update, and delete tracked videos. Trigger scrapes and manage tracking status.

PreviousShare LinksNextContent Groups

On this page

  • GET /api/v2/videos
  • Request
  • Query parameters
  • Response fields
  • POST /api/v2/projects/{projectId}/videos
  • PATCH /api/v2/videos/{id}
  • Body
  • DELETE /api/v2/videos/{id}
  • POST /api/v2/videos/{id}/scrape
  • POST /api/v2/videos/{id}/tracking-disable
  • POST /api/v2/projects/{projectId}/videos/bulk-tracking-disable
  • Video time-series analytics

Since Trackagoat 2.0, videos are multi-platform. Each video carries a platform, belongs to an account, and records the platform's own platform_video_id. Add videos from TikTok, Instagram, or YouTube — the platform is auto-detected from the URL.

GET /api/v2/videos

List tracked videos in your organization. Videos with tracking_status = "excluded" are never returned.

Request

bash
curl -H "Authorization: Bearer tga_<key>" \
  "https://www.trackagoat.com/api/v2/videos?project_id=<uuid>&platform=instagram"

Query parameters

ParameterTypeDefaultDescription
project_iduuid:Filter to a specific project
creator_iduuid:Filter to a specific creator
account_iduuid:Filter to a specific account
platformtiktok | instagram | youtube:Filter to one platform
content_group_iduuid:Filter to videos in a specific content group

Response fields

FieldTypeDescription
iduuidVideo ID
project_iduuidProject this video belongs to
creator_iduuid | nullCreator this video belongs to (null for direct adds)
account_iduuid | nullAccount this video was posted from (null for direct adds)
platformtiktok | instagram | youtube

POST /api/v2/projects//videos

Add one video URL or a bulk array (up to 50). Requires the write scope. The platform and video ID are auto-detected from the URL. Dispatches a video-stats scrape automatically.

bash
curl -X POST \
  -H "Authorization: Bearer tga_<key>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"url": "https://www.tiktok.com/@charlidamelio/video/7123456789"}' \
  "https://www.trackagoat.com/api/v2/projects/<projectId>/videos"

Bulk (up to 50), mixing platforms freely:

bash
-d '{"videos": [{"url": "https://www.tiktok.com/@user/video/111"}, {"url": "https://www.instagram.com/reel/ABC123/"}]}'
HTTPCause
201Video(s) added.
402Plan limit reached.
422Could not detect the platform / video ID from the URL.

PATCH /api/v2/videos/

Update a video's metadata. At least one field is required. Requires the write scope.

bash
curl -X PATCH \
  -H "Authorization: Bearer tga_<key>" \
  -H "Content-Type: application/json" \
  -d '{"readme": "Strong performance. Boosted by trending audio.", "tracking_status": "included"}' \
  https://www.trackagoat.com/api/v2/videos/<uuid>

Body

FieldTypeDescription
titlestringOverride the video title.
descriptionstringThe post's caption. Editable, but normally set from the platform.
readmestring | nullTeam notes / agent context (Markdown). Pass null to clear.
tracking_statusstringOne of auto_tracked, pending_review, included, excluded, direct_add.

DELETE /api/v2/videos/

Permanently delete a video. Requires the write scope.

bash
curl -X DELETE \
  -H "Authorization: Bearer tga_<key>" \
  https://www.trackagoat.com/api/v2/videos/<uuid>

Returns { "deleted": true }.


POST /api/v2/videos//scrape

Trigger a manual video-stats scrape. Requires the write scope.

bash
curl -X POST \
  -H "Authorization: Bearer tga_<key>" \
  https://www.trackagoat.com/api/v2/videos/<uuid>/scrape

The response echoes { video_id, job_id }. Returns 429 if the daily scrape limit is exceeded.


POST /api/v2/videos//tracking-disable

Disable tracking for a video without deleting it. Requires the write scope.

bash
curl -X POST -H "Authorization: Bearer tga_<key>" \
  https://www.trackagoat.com/api/v2/videos/<uuid>/tracking-disable

Use /tracking-enable to re-enable, and /tracking-unexempt to clear the age-rule exemption flag. Each returns the video's tracking flags: { id, tracking_disabled, tracking_disabled_at, tracking_disabled_reason, tracking_exempted }.


POST /api/v2/projects//videos/bulk-tracking-disable

Disable tracking for up to 200 videos in one call. Requires the write scope.

bash
curl -X POST \
  -H "Authorization: Bearer tga_<key>" \
  -H "Content-Type: application/json" \
  -d '{"video_ids": ["<uuid1>", "<uuid2>"]}' \
  "https://www.trackagoat.com/api/v2/projects/<projectId>/videos/bulk-tracking-disable"

Use /bulk-tracking-enable to re-enable. Pass "exempt": true to also mark videos as exempt from auto-expiry.


Video time-series analytics

There is no per-video stats endpoint. Use the unified Analytics endpoint with entity=video for view, engagement, and growth time-series.

bash
# Daily new views for a video
curl -H "Authorization: Bearer tga_<key>" \
  "https://www.trackagoat.com/api/v2/analytics?entity=video&entity_id=<uuid>&metric=views&mode=new&granularity=day"
 
# Engagement rate (derived)
curl -H "Authorization: Bearer tga_<key>" \
  "https://www.trackagoat.com/api/v2/analytics?entity=video&entity_id=<uuid>&metric=engagement_rate_by_views&mode=rate"

To view combined stats for the same content across platforms, group the videos and read content group stats.

engagement_rate_by_followers is not supported for video entities — use a creator or campaign entity instead. See the Analytics API reference for the full metric and parameter list.

limitnumber50Items per page (max 100)
cursorstring:Pagination cursor
Platform the video is on
platform_video_idstringThe platform's internal video ID
urlstringFull video URL
titlestring | nullVideo title (when available from the platform)
descriptionstring | nullThe post's caption as posted on the platform
readmestring | nullTeam notes / agent context — Markdown notes (rendered in the Notes tab)
metadataobjectAgent-writable structured data
thumbnail_urlstring | nullProxied thumbnail URL
view_countnumberCurrent view count (latest snapshot)
like_countnumberCurrent like count
comment_countnumberCurrent comment count
share_countnumberCurrent share count
tracking_statusstringOne of: auto_tracked, pending_review, included, excluded, direct_add
posted_atISO 8601 | nullWhen the video was originally posted on the platform
last_scraped_atISO 8601 | nullWhen stats were last refreshed
created_atISO 8601When video was added to trackagoat
updated_atISO 8601Last update