---
title: "Poll video outlier analysis status"
method: GET
path: "/v1/satellite/video-outlier/status/{job_id}"
tags: ["Satellite"]
---

# Poll video outlier analysis status

`GET /v1/satellite/video-outlier/status/{job_id}`

## Request

- Base URL: `https://api.virlo.ai`
- URL: `https://api.virlo.ai/v1/satellite/video-outlier/status/{job_id}`
- Auth: HTTP bearer

Returns the current status of a video outlier analysis job. Poll until `finalized` is true (status "completed" or "failed"). Results expire after 5 minutes.

## Path parameters

- `job_id` string, required

## Response `200`

Job status retrieved. Shape varies by status: processing, completed (with result), or failed (with error).

- VideoOutlierStatusResponseDto
  - `data` union, required: Job state — shape varies by status field (processing | completed | failed)
    - VideoOutlierStatusProcessingDto
      - `status` string, required
      - `finalized` boolean, required: Always false while the analysis is still running.
    - VideoOutlierStatusCompletedDto
      - `status` string, required
      - `result` VideoOutlierResultDto, required
        - `video` VideoOutlierVideoDto, required
          - `url` string, required
          - `title` string, required
          - `views` number, required
          - `likes` number, required
          - `comments` number, required
          - `publish_date` string, nullable: ISO publish timestamp.
          - `publishDate` string, nullable: Deprecated camelCase alias for `publish_date`. Removed Aug 3, 2026.
        - `creator` VideoOutlierCreatorDto, required
          - `username` string, required
          - `platform` 'youtube' | 'tiktok' | 'instagram', required
          - `profile` VideoOutlierCreatorProfileDto
            - `followers` number, required
            - `following` number, required
            - `avatar_url` string, nullable
            - `url` string, required
        - `analysis` VideoOutlierAnalysisDto, required
          - `videos_analyzed` number, required
          - `median_views` number, required
          - `avg_views` number, required
          - `outlier_score` number, required
          - `weighted_score` number: Size-weighted outlier score (Virality Score)
          - `percentile` number, required
          - `std_deviation` number, required
          - `z_score` number, required
          - `performance_label` 'average' | 'above_average' | 'viral' | 'mega_viral', required
      - `finalized` boolean, required: Always true once the analysis completed: nothing else runs after it. Same done signal as the other async status replies.
    - VideoOutlierStatusFailedDto
      - `status` string, required
      - `error` string, required
      - `finalized` boolean, required: Always true when the analysis failed: no further work will happen.

## Other responses

- `401`: Unauthorized - missing or invalid API key
- `404`: Job not found or expired
- `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)
