Modulify

Move a comment pin

move_comment_pin

Moves the pin of a comment to a different spot on the preview.

POST /v1/move_comment_pinScopecomments:writeMakes changes

Use it when a redesign has left a pin sitting over the wrong thing. It moves the pin position and, on a comment that is already tied to an element, its fallback coordinates. The text of the comment is untouched.

It cannot re-tie a comment to a different element, and it cannot give an element anchor to a comment that never had one. See Comments.

Request

Call it with a POST to https://api.modulify.ai/v1/move_comment_pin, sending the inputs below as a JSON object. The token needs the comments:write scope.

It makes changes, so send an Idempotency-Key header whenever you might retry it. A retry with the same key gets the first answer back instead of running again.

curl -X POST https://api.modulify.ai/v1/move_comment_pin \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"commentId":"COMMENT_ID"}'

Over MCP, the same method is the move_comment_pin tool.

Inputs

Input Type Required Description
commentId string Yes The comment id, from list_comments.
position object No The new pin position, with X (across the preview, 0 to 1), Y (down the preview, 0 to 1) and Zoom (the preview zoom it was placed at). Leaving Zoom out keeps the current zoom.
anchorDoc object No New fallback coordinates on the page, used when the anchored element is gone. It needs both DocX (across the page, 0 to 1) and DocY (down the page, 0 to 1), and is ignored on a comment that is not tied to an element.

Response

Every call answers with the JSON envelope of success, message, data, code and version. data holds the result described above, and on a method that returns a total, count carries it. The response headers carry the call's X-Request-Id and what is left of your per-minute budget in X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset. Errors explains every status code a call can answer with.