---
title: "Get the latest batch of trends for a comet"
method: GET
path: "/v1/comet/{id}/trends/latest"
tags: ["Comet"]
---

# Get the latest batch of trends for a comet

`GET /v1/comet/{id}/trends/latest`

## Request

- Base URL: `https://api.virlo.ai`
- URL: `https://api.virlo.ai/v1/comet/{id}/trends/latest`
- Auth: HTTP bearer

Returns every trend detected by the AI in the most recent completed analysis cycle. Each trend includes evidence videos, aggregate engagement stats, a stable_key for time-series joins, and a new/rising/steady/fading status vs. the previous cycle.

## Path parameters

- `id` string, required

## Response `200`

Latest batch of trends (may be empty if no analysis has run yet)

- V1TrendsLatestBatchResponseDto
  - `data` V1TrendsLatestBatchDataDto, required
    - `reference_id` string, required
    - `insight_type` 'custom_niche' | 'orbit', required
    - `viral_insight_id` string, nullable: UUID of the viral_insights batch these trends came from
    - `batch_start` string, nullable: Start of the collection window (ISO-8601)
    - `batch_end` string, nullable: End of the collection window (ISO-8601)
    - `total` number, required
    - `trends` V1TrendItemDto[], required
      - `id` string, required: Unique ID of this trend row in viral_insight_trends
      - `viral_insight_id` string, required: UUID of the viral_insights row (AI analysis batch) that produced this trend
      - `insight_type` 'custom_niche' | 'orbit', required
      - `reference_id` string, required: ID of the parent comet (custom_niche_configurations.id) or orbit (scraper_runs.id) this trend belongs to
      - `batch_start` string, required: Start of the collection window this trend was detected in (ISO-8601)
      - `batch_end` string, required: End of the collection window (ISO-8601)
      - `rank` number, required: Position of this trend within its batch (1 = strongest). Stable across requests for the same batch.
      - `stable_key` string, required: Stable identifier preserved across cycles when the same trend reappears. Use this to build a time series for a single trend.
      - `name` string, required
      - `why_it_works` string, nullable
      - `tactics` string[]: Specific creative tactics the LLM identified inside this trend
      - `confidence` number, nullable: 0–1 model confidence that this is a real, repeatable trend
      - `evidence_video_ids` string[]: IDs of videos from the batch that exemplify this trend. Guaranteed to be a subset of the analyzed batch.
      - `evidence_videos` object[], nullable: Enriched evidence video objects with id, url, and platform. NULL for trends created before this field was introduced. Use this to resolve video URLs directly without paginating orbit/comet videos.
      - `video_count` number, nullable
      - `total_views` number, nullable
      - `total_likes` number, nullable
      - `total_comments` number, nullable
      - `total_shares` number, nullable
      - `avg_virality_score` number, nullable
      - `platform_breakdown` object, nullable: Video counts keyed by platform (e.g. { "tiktok": 7, "youtube": 3, "instagram": 2 })
      - `top_creators` V1TrendTopCreatorDto[], nullable: Top creators driving this trend in the current batch
        - `username` string, nullable
        - `platform` string, nullable
        - `followers` number, nullable
        - `video_count` number, nullable
        - `total_views` number, nullable
      - `peak_hour_utc` number, nullable: Hour of day (UTC, 0-23) with the most evidence videos
      - `status` 'new' | 'rising' | 'steady' | 'fading', nullable: Classification vs. the previous cycle. `new` = not seen before, `rising`/`fading` = >=25% change in volume, `steady` otherwise.
      - `first_seen_at` string, nullable: Timestamp (ISO-8601) of the first cycle this trend was detected. Lets you compute how long a trend has been around.
      - `prev_video_count` number, nullable
      - `prev_total_views` number, nullable
      - `created_at` string, required

## Other responses

- `401`: Unauthorized - missing or invalid API key
- `404`: Comet configuration not found
- `429`: Rate limit exceeded (`rate_limit_exceeded`); see the Retry-After header

---

[API](https://skmtc.dev/virlo/apis/virlo-public-api.md) · [All operations](https://skmtc.dev/virlo/apis/virlo-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/virlo/apis/virlo-public-api/revisions/3b69c6145087?raw)
