content_comments_apply
# content_comments_apply
Send a seller reply or inquiry answer, or moderate one exact comment.
Read the [shared content contract](../guides/content-apps.md) for authorization, app identity, result interpretation and recovery.
## Inputs and actions
Require channelCode, pAppCode, postId, requestId and expectedRevision from [content_comments_get](content_comments_get.md). dryRun defaults to false. Sending a reply is communication and requires the human's instruction to send it; a schema or available tool is not that instruction.
| action.kind | Fields and limits |
| --- | --- |
| reply | content: 2–3000 UTF-16 units for ordinary comments; inquiry answer HTML 2–15000 serialized units. Author name/image come from the authenticated channel profile. |
| delete | Observed commentId and confirmation DELETE_COMMENT. Permanent, without undo. |
The selected comment must be in the complete post snapshot. Outlink/welcome do not support this editor. The generic schema's 15000 maximum does not override the runtime 3000-unit guard for ordinary replies.
## Results and recovery
CONTENT_COMMENT_SAVED returns taskId, the selected comment (null after delete), revision and stored readback/preservation indicators. Other normalized comments and post fields are compared. Delivery to readers, notifications, console rendering and restoration are not verified by that stored comparison.
Use taskType `content-comments`. A sent operation is never replayed; identical apply or task_resume only reads back. An uncertain reply without a trustworthy returned ID cannot be adopted by matching its text or reposted. Preserve the task on COMMENT_OUTCOME_UNVERIFIED / COMMENT_CREATE_ID_UNKNOWN. Completed replay is historical. Pin/delete use the observed comment identity, not its row position or author ID.
## Input example
This is an input illustration, not a recorded call. Replace the channel, app, observed IDs and all-zero revision with values from the matching authorized read. A dry run does not save changes.
```json
{
"channelCode": "selected-channel",
"pAppCode": "B00001",
"requestId": "example-request-001",
"expectedRevision": "0000000000000000000000000000000000000000000000000000000000000000",
"dryRun": true,
"action": {
"kind": "pin",
"commentId": 1,
"pinned": true
},
"postId": 1
}
```