Review & Approvals
Leave notes pinned to a moment, a clip, or a spot on canvas, resolve them, and gate a cut behind a set number of approvals.
Review center is where feedback on a composition lives. Notes are anchored to an exact place in the edit, so nobody has to write "around the middle of the second shot". It is for anyone who reviews cuts: the editor, a producer, a client with commenter access.
Open Review center
Go to /review/<compositionId>, using the composition's numeric ID. The page loads its
comment threads and its checkpoints together.
Leave an anchored note
The Add anchored note card attaches feedback to the playhead, a clip, or an element on canvas.
Fill the value box. For Time it is Seconds. For Clip and Canvas it is the Element ID.
Type the note in Leave precise feedback... and press Comment, or press Enter.
Each thread appears below with a badge showing its anchor type and value, the author, and the time it was written.
Resolve and reopen
Every thread carries one button. Resolve closes it and fades the card. The same button then reads Reopen and brings it back. Klipeo records who resolved it and when.
Replies to a thread go through POST /api/comments/{id}. The Review center screen does
not have a reply box, so a reply has to come from the API today.
Who can comment
Commenting, replying, and resolving all need the same permission. Creating a review and restoring a checkpoint need edit permission.
| Access | Comment, reply, resolve | Create a review, restore a checkpoint |
|---|---|---|
| Owner | Yes | Yes |
| Admin | Yes | Yes |
| Editor | Yes | Yes |
| Commenter | Yes | No |
| Viewer | No | No |
Access comes from owning the project, from a project collaborator invite, or from workspace membership. For anyone who is not the project owner, an active paid plan on the billing account is checked on every request.
Version history
The right side of Review center lists checkpoints, newest first. Each one shows its message, the first 10 characters of its git commit SHA or Live snapshot when there is no commit, and the time it was taken. The restore button asks "Restore this checkpoint as the current composition?" before it does anything.
Restoring writes the snapshot into the live composition room and into the saved composition, and it logs an entry to the project activity. Checkpoints come from committing on your branch, which is covered in Projects on GitHub.
Approvals
A review is a named request for sign-off on a project, with a number of approvals it needs before it counts as approved. Reviews have API support but no screen yet, so they are driven through the endpoints below.
Prop
Type
Create one with POST /api/projects/{id}/reviews and list them with
GET /api/projects/{id}/reviews, newest update first. A review starts with status
open.
A reviewer decides with POST /api/reviews/{id}/decision, sending decision as either
approved or changes_requested, plus an optional body. Each reviewer holds one
decision. Sending a second one replaces the first rather than adding a vote.
The review's status is recalculated on every decision:
- Any
changes_requestedsets the status tochanges_requested. - Otherwise, once the count of approvals reaches
requiredApprovals, the status becomesapproved. - Otherwise it stays
open.
Changes requested is not permanent
Status is derived from the decisions on file. When the reviewer who asked for
changes switches to approved, the next recalculation can move the review to
approved.
Project activity
GET /api/projects/{id}/activity returns what happened on the project, newest first,
up to 200 entries with ?limit=. Starting a thread records a summary such as "Started a
time-anchored review thread", and a restore records "Restored checkpoint:" with the
checkpoint message. Anyone with project access can read it.
When something fails
| What you see | Why |
|---|---|
| The page loads with no threads and no checkpoints | You do not have access to the project that owns the composition |
| Comment or resolve is refused | You have viewer access, or the plan on the billing account is not active |
| Restore is refused | Restoring needs edit access |
| Restore fails outright | The live composition room could not be written, so nothing is changed |
| A decision is refused | Deciding needs at least commenter access on the project |