---
title: "Reply to a profile comment"
method: POST
path: "/api/profiles/{profile_id}/comments"
tags: ["Profile Comments"]
---

# Reply to a profile comment

`POST /api/profiles/{profile_id}/comments`

## Request

- Base URL: `https://api.postproxy.dev`
- URL: `https://api.postproxy.dev/api/profiles/{profile_id}/comments`
- Auth: HTTP bearer

Creates a reply to an existing review. The reply is stored immediately with status pending and external_id null; it is then published to the platform. Top-level comments cannot be created — the request returns 422 if parent_id is missing.

## Query parameters

- `profile_group_id` string

## Headers

- `Idempotency-Key` string

## Request body

- ProfileCommentCreateRequest: Payload for replying to an existing review. Top-level comments cannot be authored — parent_id is required.
  - `parent_id` string, required: Postproxy ID or external ID of the review being replied to
  - `body` string, required: Reply body. (The legacy text parameter is still accepted as an alias.)

## Response `201`

Reply created with status pending and external_id null; published asynchronously.

- ProfileComment: A profile-scoped comment — a Google Business Profile review, a Facebook Page recommendation, or a reply to one.
  - `id` string: Postproxy comment ID (hashid)
  - `external_id` string, nullable: Platform's native resource ID (null while a reply is pending publication)
  - `parent_external_id` string, nullable: External ID of parent review (null for top-level reviews)
  - `placement_id` string: Location path (e.g. accounts/X/locations/Y)
  - `body` string, nullable: Comment/review text. Google Business reviews can be star-only: body is null while platform_data.star_rating is still populated.
  - `status` 'synced' | 'pending' | 'published' | 'failed' | 'failed_waiting_for_retry' | 'deleted'
  - `error` string, nullable: Error summary if an outgoing reply failed (null otherwise)
  - `error_details` PlatformErrorDetails, nullable: Structured platform error (omitted when no platform error info is available).
    - `platform_error_code` string, nullable: Error code returned by the platform API
    - `platform_error_subcode` string, nullable: Error subcode returned by the platform API
    - `platform_error_message` string, nullable: Error message returned by the platform API
    - `postproxy_note` string, nullable: Additional context from Postproxy about the error
  - `author_username` string, nullable: Display name of reviewer (null for your own replies)
  - `author_avatar_url` string, nullable: Profile image URL
  - `platform_data` object, nullable: Platform-specific metadata (e.g. star_rating, update_time for Google reviews; recommendation_type for Facebook recommendations)
  - `permalink` string, nullable: URL to the comment on the platform (the location's reviews page on Google or the Page's reviews tab on Facebook — shared by all reviews and replies on that location / Page; null if unavailable)
  - `posted_at` string, nullable: ISO 8601 timestamp of platform posting
  - `created_at` string: ISO 8601 timestamp of record creation
  - `replies` ProfileComment[]: Nested replies to this comment, sorted by created_at ascending (present on list/get responses)

## Other responses

- `400`: Missing required parameters.
- `401`: Invalid, missing, or insufficient API key permissions.
- `404`: Resource does not exist or is not accessible.
- `405`: Unsupported method for this platform or resource.
- `422`: Validation failed.

---

[API](https://skmtc.dev/postproxy/apis/postproxy-social-media-api.md) - [All operations](https://skmtc.dev/postproxy/apis/postproxy-social-media-api/llms.txt) - [OpenAPI document](https://skmtc.dev/postproxy/apis/postproxy-social-media-api/revisions/d54482ac4ce7?raw)
