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

API reference

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

For agents

  • Agent guide
  • Data model
  • MCP & tooling

Platform

  • Brand
  • Changelog
  • Support
DocsAPI reference

Content Groups

Link the same logical content across platforms and read its combined, cross-platform stats.

PreviousVideosNextCampaigns

On this page

  • Content group fields
  • GET /api/v2/content-groups
  • Query parameters
  • POST /api/v2/content-groups
  • Body
  • GET /api/v2/content-groups/{id}
  • PATCH /api/v2/content-groups/{id}
  • Body
  • DELETE /api/v2/content-groups/{id}
  • GET /api/v2/content-groups/{id}/stats
  • Response
  • Response fields

A content group links the same logical piece of content across platforms — for example, the same video posted to both TikTok and Instagram — so its combined performance can be viewed together. A video can belong to at most one content group.

Content group fields

FieldTypeDescription
iduuidContent group ID
project_iduuidProject this group belongs to
org_iduuidOwning organization ID
titlestringGroup title
notesstring | nullFreeform notes
created_byuuid | nullUser who created the group
video_idsarray of uuidVideos that are members of the group
created_atISO 8601When the group was created
updated_atISO 8601Last update

GET /api/v2/content-groups

List content groups in your organization.

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

Query parameters

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

Returns a paginated array of content group objects.


POST /api/v2/content-groups

Create a content group. Requires the write scope. Optionally seed it with member videos.

bash
curl -X POST \
  -H "Authorization: Bearer tga_<key>" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "project_id": "<uuid>",
    "title": "Launch teaser",
    "notes": "Same clip on TikTok + Reels",
    "video_ids": ["<videoUuid1>", "<videoUuid2>"]
  }' \
  "https://www.trackagoat.com/api/v2/content-groups"

Body

FieldTypeDefaultDescription
project_iduuidrequiredProject to create the group in.
titlestringrequiredGroup title (1–200 chars).
notesstring | null—Freeform notes.
video_idsarray of uuid[]Videos to add (up to 200). Must belong to the same project.

A video can live in only one group. Any video_ids that already belong to another group are skipped — the returned video_ids reflect which videos were actually attached.

Returns 201 with the created group, or 404 if the project isn't found.


GET /api/v2/content-groups/

Get a single content group.

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

Returns a content group object. 404 if not found.


PATCH /api/v2/content-groups/

Rename, edit notes, or add/remove member videos. 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 '{
    "title": "Launch teaser (final)",
    "add_video_ids": ["<videoUuid3>"],
    "remove_video_ids": ["<videoUuid1>"]
  }' \
  https://www.trackagoat.com/api/v2/content-groups/<uuid>

Body

FieldTypeDescription
titlestringRename the group (1–200 chars).
notesstring | nullEdit notes. Pass null to clear.
add_video_idsarray of uuidVideos to add to the group (up to 200).
remove_video_idsarray of uuidVideos to remove from the group (up to 200).

Returns the updated content group object. 404 if not found.


DELETE /api/v2/content-groups/

Delete a content group. The member videos themselves are not deleted — they are simply unlinked. Requires the write scope.

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

Returns { "deleted": true }.


GET /api/v2/content-groups//stats

Get combined stats for a content group: current metrics summed across every member video, plus a per-platform breakdown.

bash
curl -H "Authorization: Bearer tga_<key>" \
  https://www.trackagoat.com/api/v2/content-groups/<uuid>/stats

Response

json
{
  "data": {
    "video_count": 3,
    "totals": {
      "view_count": 1250000,
      "like_count": 84000,
      "comment_count": 3100,
      "share_count": 900
    },
    "by_platform": {
      "tiktok": { "video_count": 2, "view_count": 1000000, "like_count": 





Response fields

FieldTypeDescription
video_countnumberNumber of videos in the group
totalsobjectSummed view_count, like_count, comment_count, share_count across the group
by_platformobjectKeyed by platform; each value carries video_count plus the same four metric totals for that platform

A group with no member videos returns video_count: 0, zeroed totals, and an empty by_platform.

Videos

List videos and filter by content group.

Creators & Accounts guide

How the multi-platform model works.

70000
,
"comment_count"
:
2500
,
"share_count"
:
800
},
"instagram": { "video_count": 1, "view_count": 250000, "like_count": 14000, "comment_count": 600, "share_count": 100 }
}
},
"error": null,
"meta": null
}