Skip to content

Concepts

Platforms and coverage

Which platforms we cover, what coverage reports mean, and where results are known to be partial.

We cover three platforms, and they are not equally knowable. Rather than paper over the difference, every result that spans platforms carries a coverage field saying what each one actually managed. Read it before you draw a conclusion from an absence.

The platforms

TikToktiktok
The deepest surface we have: videos, creators, hashtags, sounds, comments and the ad library, all searchable.
Instagram Reelsinstagram
Reels, their creators and their comments. Lookups by id or handle are exact; keyword search over Reels is the one best-effort surface. Keyword search here is reported as partial.
YouTube Shortsyoutube
Shorts, their channels and their comments, addressed by the video id or the channel handle.

The wire name in the path is the lower-case one: GET /v1/videos/{platform}/{id}. A platform we do not cover is an unsupported_platform problem, not an empty result.

What coverage reports

POST /v1/videos/search and POST /v1/research answer with a coverage object: one entry per platform you asked for, each one of three things.

complete
The platform answered and the page is the page it would have shown. Nothing is missing that we know of.
partial
The platform answered, but its index is best effort: what came back is real and what is absent may still exist. Treat the result as a floor, never as a census.
failed: <code>
That platform did not answer at all. The code says why. The other platforms' results are still in the page — one platform failing does not fail the call.

200 · The Run finished inside the wait budget: `{ run, result }`. With `estimate=true`, `{ estimate_usd, cached }` instead.

{
  "run": {
    "id": "run_8f2c1ad04b",
    "kind": "video_search",
    "status": "completed",
    "created_at": "2026-09-08T09:14:02.418Z",
    "completed_at": "2026-09-08T09:14:04.930Z",
    "charge_usd": 0.01,
    "list_price_usd": 0.01,
    "cached": false
  },
  "result": {
    "items": [
      {
        "platform": "tiktok",
        "id": "7300000000000000000",
        "url": "https://www.tiktok.com/@someone/video/7300000000000000000",
        "description": "3 minutes at 4°C every morning for 30 days. Here is what actually changed. #coldplunge #recovery",
        "posted_at": "2026-09-05T06:32:11.000Z",
        "duration_seconds": 41,
        "thumbnail_url": "https://p16-sign.tiktokcdn.com/obj/tos-cover-7300000000000000000.jpeg",
        "hashtags": [
          "coldplunge",
          "recovery",
          "morningroutine"
        ],
        "sound": {
          "id": "7180000000000000000",
          "title": "original sound - someone"
        },
        "creator": {
          "id": "cre_9d4b2a7f1c",
          "handle": "someone",
          "name": "Someone",
          "follower_count": 184300
        },
        "snapshot": {
          "at": "2026-09-08T09:14:04.219Z",
          "views": 1284000,
          "likes": 143200,
          "comments": 2810,
          "shares": 9040,
          "saves": 21600
        },
        "scores": null
      },
      {
        "platform": "tiktok",
        "id": "7300000000000000042",
        "url": "https://www.tiktok.com/@anotherone/video/7300000000000000042",
        "description": "I tried cold plunging before every workout for a week. #coldplunge",
        "posted_at": "2026-09-06T13:04:52.000Z",
        "duration_seconds": 28,
        "thumbnail_url": "https://p16-sign.tiktokcdn.com/obj/tos-cover-7300000000000000042.jpeg",
        "hashtags": [
          "coldplunge",
          "gym"
        ],
        "sound": {
          "id": "7180000000000000099",
          "title": "Winter Air"
        },
        "creator": {
          "id": "cre_1a77c0b3de",
          "handle": "anotherone",
          "name": "Another One",
          "follower_count": 21400
        },
        "snapshot": {
          "at": "2026-09-08T09:14:04.219Z",
          "views": 96200,
          "likes": 8140,
          "comments": 212,
          "shares": 401,
          "saves": 1180
        },
        "scores": null
      }
    ],
    "next_cursor": "eyJ0aWt0b2siOiIzMCJ9",
    "coverage": {
      "tiktok": "complete"
    }
  }
}

200 · With `estimate=true`: the price, no Run, no charge.

{
  "estimate_usd": 0.01,
  "cached": false
}

Individual videos can carry the same flag. A video found on a best-effort surface has coverage: "partial" on the item itself, so a record that travelled through a shakier index stays labelled after it leaves the page it arrived on.

Instagram search is partial

Instagram’s public search surface does not expose an index we can page exhaustively, so a Reels keyword search returns real results and an unknown number of misses. We report that as partial on every search that includes it, on every call, rather than only when we happen to notice a gap.

Nothing else about Instagram is partial. Looking a Reel up by id, looking a creator up by handle, reading their videos, comments and history are all exact — the limitation is discovery, not retrieval.

What to do about a partial result

  • Do not treat absence as evidence. “No Reels matched” means none were found, not that none exist. Say so in whatever you build on top.
  • Ask a narrower question. Discovery is the weak step, so once you know a creator, a hashtag or a sound, address it directly — those lookups are exact on every platform.
  • Compare within a platform, not across. A cross-platform count where one side is partial measures our reach, not the world.
  • Handle failed: separately. That is an outage, not a limitation. Retrying it later is reasonable; retrying a partial gets you the same page.

A call where one platform failed still succeeds, and you are charged for the page you received. Where an operation fans out over many items, the Run ends partial and GET /v1/runs/{id}/items shows which items landed and which did not, each with its own charge.

POST /v1/videos/search·$0.01 per page. `intelligence: true` adds $0.02 for each of the top 20 results ($0.005 when already analysed).

curl -X POST "https://www.shortsintel.com/v1/videos/search" \
  -H "Authorization: Bearer sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"cold plunge","platforms":["tiktok"],"limit":30,"sort":"likes"}'

See Runs for the partial state and what it charges, and errors for unsupported_platform and the other problem codes.