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
  • Goal Compliance
  • Payouts
  • Schema

For agents

  • Agent guide
  • Data model
  • MCP & tooling

Platform

  • Brand
  • Changelog
  • Support
DocsAPI reference

Goal Compliance

Per-creator, per-goal compliance results with data advisories.

PreviousAggregate AnalyticsNextPayouts

On this page

  • Overview
  • GET /api/v1/projects/:projectId/goal-compliance
  • Request
  • Query parameters
  • Response
  • Status values
  • The advisory object
  • Advisory flags
  • Advisory context fields
  • Relationship to aggregate endpoint

Overview

The goal compliance endpoint returns per-creator, per-goal progress results for a project. Each result includes:

  • The goal's current actual value and target
  • A status (on_track, behind_pace, at_risk, missed, completed)
  • An advisory block explaining why the displayed progress may not be final

For a project-wide roll-up (counts only), use /aggregate/goal-compliance instead.


GET /api/v1/projects/:projectId/goal-compliance

Returns compliance results for all active creators in a project, grouped by creator.

Request

bash
curl -H "Authorization: Bearer tga_<key>" \
  "https://www.trackagoat.com/api/v1/projects/<projectId>/goal-compliance"

Query parameters

ParameterTypeDefaultDescription
creator_idUUID—Restrict results to a single creator
perioddaily | weekly | monthlyallFilter to goals of this period type
reference_dateYYYY-MM-DDtoday (org tz)Evaluate goals as of this date

Response

json
{
  "data": [
    {
      "creator": {
        "id": "uuid",
        "tiktok_handle": "sarah.b8520",
        "display_name": "SarahBD",
        "avatar_url": "https://..."
      },
      "compliance": [
        {
          "goal": {
            "id": "uuid",
            "creator_id": "uuid",
            "project_id": 




































Status values

StatusMeaning
on_trackProjected to meet or exceed target by period end
behind_paceBelow projected pace but above the 70% at-risk threshold
at_riskSignificantly behind pace (below 70% of projected)
completedPeriod has ended and target was met
missedPeriod has ended and target was not met

The advisory object

Every compliance result includes an advisory block. When has_advisory is false, the displayed progress is likely final and the object can be ignored. When true, the messages array contains one human-readable explanation per active flag.

Advisory flags

FieldTypeCondition
period_in_progressbooleanCurrent wall-clock time is before the period end. Actual counts will grow until period close.
period_recently_endedbooleanPeriod ended within the last 48 hours. Late-period posts may still be processing through scrape.
scrape_stalebooleanCreator's stats scrape is turning stale or overdue. Views, engagement, or follower counts may undercount until the next scrape runs.
not_yet_startedbooleanThe goal has a start_date set in the future. No data has accrued yet.
has_advisoryboolean

Advisory context fields

FieldTypeDescription
period_startISO timestampUTC start of the current period
period_endISO timestampUTC end of the current period
hours_until_period_endnumber | nullHours remaining until period closes; null if period already ended
hours_since_period_endnumber | nullHours elapsed since period closed; null if period is still open
scrape_freshnessobject | null

Relationship to aggregate endpoint

Use caseEndpoint
Dashboard summary (counts only)GET /api/v1/analytics/aggregate/goal-compliance
Per-creator, per-goal detail with advisoriesGET /api/v1/projects/:id/goal-compliance
Single creator's goalsGET /api/v1/projects/:id/goal-compliance?creator_id=<uuid>
"uuid"
,
"metric": "posts",
"period": "weekly",
"target_value": 15,
"start_date": null,
"end_date": null,
"is_active": true
},
"target": 15,
"actual": 11,
"percentage": 73,
"status": "behind_pace",
"advisory": {
"period_in_progress": true,
"period_recently_ended": false,
"scrape_stale": false,
"not_yet_started": false,
"has_advisory": true,
"period_start": "2026-05-18T05:00:00.000Z",
"period_end": "2026-05-25T04:59:59.999Z",
"hours_until_period_end": 89.4,
"hours_since_period_end": null,
"scrape_freshness": null,
"goal_start_date": null,
"messages": [
"Period in progress — closes in 3 days. Final actual may be higher."
]
}
}
]
}
],
"error": null,
"meta": {
"org_tz": "America/Chicago",
"reference_date": "2026-05-20"
}
}
true when period_recently_ended is true. Drives the UI caution icon. The other flags are available for programmatic use but do not set has_advisory.
Full freshness summary (bucket, age, tooltip) when scrape_stale is true; null otherwise
goal_start_dateYYYY-MM-DD | nullThe goal's start_date, when not_yet_started is true
messagesstring[]One pre-formatted explanation string per active flag, safe to display directly