metrix / docs TikTok

API · lookup · profiles

Find anyone. Then read their story.

Search across everything we track — hashtags, creators, sounds — then drill into any creator: their history, growth curve, videos, and which niches they actually fit.

02 Neighborhood

Once you have an entity, its related list answers "what else belongs with it" across hashtags, creators, sounds, and videos.

co-occurrence — how often two entities appear together on the same videos, often enough to matter. Two hashtags can keep showing up on the same clips; a creator can keep using a sound; a sound can keep riding a hashtag.

GET /api/v1/related/{entity_type}/{entity_id} Entities that co-occur with this one — mixed types, ranked by strength.

{entity_type} is one of hashtag, creator, sound, video. Results intentionally mix entity types — a hashtag's related list can include the creators and sounds that ride it, not just other hashtags. match_score is the raw co-occurrence strength (NPMI); metrics.momentum is the same number ×100, purely for display.

curl -s "https://api.metrix.ac/api/v1/related/hashtag/food?limit=4" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "query": "hashtag:food", "total": 4, "results": [
    { "entity_type": "creator", "entity_id": "tastebuds_nyc", "match_score": 0.726, // ← creators AND sounds mixed with hashtags here
      "metrics": { "momentum": 72.59 } },
    { "entity_type": "sound", "entity_id": "7273614838022178818", "match_score": 0.6646,
      "metrics": { "momentum": 66.46 } }
  ]
}

03 Creator deep-dive

Four views of one creator: who they are, how they've grown, how fast, and what they've posted. Examples below are all live-captured against cookingwithshereen, a real creator in the food_cooking niche.

GET /api/v1/creators/{creator_id}/profile Profile + aggregate metadata — the landing card for any creator.

Aggregated from every video we've discovered for this creator: view/engagement totals, posting cadence, top sounds, top hashtags.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/profile" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator": {
    "creator_id": "cookingwithshereen", "nickname": "Shereen Pavlides", "verified": true,
    "follower_count": null, "follower_count_known": false, // ← see note below,
    "video_count": 26, "total_views": 38570026, "avg_views": 1483463,
    "engagement_rate": 0.0032,
    "posting_frequency": { "daily_avg": 1.86, "last_7d": 2, "last_30d": 26 },
    "top_sounds": [{ "sound_id": "6847961051430914050", "title": "Mambo No. 5", "usage_count": 2 }]
  },
  "top_hashtags": ["cookingwithshereen", "foodies", "italianfood", "chicken", "homemade", "recipe"]
}

follower_count_known flags whether TikTok actually included a follower count on the responses we captured — it strips that field from roughly 86% of unauthenticated API replies, so null here is the common case, not a data gap on our end. Trust follower_count_known: true before trusting a non-null follower_count.

GET /api/v1/creators/{creator_id}/history Chartable snapshot time-series: followers/views/likes/shares over time.

days (default 30, 1–365) controls the lookback window. Points come from periodic re-crawls of the creator's profile, not every single video snapshot.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/history?days=30" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator_id": "cookingwithshereen",
  "points": []
}

Real, live-captured, and genuinely empty for this creator — she has no periodic profile re-crawl snapshots yet, only per-video discovery data (which the /videos and /profile endpoints below draw on instead). An unknown creator_id returns 404; a known creator with no snapshot history returns 200 with points: [] like this — the two cases look different, so check for the 404 rather than assuming an empty array means "not found."

GET /api/v1/creators/{creator_id}/velocity Growth velocity — follower and view climb rates.

Follower growth is computed on read from the same snapshot history as /history above (windows: 24h, 7d, 30d); views reuses the entity-velocity rows also used by the trending/niches pages. engagement is always null for now — that computation hasn't shipped yet.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/velocity" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator_id": "cookingwithshereen",
  "follower": { "24h": null, "7d": null, "30d": null },
  "views": null,
  "engagement": null,
  "data_through": null
}

All-null here follows directly from the empty /history above — no snapshot rows means no growth windows to compute. Pick a creator with an active velocity row (visible via size_tier on the niches/trending pages) to see populated numbers.

data_through is present in the live response above but not yet declared on this worktree's CreatorVelocityResponse schema (src/api/routes/creators.py:101-105 only declares creator_id/follower/views/engagement) — likely the deployed API is a step ahead of this branch. Documented as observed since it's what a real client actually receives; worth reconciling in code separately.

GET /api/v1/creators/{creator_id}/videos Every video of theirs we've discovered, with latest metrics.

limit/offset for paging, sort (discovered_at default, also views, likes), min_views to filter out low performers.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/videos?limit=2" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator_id": "cookingwithshereen", "total": 27,
  "videos": [
    { "video_id": "7663193409607224589", "views": 123100, "likes": 9112, "shares": 529, "comments": 82,
      "sound_id": "7663193464833673998", "hashtags": ["cookingwithshereen", "foodies", "greenbeans"],
      "discovered_at": "2026-07-18T00:32:22Z", "source": "creator_profile",
      "relative_score": null, "is_overperforming": null }
  ]
}

relative_score/is_overperforming come back null when the creator has no row yet in the internal creators summary table this ratio is computed against — real for many creators found through discovery rather than a direct profile crawl.

04 Discovery

Two ways to place a creator relative to everyone else: who looks like them, and which niches they actually fit.

GET /api/v1/creators/{creator_id}/similar Similar creators by hashtag overlap — the quick "more like her."

Fast, unseeded similarity from shared hashtag usage. For a deeper, seeded version that also weighs velocity and niche affinity, see the Creator Recommendations page.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/similar?limit=3" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator_id": "cookingwithshereen", "total": 3,
  "results": [
    { "creator_id": "soflofoodies", "similarity_score": 0.1228, "shared_hashtag_count": 7,
      "shared_hashtags": ["baking", "chef", "food", "homemade", "italianfood"] },
    { "creator_id": "jacksdiningroom", "similarity_score": 0.0909, "shared_hashtag_count": 5,
      "shared_hashtags": ["cake", "food", "italianfood", "italy", "steak"] }
  ]
}
GET /api/v1/creators/{creator_id}/niche-fit Fit score across all niches — where does this creator actually belong?

fit_score blends hashtag_coverage (60%, share of the niche's hashtags this creator has used) and calibrated seed_affinity (40%, how close their content sits to the niche's seed topics). sound_coverage remains in the response as 0.0 for compatibility but does not affect the score until a sound-coverage source exists. Results are sorted by fit_score, and the top result is flagged is_primary: true.

curl -s "https://api.metrix.ac/api/v1/creators/cookingwithshereen/niche-fit" \
  -H "Authorization: Bearer $TM_API_KEY"
{
  "creator_id": "cookingwithshereen", "primary_niche": "food_cooking",
  "results": [
    { "topic_id": "food_cooking", "fit_score": 0.4089, "hashtag_coverage": 0.0154,
      "sound_coverage": 0.0, "seed_affinity": 0.9991, "is_primary": true }, // ← correctly lands her in food_cooking,
    { "topic_id": "sg_food_miami", "fit_score": 0.04, "hashtag_coverage": 0.0667,
      "sound_coverage": 0.0, "seed_affinity": 0.0, "is_primary": false }
  ]
}

Covers every niche in our taxonomy, not just the ones visible to your account — treat low fit_score topics past the primary as noise, not additional matches.

05 Creator suggestions

The frozen network-wide influence and collaboration rankings were retired. For live, model-relevant discovery, use GET /models/{model_id}/suggested-creators, which ranks creators by current niche affinity and excludes creators the model already follows.