---
title: "Create comment"
method: POST
path: "/public-video-review/{link_id}/comments"
tags: ["Public - Comments"]
---

# Create comment

`POST /public-video-review/{link_id}/comments`

Creates a new comment on a video through the public review link.

## Authentication

| Parameter | Type | Description |
|-----------|------|-------------|
| `link_id` | path | Review link identifier |
| `token` | query | User session token |

The `token` will be associated with the created comment. To edit or delete this comment later, use the same `token`. The token can be the same value as `link_id` or a unique identifier generated by the application.

**Example:** `550e8400-e29b-41d4-a716-446655440000`

## Behavior

To create a main comment:
- Provide `text`, `user_name` and `time` (video timestamp in seconds)
- The `time` must be less than or equal to the video duration

To create a reply to an existing comment:
- Provide `text`, `user_name` and `reply_to` (UUID of the parent comment)
- The `time` is automatically inherited from the parent comment

## Limits

- Maximum of 30 main comments per video
- Maximum of 30 replies per comment
- Text with maximum 500 characters

## Requirements

- The link must have `allow_comment: true`
- The link must be active and not expired

## Path parameters

- `link_id` string, uuid, required

## Query parameters

- `token` string, uuid, required

## Request body

- CreateCommentPublicRequest
  - `text` string, required — Comment text. Does not allow HTML tags or special characters like `< > { } [ ]`.
  - `user_name` string, required — Name of the user commenting. Allows letters, numbers, spaces and the characters `- _ . @`.
  - `time` integer — Video timestamp in seconds where the comment refers to. Required for main comments, optional for replies (inherits from parent). Examples: - 90 = 1:30 (1 minute and 30 seconds) - 330 = 5:30 (5 minutes and 30 seconds) - 3600 = 1:00:00 (1 hour)
  - `reply_to` string, uuid — Parent comment UUID. When provided, creates a reply linked to the specified comment.

## Response `201`

Comment created successfully

- CommentResponse
  - `id` string, uuid — Comment unique UUID.
  - `video_id` string, uuid — UUID of the video the comment belongs to.
  - `user_id` string, uuid, nullable — UUID of the user who created the comment (available only in private API).
  - `user_name` string — Name of the user who created the comment.
  - `text` string — Comment text.
  - `status` 'open' | 'resolved' — Current comment status.
  - `time` integer — Video timestamp in seconds.
  - `reply_to` string, uuid, nullable — Parent comment UUID (null for main comments).
  - `avatar` string, uri, nullable — User avatar URL (available only in private API when user has an avatar).
  - `created_at` string, date-time — Comment creation date and time.
  - `updated_at` string, date-time — Last update date and time.

## Other responses

- `400` — Invalid input data
- `401` — Invalid or missing token
- `403` — Link inactive, expired or comments disabled

---

[API](https://skmtc.net/pandavideo/apis/api-v2.md) · [All operations](https://skmtc.net/pandavideo/apis/api-v2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pandavideo/api-v2/revisions/4fbd3c623ca9/schema)
