Skip to content

Editorial comments

Requires a license with the content-pro feature. See pricing.

Editorial comments let your team talk about an entry where the entry is. A first comment opens a thread, and replies stay under it, one level deep. Resolve a thread when it is settled and reopen it if it is not. Mention a colleague and they get an email.

PartWhat it does
ThreadA first comment with no parent_id. It can be resolved and reopened.
ReplyA comment whose parent_id is the thread's first comment. A reply to a reply lands in the same thread.
MentionA user id in mentions. Each person mentioned gets an email when email is set up. Without it the comment is still saved and nobody is mailed.

Threads belong to the entry and are deleted with it. When a person's data is erased, their comments keep the text and lose the author.

Run this on an install whose license carries content-pro. You need an admin token in TOKEN. The quickstart shows how to get one. Copy an entry's id into ENTRY_ID, for example from Content lifecycle.

  1. Open a thread:

    Terminal window
    curl -X POST http://localhost:3001/api/admin/content/entries/$ENTRY_ID/comments \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"body": "Can we shorten the second paragraph?"}'
    {
    "id": "f57403a3-5392-4663-90bb-9554fc919823",
    "entry_id": "059b65ff-ef7e-4e3a-8ea8-fa543834804a",
    "author_id": "3e7cc859-1207-4c7c-9af2-363fa5079e0b",
    "body": "Can we shorten the second paragraph?",
    "mentions": [],
    "resolved": false,
    "created_at": "2026-10-03T15:06:55Z",
    "updated_at": "2026-10-03T15:06:55Z"
    }

    The answer is 201. Copy its id into THREAD_ID.

  2. Reply to it:

    Terminal window
    curl -X POST http://localhost:3001/api/admin/content/entries/$ENTRY_ID/comments \
    -H "Authorization: Bearer $TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"body": "Done, it is two sentences now.", "parent_id": "'"$THREAD_ID"'"}'
  3. Resolve the thread:

    Terminal window
    curl -X POST http://localhost:3001/api/admin/content/entries/$ENTRY_ID/comments/$THREAD_ID/resolve \
    -H "Authorization: Bearer $TOKEN"

    The answer is the first comment with "resolved": true, resolved_by and resolved_at.

  4. List the resolved threads:

    Terminal window
    curl "http://localhost:3001/api/admin/content/entries/$ENTRY_ID/comments?state=resolved" \
    -H "Authorization: Bearer $TOKEN"

    The answer is {"data": [...]}, with the thread and its reply under replies.

  5. In the admin console, the Comments panel on an entry's page shows the threads, with New thread, Reply and Mention.

FieldMeaning
bodyThe comment, required, at most 10,000 bytes.
parent_idThe first comment of the thread to reply to. Leave it out to open a thread.
mentionsUp to 20 user ids of people in your tenant.

GET .../comments takes ?state=open, resolved or all, the default. Each thread comes with its replies, oldest first. .../resolve and .../reopen work on the first comment of a thread only.

Your threads stay. Reading, resolving and reopening stay free. Writing a new comment or a reply needs content-pro again.

Every route needs the admin or super_admin role. An admin token can list with the content:read grant and write with content:write.

MethodPathPurposeNeeds content-pro
GET/api/admin/content/entries/{id}/commentsThe entry's threads.No
POST/api/admin/content/entries/{id}/commentsOpen a thread or reply. Answers 201.Yes
POST/api/admin/content/entries/{id}/comments/{commentID}/resolveResolve a thread.No
POST/api/admin/content/entries/{id}/comments/{commentID}/reopenReopen a thread.No
StatusMessageCause
400invalid JSON bodyThe body does not parse.
400state must be open, resolved or allAn unknown state.
400a mentioned person has no account hereA mention is not an account of your tenant.
400the comment replied to is not on this entryparent_id belongs to another entry.
400only the first comment of a thread can be resolved or reopenedResolve the thread, not a reply.
402payment_required, naming feature:content-proWriting a comment without content-pro.
404entry or comment not foundNo such entry or comment in your tenant.
422body is required and at most 10000 bytesFix the body.
422a comment mentions at most 20 peopleMention fewer people.