GET/social-inbox/conversations/{id}
Fetches one conversation with its full reply capability.
pf-api-keyRate limit: 300 requests per hourA missing conversation returns null, not a 404
An id that does not exist in the workspace tied to your API key comes back as 200 with a null body. Check for null before reading fields off the response.
Reply capability is server-computed
canReply, maxReplyLength, maxPrivateReplyLengthBytes, and disabledReason are computed per conversation by PostFast. Gate your UI and your validation on those fields rather than on hardcoded platform rules, so your integration keeps working when a platform changes its limits.
For context, public reply caps are currently 150 characters on TikTok, 2,200 on Instagram, 8,000 on Facebook, and 500 on Threads. maxReplyLength is the authoritative value.
Path parameters
idstring (UUID)requiredThe conversation id, from /social-inbox/conversations.
Response
200 OK The conversation, including its current reply capability and unread count.
idstring (UUID)requiredConversation id. Use it on the read, status, and assign routes.
socialMediaIdstring (UUID)requiredThe connected account the comments arrived on, as returned by /social-media/my-social-accounts.
platformstringrequiredNetwork the conversation belongs to.
TIKTOKINSTAGRAMFACEBOOKTHREADSkindstringrequiredConversation type. Always COMMENT_THREAD today.
externalConversationIdstringrequiredThe platform's id for the post the thread hangs off.
contactIdstring (UUID) | nulloptionalPostFast contact record for the participant, when one exists.
socialPostIdstring (UUID) | nulloptionalSet when the post was published through PostFast, so you can join back to /social-posts. null for posts published elsewhere.
externalPostIdstring | nulloptionalThe platform's own post id, when known.
statusstringrequiredTriage state, changed via the status route.
OPENSNOOZEDCLOSEDassignedToUserIdstring (UUID) | nulloptionalWorkspace member the conversation is assigned to, or null.
lastItemAtISO 8601 | nulloptionalWhen the newest item in the thread arrived or was sent.
lastInboundAtISO 8601 | nulloptionalWhen the newest inbound comment arrived.
lastReadAtISO 8601 | nulloptionalWhen the conversation was last marked read.
unreadCountnumberrequiredUnread inbound comments in this conversation.
lastItemPreviewstring | nulloptionalRoughly 140-character snippet of the newest item.
participantUsernamestring | nulloptionalLatest commenter's username. May be null briefly after arrival.
participantDisplayNamestring | nulloptionalLatest commenter's display name, when the platform exposes it.
participantAvatarUrlstring | nulloptionalLatest commenter's avatar, when the platform exposes it.
windowStatestringrequiredReply-window state. Always NOT_APPLICABLE for comment threads.
canReplybooleanrequiredAuthoritative: whether a public reply can be sent in this conversation right now. Gate your UI on this, not on platform assumptions.
maxReplyLengthnumberrequiredAuthoritative per-conversation character cap for a public reply. Validate against this value, not a hardcoded per-platform number.
maxPrivateReplyLengthBytesnumber | nulloptionalByte cap for a private reply. 1000 on Instagram conversations, null everywhere else.
disabledReasonstring | nulloptionalWhy replying is unavailable when canReply is false, as a stable code such as inbox.replyNotSupportedOnPlatform. null when replying is available.
postPreviewobject | nulloptionalLightweight preview of the post the thread belongs to.
captionstringoptionalPost caption, when available.
thumbnailUrlstringoptionalThumbnail image, when available.
permalinkstringoptionalLink to the post on the platform, when available.