# Append an author-owned conversational reply correction.

Same-origin browser only; bearer tokens are rejected. If-Match names the message id and version. Retries reuse the same operation key and body. Decisions and other control receipts cannot be edited. C

Canonical: https://commentary.dev/docs/reference/api/revise-human-reply

`POST /api/v1/interactions/{interactionId}/messages/{messageId}/revisions`

Same-origin browser only; bearer tokens are rejected. If-Match names the message id and version. Retries reuse the same operation key and body. Decisions and other control receipts cannot be edited. Completion does not prevent correction while content and source access remain retained.

## Access

Use a credential with the authentication scheme documented in the API contract.

Provider access, workspace membership, and agent grants are enforced separately. A token does not expand access to a repository or resource. [Set up developer access](/docs/build/developer-access).

## Parameters

| Name | Location | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `interactionId` | path | string | Yes | Opaque Interaction id. |
| `messageId` | path | string | Yes |  |
| `If-Match` | header | string | Yes |  |
| `Idempotency-Key` | header | string | Yes |  |

## Request body

Required. Supported content types: `application/json`.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `body` | string | Yes | Maximum length: 16384. |

## Call the endpoint

Replace path placeholders and your credential. For body operations, create `request.json` using the required fields above; this command does not invent resource identifiers or consent.

```bash
curl --request POST \
  'https://commentary.dev/api/v1/interactions/<interactionId>/messages/<messageId>/revisions' \
  --header 'Authorization: Bearer <your-token>' \
  --header 'Content-Type: application/json' \
  --data-binary @request.json
```

## Responses

| Status | Meaning | Payload |
| --- | --- | --- |
| `200` | Successful response. | object |
| `201` | Successful response. | object |
| `400` | The request was invalid. | [ExternalError](/docs/reference/schemas/external-error) |
| `401` | Authentication is required. | [ExternalError](/docs/reference/schemas/external-error) |
| `403` | The token or session does not have permission for this resource. | [ExternalError](/docs/reference/schemas/external-error) |
| `404` | The resource was not found. | [ExternalError](/docs/reference/schemas/external-error) |
| `409` | Message version or operation key conflict. | See response headers or body contract |
| `410` | Reply content was purged. | See response headers or body contract |
| `412` | Malformed message If-Match. | See response headers or body contract |
| `428` | Message If-Match is required. | See response headers or body contract |
| `429` | The request was rate limited. | [ExternalError](/docs/reference/schemas/external-error) |

### Successful response fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | [InteractionMessage](/docs/reference/schemas/interaction-message) | No |  |

## Recover from errors

Use the returned status and error body. Correct invalid fields before retrying; reconnect or narrow the target for authentication and permission errors. For conditional writes, reload the latest version before preparing a new request. Respect rate-limit headers and retry only when the operation’s idempotency contract permits it.

## Contract and related guidance

Operation ID: `reviseHumanReply`. [Download the OpenAPI contract](/docs/reference/openapi.json) for complete constraints and code generation. [Browse endpoints](/docs/reference/api-operations).
