Format Trends
Video formats creators are copying right now. Each one comes with a recipe you can follow, how fast it is spreading, and real examples. Use Format Trends to decide what to make.
- What it does
- Lists the formats creators are copying on TikTok, Instagram and YouTube, with what stays the same, what each creator swaps in, and who it fits.
- You send
- Nothing required. Optionally filters such as stage, platform, client type or brand safety.
- You get back
- Within seconds, a ranked list of formats with their stage, creator counts, a 30-day history and example videos.
- Cost
- $0.25 for the list and $0.05 for one trend, even when nothing matches. Failed requests are free.
Format Trends or Topic Trends?
- Format Trends (this page,
/v1/content-trends) are formats: a structure creators repeat with their own subject, like a meme template, a sound with a set visual gag, or an AI-tool effect. Use them to decide what to make. - Topic Trends (
/v1/trends) are topics: news and pop culture moments many people are posting about, by region. Use them to decide what to talk about.
If someone asks "what formats, memes or templates are people copying?", call Format Trends. If they ask "what is everyone talking about?", call Topic Trends.
How the data works
- Curated. Virlo's detector finds candidate formats, and the Virlo team reviews each one before it is published. Only published trends are returned, so the catalog is small: a few dozen trends, not thousands.
- Hourly. The data refreshes every hour at :07 UTC, and responses are cached for up to 5 minutes.
meta.updated_atis the last refresh. - One order, same as the app. By default, live trends come first, the most creators in the last 7 days first, then by stage (new, rising, peaking, fading). Archived trends come last, most recent activity first.
- Example videos are ranked: ones the Virlo team pinned first, then recent videos that passed the recipe check, then other videos that passed it, then recent ones, then the rest. One video per creator, up to 16. Paid posts (
is_paid) are listed after organic ones. - Recipe check.
verified_fit: truemeans the video really does the format, not just the sound.videos_verifiedcounts those videos.
Lifecycle
Every trend has a lifecycle stage, re-computed at every refresh. lifecycle_since says when it entered that stage.
new: first spotted in the last 7 days.rising: 10 or more creators this week and at least 1.3 times last week.peaking: between rising and fading.fading: under 0.7 times last week.archived: no posts in 14 days, or fewer than 5 creators in a week once it is older than 7 days.
"This week" is creators_7d, the creators who posted it in the last 7 days. "Last week" is creators_prev_7d, the 7 days before that as they were counted a week ago, so both weeks had the same time to be found and the comparison is fair. Quote both numbers when you describe momentum.
The series and partial days
series counts the creators who posted the format on each of the last 30 days, by posting date. Videos are found a few days after they go up (the median delay is about 4 days), so the most recent days keep rising for a while after you read them.
The last 7 points carry partial: true. Never read a dip in partial days as a decline. Compare full days with full days, or use creators_7d against creators_prev_7d.
List format trends
The published format trends, filtered, sorted and paged. Each trend includes its series and a few example videos.
Query parameters
All optional. An unknown parameter returns 400.
- Name
lifecycle- Type
- string
- Description
Comma-separated stages:
new,rising,peaking,fading,archived. Defaultnew,rising,peaking,fading(live only). Passarchivedto get the archive.
- Name
platform- Type
- string
- Description
tiktok,instagramoryoutube. Keeps trends with at least one linked video on that platform.
- Name
made_with_ai_tool- Type
- boolean
- Description
truefor formats made with an AI tool (tool_namesays which),falsefor the rest.
- Name
is_sound_meme- Type
- boolean
- Description
truefor formats built around a sound (sound_titlenames it),falsefor the rest.
- Name
brand_safety- Type
- string
- Description
safeorcaution. Trends without a rating are left out when you set it.
pagination.total is exact.
Request
curl "https://api.virlo.ai/v1/content-trends?client_fit=consumer_brand&brand_safety=safe&limit=5" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"data": [
{
"id": 6,
"name": "Things I'd never buy again",
"recipe": "Quick cuts of products the creator regrets buying, each with a one-line verdict on screen, over the same trending sound.",
"constant_part": "The 'never again' framing, the sound and the verdict captions",
"swapped_part": "The products and the niche",
"lifecycle": "rising",
"lifecycle_since": "2026-10-18T04:07:12Z",
"spotted_on": "2026-10-09",
"first_seen_on": "2026-10-02",
"last_seen_on": "2026-10-20",
"peak_on": "2026-10-17",
"peak_creators": 41.3,
"creators_3d_avg": 37.0,
"creators_7d": 212,
"creators_prev_7d": 140,
"creators_total": 618,
"videos_total": 744,
"videos_verified": 301,
"views_total": 182340000,
"top_views": 9100000,
"platforms": { "tiktok": 690, "instagram": 40, "youtube": 14 },
"made_with_ai_tool": false,
"tool_name": null,
"is_sound_meme": true,
"sound_title": "original sound",
"language": "en",
"region": "US",
"audience_tags": ["shoppers", "gen z"],
"brand_safety": "safe",
"effort": "low",
"tone": "funny",
"people": "One person, talking to camera",
"client_fit": {
"consumer_brand": { "fit": "yes", "how": "Flip it: things customers would buy again." },
"b2b_saas": { "fit": "no", "how": null }
},
"series": [
{ "date": "2026-10-13", "creators": 29, "partial": false },
{ "date": "2026-10-20", "creators": 31, "partial": true }
],
"examples": [
{
"video_id": "8f0c1a52-4d7e-4b8e-9a51-2f1f6f0b3c11",
"url": "https://www.tiktok.com/@creator/video/7561234567890123456",
"platform": "tiktok",
"views": 1234567,
"likes": 89000,
"comments": 1200,
"thumbnail_url": "https://storage.virlo.ai/thumbnails/abc123.jpg",
"publish_date": "2026-10-14",
"author": {
"username": "creator",
"avatar_url": "https://storage.virlo.ai/avatars/def456.jpg",
"verified": false,
"followers": 15400
},
"is_paid": false,
"verified_fit": true
}
]
}
],
"pagination": {
"page": 1,
"limit": 5,
"total": 12,
"total_pages": 3,
"has_next_page": true,
"has_prev_page": false
},
"meta": { "updated_at": "2026-10-21T03:08:00Z" }
}
The series is cut to two points here; real responses have 30.
Get one format trend
One published trend with all its example videos (up to 16) and its full 30-day series. Use it to read a trend from the list without paging the list again.
Path parameters
- Name
id- Type
- integer
- Required
- *
- Description
The trend's
idfrom the list.
An unknown or unpublished id returns 404 not_found. When the Virlo team merges a trend into another one, its old id returns 404 with merged_into set to the id to read instead.
Request
curl "https://api.virlo.ai/v1/content-trends/6" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"data": {
"id": 6,
"name": "Things I'd never buy again",
"lifecycle": "rising",
"creators_7d": 212,
"creators_prev_7d": 140,
"series": [
{ "date": "2026-10-20", "creators": 31, "partial": true }
],
"examples": [
{
"video_id": "8f0c1a52-4d7e-4b8e-9a51-2f1f6f0b3c11",
"platform": "tiktok",
"views": 1234567,
"is_paid": false,
"verified_fit": true
}
]
},
"meta": { "updated_at": "2026-10-21T03:08:00Z" }
}
Shortened: data has every field from the list.
Fields
Each format trend has:
- Name
id- Type
- integer
- Description
Stable id. Use it with one format trend.
- Name
name- Type
- string
- Description
Short name of the format.
- Name
recipe- Type
- string
- Description
How to make it.
- Name
constant_part- Type
- string | null
- Description
What stays the same in every video.
- Name
swapped_part- Type
- string | null
- Description
What each creator swaps in.
Each example video has video_id, url, platform (tiktok, instagram or youtube), views, likes, comments, thumbnail_url (a full URL), publish_date, author (username, avatar_url, verified, followers, or null), is_paid and verified_fit.
is_paid: truemarks paid distribution: an ad, a boosted post, a paid partnership, or a caption that discloses one (such as#ad). Its views come partly from ad spend, so treat it as an ad, not proof the format spreads on its own.verified_fit: truemeans the video passed the recipe check: it does the format, not just the sound.
Costs and errors
- Charges. The list costs $0.25 (25 credits) and one trend $0.05 (5 credits), even when nothing matches. Errors are never charged.
X-Costshows the charge in dollars andX-Credits-Usedin credits. - Read one, don't re-list. After a list call, read a single trend with one format trend instead of paging the list again.
Errors come back with message, error, statusCode and code (more on errors):
400: a bad value or an unknown parameter. The message lists valid values.401: missing or invalid API key.402: your balance is too low. Add funds.404: the trend is unknown or not published, or it was merged (merged_intonames the trend to read instead).429: too many requests. Waitretry_afterseconds. TheX-RateLimit-Limitheader shows your limit (rate limits).

