---
title: "Reply to comment"
method: POST
path: "/v1/inbox/comments/{postId}"
tags: ["Comments"]
---

# Reply to comment

`POST /v1/inbox/comments/{postId}`

Post a reply to a post or specific comment. Requires accountId in request body.

**Idempotency:** send an `Idempotency-Key` header to make retries safe
(e.g. after a client-side timeout where delivery is unknown): same key +
same body replays the original response (with `Idempotent-Replayed: true`)
instead of posting the comment a second time; same key + different body
returns 422; a key still in flight returns 409. Keys are retained for 24
hours and are scoped to the credential and to this exact path, so reusing
a key against a different postId returns 422 rather than replaying the
other post's response.

Only successful (2xx) responses are stored for replay. If the request
throws or returns a non-2xx status the key is released, so the header
protects the "request succeeded but the response was lost" case. After an
ambiguous failure (a 5xx or a network timeout) list the post's comments
before retrying with the same key, and treat an empty result as
inconclusive rather than as proof nothing was posted.

## Path parameters

- `postId` string, required

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `accountId` string, required
  - `message` string, required
  - `attachmentUrl` string, uri — (Facebook only) URL of an image to attach, publishing a photo comment alongside the text. The URL must be publicly accessible so Meta can fetch it. Returns 400 for other platforms.
  - `commentId` string — Reply to specific comment (optional)
  - `parentCid` string — (Bluesky only) Parent content identifier
  - `rootUri` string — (Bluesky only) Root post URI
  - `rootCid` string — (Bluesky only) Root post CID

## Response `200`

Reply posted

- object
  - `success` boolean
  - `data` object
    - `commentId` string
    - `isReply` boolean
    - `cid` string, nullable — Bluesky CID

## Other responses

- `400` — Invalid request (e.g. attachmentUrl on a platform other than Facebook, code PLATFORM_NOT_SUPPORTED)
- `401` — Unauthorized
- `403` — Inbox addon required, or the connected account is not permitted to comment on this post on the platform (code platform_api_error, type platform_error)
- `409` — Same Idempotency-Key still processing; retry after a short backoff
- `422` — Idempotency-Key reused with a different request
- `429` — The connected account's upstream platform quota is exhausted. Reddit rate-limits per connected Reddit user (1000 requests per 10-minute window), and that budget is shared by every operation using that account. Retry after the window resets rather than retrying immediately; repeated calls while exhausted do not succeed and keep the budget spent.
- `502` — Upstream platform error (code platform_api_error, type platform_error)

## Changes

- **2026-08-29** `e6f7a453bfb1` — 3 info
  - added the new optional `header` request parameter `Idempotency-Key`
  - added the non-success response with the status `409`
  - added the non-success response with the status `422`

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/inbox/comments/:postId/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/zernio/zernio-api/revisions/0caf79db3a97/schema)
