---
title: "Like post"
method: POST
path: "/v1/inbox/posts/{postId}/like"
tags: ["Comments"]
---

# Like post

`POST /v1/inbox/posts/{postId}/like`

Like (or react to) a post as a connected account. Supported platforms: LinkedIn,
Twitter/X, Facebook, YouTube, Bluesky, and Instagram in limited release (see below).
Threads, TikTok and Pinterest
expose no like endpoint in their APIs and return 400. Reddit returns 400 too,
pointing at `POST /v1/accounts/{accountId}/reddit-vote`, which covers upvote,
downvote and clear on both posts and comments.

The account does not have to be the one that published the post, which is what
makes executive engagement possible: pass an exec's `accountId` and the brand
post's ID. `postId` accepts either a Zernio post ID or the platform's native post
ID. A Zernio post ID resolves to the entry for `accountId`, falling back to the
post's single entry on the same platform (two entries on that platform is a 400,
so pass the native ID).

LinkedIn requires the `w_member_social_feed` / `w_organization_social_feed`
scopes, which are not retroactive: accounts connected before those were requested
get a 403 with code `linkedin_reconnect_required` until the user reconnects the
account. YouTube spends 50 quota units per call.

Instagram is in LIMITED RELEASE and not generally available: the call needs
`instagram_manage_engagement`, which Meta has so far granted this app only under
Standard Access, so it works for app admins, developers and testers of our Meta app
and returns a 403 with code `PLATFORM_BETA_RESTRICTED` for every other account.
That restriction lifts when Meta App Review grants Advanced Access; the constraints
below apply once it does.

Instagram covers feed images, reels and carousels (stories and private-account
media are not likeable). Only an account connected through Facebook Login can be
granted `instagram_manage_engagement`: an Instagram Login
connection returns a 400 with code `instagram_likes_require_facebook_login`, and an
account whose token predates the permission returns a 403 with code
`reconnect_required`. Instagram also enforces a burst limit of 50 like or unlike
calls per 5 seconds per Instagram account, and exceeding it locks that account out
of the like API for an hour, so pace bulk loops.

## Path parameters

- `postId` string, required

## Request body

- object
  - `accountId` string, required — The social account acting as the liker
  - `reactionType` 'LIKE' | 'PRAISE' | 'EMPATHY' | 'INTEREST' | 'APPRECIATION' | 'ENTERTAINMENT' — (LinkedIn only) Reaction to create. Defaults to LIKE; ignored on other platforms.
  - `cid` string — (Bluesky only) Content identifier of the post

## Response `200`

Post liked

- object
  - `status` string
  - `postId` string — The resolved native post ID
  - `platform` string
  - `liked` boolean
  - `likeUri` string — (Bluesky only) URI to use for unliking

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — Inbox addon required, or the account is missing the platform scope
- `404` — Account or post not found

## Changes

- **2026-08-10** `f81ca70ea6b9` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/inbox/posts/:postId/like/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/017dff7e4324/schema)
