Start tracking a target
/v1/trackersCreates a daily creator, hashtag, sound or advertiser Tracker and runs its first cycle immediately, so you have a baseline at once; it then joins the daily schedule. You have at most one Tracker per target: creating twice on the same target is idempotent: it returns 200 with the existing Tracker and created: false, is not a conflict, and is not charged. A deleted Tracker is final, so tracking its target again creates a new one. collection_ids also puts the Tracker in those Collections, checked before anything is fetched or charged. An advertiser cycle reads every Ad the Advertiser runs or ran and stores them with Snapshots and archived media; its Change Report lists new Ads, stopped Ads, Ads whose variant count grew, and new countries or placements. A hashtag cycle samples one page of the tag's videos (no platform reports a tag's totals) and writes a Snapshot of sample stats and the top 10 video ids; its Change Report fires when the sample's median views move 25% or more, or a video enters the top 10. A sound cycle (TikTok) reads the sound, whose video count is the platform's own, and one page of its videos, and writes a Snapshot of the video count, sample stats and the top 10 video ids; its Change Report fires when the video count rises 10% or more, or the most viewed video in the sample changes.
Price
The first cycle is charged on create: 6 credits for a creator, 3 credits for a hashtag, 6 credits for a sound, 30 credits for an advertiser, plus 20 credits per new video when intelligence is on (per new Ad, on its own Run, for an advertiser). Each later daily cycle costs the same. Nothing is charged when the target is already tracked.
Supports estimate=true: the reply is the price in Credits and whether it would be cached, with no Run created and nothing charged.
A cached result costs the same as a fresh one; cached says which you got.
Parameters
| Name | In | Type | Required | Default | Description |
|---|---|---|---|---|---|
estimate | query | boolean | Optional | — | Return { estimate_credits, cached, already_tracking, tracker_id, per_cycle } and change nothing: zero when the target is already tracked, else one cycle, the first. Nothing is created or charged. |
Request body
application/json
object
kindstringrequiredone ofcreator,hashtag,sound,advertisercreator,hashtag,soundoradvertiser(a Meta Advertiser).videois deprecated and refused with 400kind_deprecated.platformstringone oftiktok,instagram,youtube,metaRequired forcreator(TikTok; others are refused with 400unsupported_platform)hashtag(tiktokorinstagram) andsound(tiktok). Foradvertiseromit it or passmeta.targetstringrequiredlength at least 1creator: the handle.hashtag: the tag, with or without#(stored lowercased).sound: TikTok's sound id (the number at the end of atiktok.com/music/URL) or that URL.advertiser: the Facebook Page id, or a Page URL carrying it; a name works when only one Advertiser carries it, else 409advertiser_ambiguouswith candidates, free.intelligencebooleanAnalyse each new video (or new Ad) the cycle finds. OnadvertiserTrackers each new Ad is analysed and charged, whether computed or already stored; one whose analysis fails is not charged.collection_idsarray of stringAlso put the Tracker in these Collections, even when it already exists. Checked before anything is charged.
Responses
200 OK
{ tracker, created: false, run: null, change_report: null, collections } — you were already tracking that target. Not charged. With estimate=true, { estimate_credits, cached, already_tracking, tracker_id, per_cycle } instead.
any of 2 shapes
Option 1object
trackerobjectrequiredidstringrequiredkindstringrequiredone ofcreator,hashtag,sound,advertiser,videovideois deprecated (ADR 0024): existing Video Trackers keep working, new ones are refused with 400kind_deprecated.platformstringrequiredmetafor an advertiser Tracker.targetstringrequiredintelligencebooleanrequiredWhether each new video (or Ad) the cycle finds is analysed.statestringrequiredone ofactive,paused,deletedlast_cycle_atstringrequirednullablelast_run_idstringrequirednullablecreated_atstringrequiredupdated_atstringrequired
createdbooleanrequiredFalse when you already tracked this target: the existing Tracker, and nothing charged.runobjectrequirednullableThe first cycle, run on create. Null whencreatedis false.idstringrequiredkindstringrequiredWhat was run, e.g.video_lookup.statusstringrequiredone ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstringrequiredRFC 3339.completed_atstringrequirednullableNull while the Run is still running.charge_creditsintegerrequiredWhat this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsintegerrequiredThe full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedbooleanrequiredTrue when a stored result answered without paying the vendor.progressobjectWhat a running Research has done so far, refreshed as it works:stage(keywords,searching,filtering,analysing,writing_digest) and the counts known by then —keywords,found,kept,dropped_off_topic, andanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestringrequiredone ofkeywords,searching,filtering,analysing,writing_digestkeywordsintegervalue at least 0searchesintegervalue at least 0foundintegervalue at least 0judgedintegervalue at least 0keptintegervalue at least 0dropped_off_topicintegervalue at least 0dropped_unsureintegervalue at least 0shortlistedintegervalue at least 0analysedintegervalue at least 0updated_atstringrequired
change_reportobjectrequirednullableThe first cycle's report, null when quiet or notcreated.idstringrequiredtracker_idstringrequiredrun_idstringrequirednullablecycle_keystringrequiredOne report per Tracker per cycle.triggersarray of stringrequiredCreator:new_videos,followers,outlier,velocity. Advertiser:new_ads,stopped_ads,variant_growth,new_countries_or_placements.changesanyThe before/after numbers behind the triggers.summarystringrequirednullablecreated_atstringrequired
collectionsarray of objectrequiredEvery Collection the Tracker is now in.idstringrequirednamestringrequired
collection_errorsarray of objectOnly when a Collection incollection_idswas deleted while the first cycle ran: the Tracker stands, paid for, outside it.collection_idstringrequirederrorobjectrequiredRFC 9457 problem document, served asapplication/problem+json. Branch oncode, never on the prose.typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
intelligence_runobjectnullableAdvertiser Trackers withintelligence: true: the Run analysing the first cycle's new Ads in the background, charged per Ad computed. Null when no Ad needed analysis. Only whencreated.idstringrequiredkindstringrequiredWhat was run, e.g.video_lookup.statusstringrequiredone ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstringrequiredRFC 3339.completed_atstringrequirednullableNull while the Run is still running.charge_creditsintegerrequiredWhat this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsintegerrequiredThe full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedbooleanrequiredTrue when a stored result answered without paying the vendor.progressobjectWhat a running Research has done so far, refreshed as it works:stage(keywords,searching,filtering,analysing,writing_digest) and the counts known by then —keywords,found,kept,dropped_off_topic, andanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestringrequiredone ofkeywords,searching,filtering,analysing,writing_digestkeywordsintegervalue at least 0searchesintegervalue at least 0foundintegervalue at least 0judgedintegervalue at least 0keptintegervalue at least 0dropped_off_topicintegervalue at least 0dropped_unsureintegervalue at least 0shortlistedintegervalue at least 0analysedintegervalue at least 0updated_atstringrequired
Option 2objectReturned instead of a Run when
estimate=true. Nothing is charged. Operations with more to say about a quote add members; the two above are always present.estimate_creditsintegerrequiredWhat the call would be charged, in Credits.cachedbooleanrequiredWhether a stored result can already answer. It does not change the price.
200 · `{ tracker, created: false, run: null, change_report: null, collections }` — you were already tracking that target. Not charged. With `estimate=true`, `{ estimate_credits, cached, already_tracking, tracker_id, per_cycle }` instead.
{
"tracker": {
"id": "trk_4b1e90c7aa",
"kind": "creator",
"platform": "tiktok",
"target": "someone",
"intelligence": true,
"state": "active",
"last_cycle_at": "2026-09-08T04:00:11.402Z",
"last_run_id": "run_c07a41bb92",
"created_at": "2026-09-01T11:20:03.118Z",
"updated_at": "2026-09-08T04:00:11.402Z"
},
"created": false,
"run": null,
"change_report": null,
"collections": []
}200 · With `estimate=true`: the price of the first cycle, nothing created or charged.
{
"estimate_credits": 6,
"cached": false,
"already_tracking": false,
"tracker_id": null,
"per_cycle": true
}201 Created
{ tracker, created: true, run, change_report, intelligence_run, collections } — newly created, with its first (charged) cycle. intelligence_run is the Run analysing an advertiser's new Ads, or null. If a Collection in collection_ids was deleted while the first cycle ran, the paid Tracker still stands and collection_errors lists it.
object
trackerobjectrequiredidstringrequiredkindstringrequiredone ofcreator,hashtag,sound,advertiser,videovideois deprecated (ADR 0024): existing Video Trackers keep working, new ones are refused with 400kind_deprecated.platformstringrequiredmetafor an advertiser Tracker.targetstringrequiredintelligencebooleanrequiredWhether each new video (or Ad) the cycle finds is analysed.statestringrequiredone ofactive,paused,deletedlast_cycle_atstringrequirednullablelast_run_idstringrequirednullablecreated_atstringrequiredupdated_atstringrequired
createdbooleanrequiredFalse when you already tracked this target: the existing Tracker, and nothing charged.runobjectrequirednullableThe first cycle, run on create. Null whencreatedis false.idstringrequiredkindstringrequiredWhat was run, e.g.video_lookup.statusstringrequiredone ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstringrequiredRFC 3339.completed_atstringrequirednullableNull while the Run is still running.charge_creditsintegerrequiredWhat this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsintegerrequiredThe full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedbooleanrequiredTrue when a stored result answered without paying the vendor.progressobjectWhat a running Research has done so far, refreshed as it works:stage(keywords,searching,filtering,analysing,writing_digest) and the counts known by then —keywords,found,kept,dropped_off_topic, andanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestringrequiredone ofkeywords,searching,filtering,analysing,writing_digestkeywordsintegervalue at least 0searchesintegervalue at least 0foundintegervalue at least 0judgedintegervalue at least 0keptintegervalue at least 0dropped_off_topicintegervalue at least 0dropped_unsureintegervalue at least 0shortlistedintegervalue at least 0analysedintegervalue at least 0updated_atstringrequired
change_reportobjectrequirednullableThe first cycle's report, null when quiet or notcreated.idstringrequiredtracker_idstringrequiredrun_idstringrequirednullablecycle_keystringrequiredOne report per Tracker per cycle.triggersarray of stringrequiredCreator:new_videos,followers,outlier,velocity. Advertiser:new_ads,stopped_ads,variant_growth,new_countries_or_placements.changesanyThe before/after numbers behind the triggers.summarystringrequirednullablecreated_atstringrequired
collectionsarray of objectrequiredEvery Collection the Tracker is now in.idstringrequirednamestringrequired
collection_errorsarray of objectOnly when a Collection incollection_idswas deleted while the first cycle ran: the Tracker stands, paid for, outside it.collection_idstringrequirederrorobjectrequiredRFC 9457 problem document, served asapplication/problem+json. Branch oncode, never on the prose.typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
intelligence_runobjectnullableAdvertiser Trackers withintelligence: true: the Run analysing the first cycle's new Ads in the background, charged per Ad computed. Null when no Ad needed analysis. Only whencreated.idstringrequiredkindstringrequiredWhat was run, e.g.video_lookup.statusstringrequiredone ofrunning,completed,partial,failedpartialkeeps the completed items and charges for them, up to what the Balance covers;failedcharges nothing.created_atstringrequiredRFC 3339.completed_atstringrequirednullableNull while the Run is still running.charge_creditsintegerrequiredWhat this Run actually cost, in Credits. A stored answer costs the same as a fresh one.list_price_creditsintegerrequiredThe full price of the work asked for, in Credits. Equal tocharge_creditsunless the Run charged for only part of it.cachedbooleanrequiredTrue when a stored result answered without paying the vendor.progressobjectWhat a running Research has done so far, refreshed as it works:stage(keywords,searching,filtering,analysing,writing_digest) and the counts known by then —keywords,found,kept,dropped_off_topic, andanalysedofshortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.stagestringrequiredone ofkeywords,searching,filtering,analysing,writing_digestkeywordsintegervalue at least 0searchesintegervalue at least 0foundintegervalue at least 0judgedintegervalue at least 0keptintegervalue at least 0dropped_off_topicintegervalue at least 0dropped_unsureintegervalue at least 0shortlistedintegervalue at least 0analysedintegervalue at least 0updated_atstringrequired
201 · Example
{
"tracker": {
"id": "trk_4b1e90c7aa",
"kind": "creator",
"platform": "tiktok",
"target": "someone",
"intelligence": true,
"state": "active",
"last_cycle_at": "2026-09-08T04:00:11.402Z",
"last_run_id": "run_c07a41bb92",
"created_at": "2026-09-01T11:20:03.118Z",
"updated_at": "2026-09-08T04:00:11.402Z"
},
"created": true,
"run": {
"id": "run_8f2c1ad04b",
"kind": "tracker_cycle",
"status": "completed",
"created_at": "2026-09-08T09:14:02.418Z",
"completed_at": "2026-09-08T09:14:04.930Z",
"charge_credits": 50,
"list_price_credits": 50,
"cached": false
},
"change_report": null,
"intelligence_run": null,
"collections": [
{
"id": "col_7d20e1b5c4",
"name": "Competitors"
}
]
}400 Bad Request
invalid_request — a malformed body. Or unsupported_platform: an unknown platform, or a creator on YouTube (creator Trackers cycle on TikTok, Instagram and Facebook). Nothing is created or charged. Or: kind_deprecated — video is deprecated: no new Video Trackers. Track the Creator, a Hashtag or a Sound instead. Nothing is created or charged.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
400 · unsupported_platform
{
"type": "https://www.shortsintel.com/docs/reference/errors/unsupported_platform",
"title": "Unsupported platform",
"status": 400,
"code": "unsupported_platform",
"detail": "Tracking a creator on youtube is not available yet. Creator Trackers are supported on: tiktok, instagram, facebook."
}400 · kind_deprecated
{
"type": "https://www.shortsintel.com/docs/reference/errors/kind_deprecated",
"title": "Kind deprecated",
"status": 400,
"code": "kind_deprecated",
"detail": "Video Trackers and Collections can no longer be created. Track the Creator, a Hashtag or a Sound instead: their cycles re-snapshot the Videos they find every day.",
"supported_kinds": [
"creator",
"hashtag",
"sound",
"advertiser"
]
}401 Unauthorized
missing_authorization, invalid_key, key_revoked or invalid_token.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
401 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/invalid_key",
"title": "Invalid key",
"status": 401,
"code": "invalid_key",
"detail": "That API key does not exist. Keys look like `sk_live_...` and are created in the console."
}402 Payment Required
insufficient_balance — the first cycle is not covered. Nothing is created.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
402 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/insufficient_balance",
"title": "Insufficient balance",
"status": 402,
"code": "insufficient_balance",
"detail": "Your balance does not cover this operation. Top up in the console.",
"balance_credits": 0,
"required_credits": 6
}404 Not Found
not_found.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
404 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/not_found",
"title": "Not found",
"status": 404,
"code": "not_found",
"detail": "A `collection_ids` entry is not one of this Customer's Collections, or there is no such creator, or no such Advertiser (no Ads in the Meta Ad Library under that Page id or name). Nothing is created or charged."
}409 Conflict
tracker_limit_exceeded at 100 active Trackers. Paused Trackers do not count. Or: advertiser_ambiguous with candidates (each { page_id, name, page_url, instagram, ad_count }) when an advertiser name matches several Pages. Nothing is created or charged; ask again with the Page id. Or: collection_kind_mismatch — the Tracker is not of the Collection's kind.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
409 · tracker_limit_exceeded
{
"type": "https://www.shortsintel.com/docs/reference/errors/tracker_limit_exceeded",
"title": "Tracker limit exceeded",
"status": 409,
"code": "tracker_limit_exceeded",
"detail": "You already have 100 active Trackers. Pause one before starting another.",
"limit": 100,
"active": 100
}409 · advertiser_ambiguous
{
"type": "https://www.shortsintel.com/docs/reference/errors/advertiser_ambiguous",
"title": "Advertiser ambiguous",
"status": 409,
"code": "advertiser_ambiguous",
"detail": "Several Facebook Pages are called Acme. Pass the Page id of the one you mean."
}409 · collection_kind_mismatch
{
"type": "https://www.shortsintel.com/docs/reference/errors/collection_kind_mismatch",
"title": "Collection kind mismatch",
"status": 409,
"code": "collection_kind_mismatch",
"detail": "\"Competitors\" is a Collection of creator Trackers and cannot hold a video.",
"collection_kind": "creator",
"kind": "video"
}429 Too Many Requests
rate_limit_exceeded, with Retry-After.
object
RFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
typestringrequiredtitlestringrequiredstatusintegerrequiredcodestringrequiredone ofmissing_authorization,invalid_key,key_revoked,invalid_token,organization_not_selected,organization_access_revoked,connection_revoked,forbidden,invalid_request,unsupported_platform,unsupported_kind,kind_deprecated,not_found,video_too_long,idempotency_conflict,run_not_ready,advertiser_ambiguous,insufficient_balance,rate_limit_exceeded,concurrency_limit_exceeded,tracker_limit_exceeded,webhook_limit_exceeded,webhook_rotation_in_progress,collection_limit_exceeded,collection_name_taken,collection_kind_mismatch,media_unavailable,vendor_error,source_unavailable,service_unavailable,internal_errorStable machine-readable code.detailstring
429 · Example
{
"type": "https://www.shortsintel.com/docs/reference/errors/rate_limit_exceeded",
"title": "Rate limit exceeded",
"status": 429,
"code": "rate_limit_exceeded",
"detail": "60 requests per minute per key. Retry after the number of seconds in `Retry-After`.",
"limit": 60
}Request samples
curl -X POST "https://www.shortsintel.com/v1/trackers" \
-H "Authorization: Bearer sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"kind":"creator","platform":"tiktok","target":"someone","intelligence":true}'const response = await fetch(
"https://www.shortsintel.com/v1/trackers",
{
method: "POST",
headers: {
"Authorization": "Bearer sk_live_YOUR_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
"kind": "creator",
"platform": "tiktok",
"target": "someone",
"intelligence": true
}),
},
);
if (!response.ok) {
throw new Error(`ShortsIntel ${response.status}`);
}
const data = await response.json();import requests
response = requests.post(
"https://www.shortsintel.com/v1/trackers",
headers={
"Authorization": "Bearer sk_live_YOUR_KEY",
"Content-Type": "application/json",
},
json={
"kind": "creator",
"platform": "tiktok",
"target": "someone",
"intelligence": True,
},
)
response.raise_for_status()
data = response.json()Related guides
- Pricing and estimates: Credits, estimates and why a cached result costs the same as a fresh one.
- Trackers: Standing watches on a creator or a Meta Advertiser: how a cycle runs, when it reports a change, and how to pause one.