---
title: "Like a post or comment"
method: POST
path: "/v1/likes"
tags: ["Likes"]
---

# Like a post or comment

`POST /v1/likes`

## Request

- Base URL: `https://api.taplio.com`
- URL: `https://api.taplio.com/v1/likes`
- Auth: HTTP bearer

Queues a like on `post_urn`. That can be a **post** — the activity urn `GET /v1/engagement/feed` serves, a `urn:li:share:` or `urn:li:ugcPost:` urn, or the post's LinkedIn url including a `lnkd.in` short link — or a **comment**, by its `urn:li:comment:(activity:<post id>,<comment id>)` urn as `GET /v1/comments` returns it. A post has two identities, `urn:li:activity:` and `urn:li:ugcPost:`, with different ids; whichever one you name is the one that gets liked and the one every response echoes, so `GET /v1/likes/{post_urn}` matches on it and the same post named the other way is a separate like. A url or a `urn:li:share:` urn is resolved to the activity urn it names. Liking a post and liking one of its comments are two separate likes. A `lnkd.in` link we cannot open, or a share or ugcPost urn LinkedIn will not resolve, answers `422 url_content_unavailable`; anything we cannot read as a post or a comment in the first place answers `400 validation_failed`. Resolving a share or ugcPost urn reads the post from LinkedIn; the like itself is queued, not sent, during this request. `scheduled_for` is when the like is due to go out, following the account's sending schedule and office hours, so it can be minutes away or the next morning. Calling it again for a post already queued answers `200` with the like in flight instead of queueing a second one, so it is safe to retry. A like the account cannot send within its scheduling horizon is refused with `409 like_blocked`. Likes made from the Taplio app's own like button are not tracked here.

## Request body

- object
  - `post_urn` string, required

## Response `200`

A like for this post was already in flight.

- Like
  - `created_at` string, date-time, required
  - `failure_code` string
  - `failure_reason` string
  - `post_urn` string, required
  - `scheduled_for` string, date-time
  - `status` 'pending' | 'liked' | 'failed' | 'cancelled', required
  - `url` string, required

## Other responses

- `201`: Like queued.
- `400`: Validation failed.
- `401`: Missing or invalid API key.
- `402`: Subscription payment failed.
- `403`: Subscription does not allow this request.
- `404`: Resource not found.
- `409`: Resource state precludes this request.
- `422`: Request semantically rejected.
- `429`: Rate limit exceeded.
- `500`: Internal server error.
- `503`: Upstream unavailable.

---

[API](https://skmtc.dev/taplio/apis/taplio-rest-api.md) · [All operations](https://skmtc.dev/taplio/apis/taplio-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/taplio/apis/taplio-rest-api/revisions/961302019f3f?raw)
