trackagoat logotrackagoat/Docs

Getting started

  • Welcome
  • Quickstart
  • Core concepts

Guides

  • Creators
  • 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

API reference

  • Overview
  • Authentication
  • Errors
  • Projects
  • Creators
  • Videos
  • Campaigns
  • Analytics
  • Aggregate Analytics
  • Payouts
  • Schema

For agents

  • Agent guide
  • Data model
  • MCP & tooling

Platform

  • Brand
  • Changelog
  • Support
DocsAPI reference

Videos

List tracked videos and update video notes.

PreviousCreatorsNextCampaigns

On this page

  • GET /api/v1/videos
  • Request
  • Query parameters
  • Response fields
  • PATCH /api/v1/videos/{id}
  • Request
  • Body
  • Derived metrics — GET /api/v1/videos/{id}/stats?metric=
  • Additional query parameters
  • Supported metrics for video
  • Response (metric= present)
  • Cohort velocity — GET /api/v1/videos/{id}/stats?cohort=1
  • Additional query parameter
  • Response additions

GET /api/v1/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/v1/videos?project_id=<uuid>"

Query parameters

ParameterTypeDefaultDescription
project_iduuid—Filter to a specific project
creator_iduuid—Filter to a specific creator
limitnumber50Items per page (max 100)
cursorstring—Pagination cursor

Response fields

FieldTypeDescription
iduuidVideo ID
project_iduuidProject this video belongs to
creator_iduuid | nullCreator this video belongs to (null for direct adds)
tiktok_video_idstringTikTok's internal video ID
urlstringFull TikTok URL
title

PATCH /api/v1/videos/

Update a video's readme field.

Request

bash
curl -X PATCH \
  -H "Authorization: Bearer tga_<key>" \
  -H "Content-Type: application/json" \
  -d '{"readme": "Strong performance driven by trending audio. Boosted by creator\u2019s pinned post."}' \
  https://www.trackagoat.com/api/v1/videos/<uuid>

Body

FieldTypeDescription
readmestring | nullMarkdown notes. Pass null to clear.

Derived metrics — GET /api/v1/videos//stats?metric=

When metric= is specified, the endpoint returns a computed time-series instead of the legacy shape.

Additional query parameters

ParameterTypeDefaultDescription
metricstring—Derived metric ID. Omit for legacy response.
granularitydaydayCurrently day-only; other values return 400.
tzIANA stringorg settingTimezone for day bucketing.
base_metricstring—Required for growth_rate_pop.

Supported metrics for video

Metric IDunitNotes
engagement_rate_by_viewspercent(likes+comments+shares+saves)/views×100
growth_rate_poppercentΔ% from prior day. Requires base_metric=views|likes|comments|shares|saves.

engagement_rate_by_followers is not supported for video entities — use a creator or campaign endpoint instead.

Response (metric= present)

json
{
  "data": {
    "series": [
      {
        "metric": "engagement_rate_by_views",
        "unit": "percent",
        "mode": "rate",
        "granularity": "day",
        "timezone": "America/New_York",
        "points": [
          { "bucket_start": "2026-01-01", "value": 6.5 },
          { 










value is null for divide-by-zero or missing data. The first growth_rate_pop point is always null.


Cohort velocity — GET /api/v1/videos//stats?cohort=1

Add ?cohort=1 to the legacy stats endpoint to overlay two cohort reference series in the cohort response field. This is only meaningful when used without metric= (the legacy shape).

Additional query parameter

ParameterTypeDefaultDescription
cohortbooleanfalseWhen 1, include creator avg and org avg velocity cohorts.

Response additions

json
{
  "data": {
    "velocity": [{ "day_number": 0, "views_gained": 5200 }],
    "cohort": {
      "creator_avg": [
        { "day_number": 0, "avg_views_gained": 3800, "sample_size": 8 }
      ],
      "org_avg": [
        { "day_number": 0, "avg_views_gained": 



cohort is omitted when ?cohort=1 is not passed or when the video has no creator_id.

sample_size is the number of distinct videos contributing to each average at that day number. It can decrease at higher day numbers as fewer videos have that many days of history.

string | null
Video title (when available from TikTok)
descriptionstring | nullTeam notes / agent context
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 TikTok
last_scraped_atISO 8601 | nullWhen stats were last refreshed
created_atISO 8601When video was added to trackagoat
updated_atISO 8601Last update
"bucket_start"
:
"2026-01-02"
,
"value"
:
null
}
]
}
],
"baselines": [
{ "entity_id": "video-uuid", "snapshot_at": "2026-01-01T08:00:00Z", "reason": "video_added" }
],
"first_data_date": "2026-01-01"
},
"error": null,
"meta": { "cached": false }
}
1100
,
"sample_size"
:
41
}
]
}
}
}