---
title: "Get latest AI report for a tracked creator"
method: GET
path: "/v1/tracking/creators/{id}/report"
tags: ["Tracking"]
---

# Get latest AI report for a tracked creator

`GET /v1/tracking/creators/{id}/report`

## Request

- Base URL: `https://api.virlo.ai`
- URL: `https://api.virlo.ai/v1/tracking/creators/{id}/report`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Creator report

- CreatorReportResponseDto
  - `data` CreatorReportInnerDataDto, required
    - `account` TrackedCreatorDataDto, required
      - `id` string, required
      - `platform` 'tiktok' | 'youtube' | 'instagram', required
      - `platform_handle` string, required
      - `profile_url` string, nullable
      - `display_name` string, nullable
      - `avatar_url` string, nullable: Creator avatar URL. Always an absolute URL (or null). Images Virlo stores are served from https://auth.virlo.ai/storage/v1/object/public/<bucket>/; platform CDN links are passed through. Some files are HEIC, which most non-Safari browsers cannot render, so convert before display if you need to.
      - `bio` string, nullable: Creator bio / description from the platform.
      - `is_verified` boolean, nullable: Whether the creator is verified on the platform.
      - `status` 'active' | 'paused' | 'deleted', required
      - `scrape_cadence` 'six_hours' | 'twelve_hours' | 'daily' | 'every_other_day' | 'weekly' | 'bi_weekly' | 'monthly', required
      - `enrichment_status` 'pending' | 'processing' | 'completed' | 'failed', required
      - `finalized` boolean: True when the tracked creator has no secondary jobs in flight (AI report is in a terminal state AND `pending_jobs` is empty). Optional for backwards compatibility.
      - `pending_jobs` PendingJobDto[]: Secondary jobs still running for this tracked creator (currently just the AI report when `enrichment_status` is `pending`/`processing`). Always an array, never null.
        - `type` 'viral_analysis' | 'audience_demographics' | 'audience_geography' | 'tracking_report', required: Stable identifier for the kind of secondary job. Use this to switch on the field where the result will appear (see `result_path`).
        - `status` 'pending' | 'processing', required: Current non-terminal state of the job. Once the job reaches a terminal state (ready / failed / skipped) the entry is removed from `pending_jobs[]`.
        - `job_id` string: Optional opaque identifier for the underlying job, when one exists. Useful with `poll_url` to fetch the result directly.
        - `poll_url` string: Path (relative to api.virlo.ai) you can GET to fetch the result of this job once it is ready. Free to call.
        - `result_path` string: Dot-path inside the parent resource's response body where the completed result will appear. Useful for clients that re-fetch the resource instead of using `poll_url`.
        - `webhook_event` string: Name of an event from the existing `SUPPORTED_EVENTS` list that fires when this job reaches a terminal state. Subscribe to it via POST /v1/webhooks to avoid polling. Guaranteed to be one of the already-supported event names so existing webhook subscriptions keep working — no new event types were introduced.
        - `started_at` string: When the job entered its current state (ISO 8601 UTC).
        - `retry_after_seconds` number: Suggested minimum delay (seconds) before polling again. Respect this to avoid hitting rate limits.
      - `latest_followers` number, nullable
      - `latest_following` number, nullable
      - `latest_total_likes` number, nullable
      - `latest_total_views` number, nullable: Total views. For YouTube: profile-level stat. For TikTok/Instagram: sum of views across collected posts.
      - `latest_total_videos` number, nullable
      - `last_scraped_at` string, nullable
      - `growth_rate` number, nullable: Growth rate since last scrape (views or followers based)
      - `followers_gained` number, nullable: Followers gained since last scrape
      - `next_scrape_at` string, nullable
      - `category` string, nullable: Content category slug from the Virlo category registry (e.g. "comedy", "fitness", "basketball"). AI-classified after first scrape cycle.
      - `content_tags` string[]: AI-generated content tags describing the creator's specific niche (e.g. ["asmr", "mukbang", "budget-meals"])
      - `profile_metadata` object, nullable: Extended profile metadata including country, language, website, and external links (e.g. Spotify, YouTube channel).
      - `created_at` string, required
      - `updated_at` string, required
    - `report` CreatorReportDataDto
      - `id` string, required
      - `tracking_account_id` string, required
      - `analysis` object, nullable: AI-generated analysis JSON object
      - `collection_data` object, nullable: Summary of collected data used for the report
      - `created_at` string, required

## Other responses

- `401`: Unauthorized - missing or invalid API key
- `404`: Tracked creator 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)
