---
title: "Comments on a video"
method: GET
path: "/v1/raw/{platform}/video/comments"
tags: ["Raw"]
---

# Comments on a video

`GET /v1/raw/{platform}/video/comments`

## Request

- Base URL: `https://api.virlo.ai`
- URL: `https://api.virlo.ai/v1/raw/{platform}/video/comments`
- Auth: HTTP bearer

Top-level comments on one video (no replies). Takes a TikTok video, YouTube video or Instagram post by `url` or `id` (exactly one); the format is not checked. One platform page per call. Follow `pagination.next_cursor` for more; page sizes are set by the platform. Live data fetched at request time, not stored by Virlo. Typical latency is a few seconds, up to about 25 s. 1 credit ($0.01) per call, including an empty page. Errors (400, 404, 5xx) are not billed.

## Path parameters

- `platform` 'tiktok' | 'youtube' | 'instagram', required

## Query parameters

- `url` string
- `id` string
- `cursor` string

## Response `200`

- RawCommentPageResponseDto
  - `data` RawCommentDto[], required: One upstream page. Can be empty (still billed).
    - `id` string, required
    - `text` string, required
    - `published_at` string, date-time, nullable, required: ISO 8601 UTC.
    - `likes` number, nullable, required
    - `reply_count` number, nullable, required
    - `author` RawAuthorRefDto, required
      - `id` string, nullable, required: Platform user or channel ID.
      - `handle` string, nullable, required: Handle without the leading @.
      - `display_name` string, nullable, required
      - `avatar_url` string, nullable, required: Avatar image URL on the platform CDN. These links can expire.
      - `verified` boolean, nullable, required
  - `pagination` RawPaginationDto, required
    - `next_cursor` string, nullable, required: Pass as `cursor` to get the next page. Null on the last page.
    - `has_more` boolean, required: True when next_cursor is set.

## Other responses

- `400`: Invalid input (`validation_error`), operation not offered on this platform (`unsupported_platform`), or a bad cursor (`invalid_cursor`). Not billed.
- `401`: Missing or invalid API key (`missing_api_key` / `invalid_api_key`)
- `402`: Not enough credits (`insufficient_credits`).
- `404`: The platform has no public item for this input (`not_found`). Not billed.
- `429`: Rate limit exceeded (`rate_limit_exceeded`); see the Retry-After header
- `502`: The platform did not return data (`upstream_error`). Retry. Not billed.
- `503`: Temporarily unavailable (`service_unavailable`). Retry later. Not billed.
- `504`: The platform took too long to answer (`request_timeout`). Retry. Not billed.

---

[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)
