TikTok trending API: browse without a query is flag-gated
Sume trending search needs a query on production. Browse with no query, limit up to 100 and relevance floors are dev-only until a flag is set. The differences.

On production, Sume's POST /v1/trending-videos/search requires a query. Calling it with none works only where the rebuilt browse feed is on: the dev API, or an environment where SUME_COM_TRENDING_VIDEOS_REBUILD_ENABLED is exactly 1 or true. So a script that browses with no query on dev and then ships to production will start failing for a missing field.
Trend lists make a good query source. Exploding Topics' September 21 update lists massage comb, egg weights, train case and wireless meat thermometer among the fastest-growing product searches (Exploding Topics, read 2026-10-04); any of those is a valid query on both contracts.
Two contracts side by side
This comes from the trending videos docs as read on 2026-10-04. The page states production stays off until the flag is set; confirm current behaviour in the live OpenAPI before depending on either column.
| Behaviour | Production, flag off | Rebuild on |
|---|---|---|
| query | Required | Optional; omitted means browse |
| limit | 1 to 50, default 10 | 1 to 100; search default 20, browse default 48 |
| Relevance | Legacy generic ranker, no extra floor | Match on caption, hashtag, mention or author, plus an engagement floor |
| Padding | Fills toward the limit | Off-topic and stale hits are not padded back |
| Extra fields | None | params.mode (browse or search) and params.cached |
| Browse region | Not applicable | With no region, fans out across US, GB and KR feeds |
A call that works on both
Send a query and the request is valid under either contract. Each accepted call reserves and captures $0.10 of Sume usage per the docs; summary_mode: "metadata" is included, and repeat browse calls may be served from cache. summary_mode: "transcript" currently returns metadata plus an unsupported warning, and download values above zero return an unsupported warning because nothing is mirrored.
import os, requests
resp = requests.post(
"https://api.sume.com/v1/trending-videos/search",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={
"platform": "tiktok",
"query": "massage comb",
"window": "this-month",
"limit": 10,
"region": "US",
},
timeout=60,
)
print(resp.status_code)
for video in resp.json().get("videos", [])[:3]:
print(video.get("url"), video.get("metrics"))
The results are public watch URLs, cover thumbnails, handles and metrics, not video files, so research here feeds a brief rather than a remix source; see what you can remix. Window defaults and region behaviour are in the related posts.
Sources
Related posts
More in Media tools
- Timeline renders 1080x1920 by default: set size for square or 16:9
Sume Timeline 1.0 outputs 1080 by 1920 MP4 unless you set output.width and height, even integers 256 to 2160. Sizes for 1:1, 4:5 and 16:9 shown.
- Transparent-background product cutouts with GPT Image 2.5
Make a PNG product cutout with a transparent background through Sume's Image API, then place it on each marketplace's own background. Request fields and checks.
- Transparent PNG: generate it or cut it out?
Sume lists a background option on ChatGPT Image 2.5: auto, transparent or opaque. Generate a transparent PNG directly, or cut out an existing image.
- Trim a supplier product video to 30 seconds with Sume, $0.02
Channels cap video length differently. Cut one clip to the range you need with Sume's video-trim endpoint, $0.02 per job, frame-accurate by default.
Written by Sume