# Comment

Schemas

A public comment or reply on a post, with its author, thread position and like/reply counts.

## Endpoints

3 endpoints return comments on Rumble, TikTok and YouTube.

- [GETRumble Comments API`/v1/rumble/comments`](https://staging-fly.socialtap.dev/docs/reference/rumble/comments/index.md)
- [GETTikTok Comments API`/v1/tiktok/comments`](https://staging-fly.socialtap.dev/docs/reference/tiktok/comments/index.md)
- [GETYouTube Comments API`/v1/youtube/comments`](https://staging-fly.socialtap.dev/docs/reference/youtube/comments/index.md)

## Schema

Every endpoint above returns an array of these objects as `data`, with a [`page`](https://staging-fly.socialtap.dev/docs/pagination/index.md) object. The standard [`meta`](https://staging-fly.socialtap.dev/docs/reference/index.md#meta) comes with every response.

| Field | Type | Description |
| --- | --- | --- |
| `platform` | `string` | Platform ID (tiktok, youtube, …). |
| `id` | `string` | Platform-native comment ID (string; Reddit without t1_). |
| `post_id` | `string` | ID of the post commented on (equals post.id). |
| `parent_id` | `string` or `null` | ID of the comment this replies to; null for top-level comments. |
| `url` | `string` (uri) or `null` | Permalink, when the platform has one. |
| `text` | `string` | Comment body as plain text. |
| `author` | `object` | The commenting account. |
| `author.id` | `string` or `null` | Platform-native account ID; null when only the handle is known. |
| `author.username` | `string` or `null` | Handle without the @; null when the account has none. |
| `author.display_name` | `string` or `null` | Display name shown on the profile. |
| `author.url` | `string` (uri) or `null` | Canonical profile URL. |
| `author.avatar_url` | `string` (uri) or `null` | Profile picture URL. Platform CDN URLs can expire within hours. |
| `author.is_verified` | `boolean` or `null` | Platform verification badge; null where the platform has no badge. |
| `published_at` | `string` (date-time) or `null` | When the comment was posted, RFC 3339 UTC. Where the platform shows only a relative time ("3 weeks ago"), the latest time that label allows (the fetch time minus the stated amount), listed in approximate_fields. |
| `edited_at` | `string` (date-time) or `null` | When the comment was last edited, RFC 3339 UTC; null when never edited or when the platform marks edits without a time (see is_edited). |
| `is_edited` | `boolean` or `null` | The comment was edited after posting (the platform's edited mark); null when the platform does not say. |
| `is_pinned` | `boolean` or `null` | Pinned by the post's author. |
| `is_liked_by_author` | `boolean` or `null` | Liked or hearted by the post's author. |
| `is_by_post_author` | `boolean` or `null` | Written by the post's author (the creator's own comment, marked as such by the platform). |
| `metrics` | `object` | Counts at fetch time; null = hidden or not exposed, 0 = zero. |
| `metrics.like_count` | `integer` or `null` | Likes or upvotes; never negative. |
| `metrics.reply_count` | `integer` or `null` | Direct replies. |
| `platform_specific` | `object` | Fields only this platform has, under its ID (platform_specific.\<platform>); each null when unknown. |
| `platform_specific.tiktok` | `object` or `null` | TikTok's own comment fields. |
| `platform_specific.tiktok.language` | `string` or `null` | The comment's language as TikTok detected it, an ISO 639-1 code (en, fr); null when TikTok could not tell (emoji, a name) or does not say. |
| `platform_specific.rumble` | `object` or `null` | Rumble's own comment fields. |
| `platform_specific.rumble.dislike_count` | `integer` or `null` | Thumbs-down votes on the comment. Exact below 1,000; from 1,000 Rumble shows a label such as "1.31K", taken to be cut to three significant digits as Rumble's other counts are (not checked against an exact count), and listed in approximate_fields. |
| `platform_specific.rumble.author_badges` | `string[]` | The badges Rumble shows beside the commenter's name, by their label as Rumble writes it (seen: Verified, Admin, Moderator, Supporter, Supporter+, Supporter++, Sub, Locals Supporter; new labels may appear). \[\] when none. |
| `approximate_fields` | `string[]` | JSON paths of values rounded by the platform or parsed from display text. A list path (external_links) means the list may be incomplete. \[\] when all exact. |
| `unknown_fields` | `string[]` | JSON paths of lists whose \[\] means unknown rather than none (a source that cannot see them); null already means unknown for every other field. \[\] when every list is known. |

## Item errors

Besides the [request-level errors](https://staging-fly.socialtap.dev/docs/errors/index.md) every endpoint can return, comment endpoints return:

| Code | HTTP | Retry | Meaning | What to do |
| --- | --- | --- | --- | --- |
| `not_found` | 404 | No | The item does not exist or was deleted. | Check the URL or ID; do not retry. |
| `private_or_unavailable` | 403 | No | The item exists but is private, age- or region-gated, or requires a login to view. It shares 403 with forbidden (which is about the key): branch on the code. | Only public items can be fetched; do not retry. |

---

[HTML version](https://staging-fly.socialtap.dev/resources/comment/) · [Docs index for AI agents](https://staging-fly.socialtap.dev/llms.txt) · [All docs in one file](https://staging-fly.socialtap.dev/llms-full.txt)
