---
title: "Reply to a DM"
method: POST
path: "/conversations/{conversationId}/reply"
tags: ["Conversations"]
---

# Reply to a DM

`POST /conversations/{conversationId}/reply`

## Request

- Base URL: `https://api.postplanify.com/api/v1`
- URL: `https://api.postplanify.com/api/v1/conversations/{conversationId}/reply`
- Auth: HTTP bearer

Sends a text reply to the customer through Instagram or Facebook Messenger. The message is delivered immediately and cannot be unsent.

## 24-hour reply window

Instagram and Facebook only allow a business to reply within 24 hours of the customer's last message. After that the request fails with `400` and the code `REPLY_WINDOW_CLOSED`, and you can reply again once the customer writes. Check `replyWindow.canReply` on the conversation first.

## Success response

Returns the sent message. The conversation's `needsReply` becomes `false`.

## Path parameters

- `conversationId` string, uuid, required

## Request body

- ReplyToConversationRequest
  - `message` string, required: The reply text. It is sent to the customer immediately and cannot be unsent. Length limits: - Instagram: 1,000 characters - Facebook: 2,000 characters

## Response `201`

Reply sent

- object
  - `ok` boolean
  - `data` Message
    - `id` string, uuid
    - `conversationId` string, uuid
    - `fromBusiness` boolean: True for messages your business sent, false for messages from the customer.
    - `type` 'TEXT' | 'IMAGE' | 'VIDEO' | 'AUDIO' | 'FILE' | 'STICKER' | 'STORY_REPLY' | 'STORY_MENTION' | 'UNKNOWN'
    - `text` string, nullable
    - `attachments` object[]: Photos, videos, audio and files sent with the message. Empty for text messages.
      - `type` string, nullable
      - `url` string, nullable
      - `mimeType` string, nullable
    - `replyToStoryUrl` string, nullable: For `STORY_REPLY` messages, the story the customer replied to.
    - `timestamp` string, date-time

## Other responses

- `400`: Validation error: missing message, reply too long, reply window closed (`REPLY_WINDOW_CLOSED`), or the account needs to be reconnected (`RECONNECT_REQUIRED`)
- `403`: Workspace requires an active Growth, Premium, or Scale subscription
- `404`: Conversation not found, or you do not have access to it
- `502`: Instagram or Facebook refused the message (`PLATFORM_ERROR`), for example because the customer blocked the account. The message gives the platform's reason.

---

[API](https://skmtc.dev/postplanify/apis/postplanify-api.md) · [All operations](https://skmtc.dev/postplanify/apis/postplanify-api/llms.txt) · [OpenAPI document](https://skmtc.dev/postplanify/apis/postplanify-api/revisions/9eae5f1faa56?raw)
