Skip to content

API referenceTrackers

Start tracking a target

POST/v1/trackers

Creates 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

NameInTypeRequiredDefaultDescription
estimatequerybooleanOptional—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 of creator, hashtag, sound, advertisercreator, hashtag, sound or advertiser (a Meta Advertiser). video is deprecated and refused with 400 kind_deprecated.
  • platformstringone of tiktok, instagram, youtube, metaRequired for creator (TikTok; others are refused with 400 unsupported_platform) hashtag (tiktok or instagram) and sound (tiktok). For advertiser omit it or pass meta.
  • 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 a tiktok.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 409 advertiser_ambiguous with candidates, free.
  • intelligencebooleanAnalyse each new video (or new Ad) the cycle finds. On advertiser Trackers 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
    • trackerobjectrequired
      • idstringrequired
      • kindstringrequiredone of creator, hashtag, sound, advertiser, videovideo is deprecated (ADR 0024): existing Video Trackers keep working, new ones are refused with 400 kind_deprecated.
      • platformstringrequiredmeta for an advertiser Tracker.
      • targetstringrequired
      • intelligencebooleanrequiredWhether each new video (or Ad) the cycle finds is analysed.
      • statestringrequiredone of active, paused, deleted
      • last_cycle_atstringrequirednullable
      • last_run_idstringrequirednullable
      • created_atstringrequired
      • updated_atstringrequired
    • createdbooleanrequiredFalse when you already tracked this target: the existing Tracker, and nothing charged.
    • runobjectrequirednullableThe first cycle, run on create. Null when created is false.
      • idstringrequired
      • kindstringrequiredWhat was run, e.g. video_lookup.
      • statusstringrequiredone of running, completed, partial, failedpartial keeps the completed items and charges for them, up to what the Balance covers; failed charges 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 to charge_credits unless 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, and analysed of shortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.
        • stagestringrequiredone of keywords, searching, filtering, analysing, writing_digest
        • keywordsintegervalue at least 0
        • searchesintegervalue at least 0
        • foundintegervalue at least 0
        • judgedintegervalue at least 0
        • keptintegervalue at least 0
        • dropped_off_topicintegervalue at least 0
        • dropped_unsureintegervalue at least 0
        • shortlistedintegervalue at least 0
        • analysedintegervalue at least 0
        • updated_atstringrequired
    • change_reportobjectrequirednullableThe first cycle's report, null when quiet or not created.
      • idstringrequired
      • tracker_idstringrequired
      • run_idstringrequirednullable
      • cycle_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.
      • summarystringrequirednullable
      • created_atstringrequired
    • collectionsarray of objectrequiredEvery Collection the Tracker is now in.
      • idstringrequired
      • namestringrequired
    • collection_errorsarray of objectOnly when a Collection in collection_ids was deleted while the first cycle ran: the Tracker stands, paid for, outside it.
      • collection_idstringrequired
      • errorobjectrequiredRFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
        • typestringrequired
        • titlestringrequired
        • statusintegerrequired
        • codestringrequiredone of missing_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 with intelligence: true: the Run analysing the first cycle's new Ads in the background, charged per Ad computed. Null when no Ad needed analysis. Only when created.
      • idstringrequired
      • kindstringrequiredWhat was run, e.g. video_lookup.
      • statusstringrequiredone of running, completed, partial, failedpartial keeps the completed items and charges for them, up to what the Balance covers; failed charges 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 to charge_credits unless 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, and analysed of shortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.
        • stagestringrequiredone of keywords, searching, filtering, analysing, writing_digest
        • keywordsintegervalue at least 0
        • searchesintegervalue at least 0
        • foundintegervalue at least 0
        • judgedintegervalue at least 0
        • keptintegervalue at least 0
        • dropped_off_topicintegervalue at least 0
        • dropped_unsureintegervalue at least 0
        • shortlistedintegervalue at least 0
        • analysedintegervalue at least 0
        • updated_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

  • trackerobjectrequired
    • idstringrequired
    • kindstringrequiredone of creator, hashtag, sound, advertiser, videovideo is deprecated (ADR 0024): existing Video Trackers keep working, new ones are refused with 400 kind_deprecated.
    • platformstringrequiredmeta for an advertiser Tracker.
    • targetstringrequired
    • intelligencebooleanrequiredWhether each new video (or Ad) the cycle finds is analysed.
    • statestringrequiredone of active, paused, deleted
    • last_cycle_atstringrequirednullable
    • last_run_idstringrequirednullable
    • created_atstringrequired
    • updated_atstringrequired
  • createdbooleanrequiredFalse when you already tracked this target: the existing Tracker, and nothing charged.
  • runobjectrequirednullableThe first cycle, run on create. Null when created is false.
    • idstringrequired
    • kindstringrequiredWhat was run, e.g. video_lookup.
    • statusstringrequiredone of running, completed, partial, failedpartial keeps the completed items and charges for them, up to what the Balance covers; failed charges 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 to charge_credits unless 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, and analysed of shortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.
      • stagestringrequiredone of keywords, searching, filtering, analysing, writing_digest
      • keywordsintegervalue at least 0
      • searchesintegervalue at least 0
      • foundintegervalue at least 0
      • judgedintegervalue at least 0
      • keptintegervalue at least 0
      • dropped_off_topicintegervalue at least 0
      • dropped_unsureintegervalue at least 0
      • shortlistedintegervalue at least 0
      • analysedintegervalue at least 0
      • updated_atstringrequired
  • change_reportobjectrequirednullableThe first cycle's report, null when quiet or not created.
    • idstringrequired
    • tracker_idstringrequired
    • run_idstringrequirednullable
    • cycle_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.
    • summarystringrequirednullable
    • created_atstringrequired
  • collectionsarray of objectrequiredEvery Collection the Tracker is now in.
    • idstringrequired
    • namestringrequired
  • collection_errorsarray of objectOnly when a Collection in collection_ids was deleted while the first cycle ran: the Tracker stands, paid for, outside it.
    • collection_idstringrequired
    • errorobjectrequiredRFC 9457 problem document, served as application/problem+json. Branch on code, never on the prose.
      • typestringrequired
      • titlestringrequired
      • statusintegerrequired
      • codestringrequiredone of missing_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 with intelligence: true: the Run analysing the first cycle's new Ads in the background, charged per Ad computed. Null when no Ad needed analysis. Only when created.
    • idstringrequired
    • kindstringrequiredWhat was run, e.g. video_lookup.
    • statusstringrequiredone of running, completed, partial, failedpartial keeps the completed items and charges for them, up to what the Balance covers; failed charges 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 to charge_credits unless 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, and analysed of shortlisted. A count is absent until its stage produced it. Absent once the Run settles, and on every other kind.
      • stagestringrequiredone of keywords, searching, filtering, analysing, writing_digest
      • keywordsintegervalue at least 0
      • searchesintegervalue at least 0
      • foundintegervalue at least 0
      • judgedintegervalue at least 0
      • keptintegervalue at least 0
      • dropped_off_topicintegervalue at least 0
      • dropped_unsureintegervalue at least 0
      • shortlistedintegervalue at least 0
      • analysedintegervalue at least 0
      • updated_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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.

  • typestringrequired
  • titlestringrequired
  • statusintegerrequired
  • codestringrequiredone of missing_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}'
  • 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.