Skip to main content

Post Details API

Written by Kadri - RichAPI Support Team

POST /post_details • Credits: 1 credit per call

Post Details returns the full detail of one LinkedIn post. One call returns the post text, the author, the attached media, the reaction counts, the comment list and the reaction list. One POST call costs 1 credit, which is $0.02 on the 1,000 and 5,000 credit packs.

What does Post Details do?

A post identifier from a search result carries a short summary and nothing more. Post Details takes that identifier and returns the whole post as JSON. The data source is LinkedIn. One call returns the post text in commentary, the author in actor, and the attachment in content. The same call returns the totals in numReactions and numComments. Two boolean parameters add the full comment list and the full reaction list to the same response. The price stays at 1 credit per call for every combination of the two parameters.

Which endpoint does Post Details use?

  • Method:POST

  • URL:https://api.richapi.ai/api/v1/post_details

  • Authentication:x-api-key header

  • Request format: JSON request body

  • Response: Synchronous JSON

  • Credits: 1 credit per call

Post Details accepts the POST method only. Every parameter goes in the JSON request body. If you send GET, the API returns 405 with the message post_details only supports POST.

Which post identifier does Post Details accept?

Post Details accepts a LinkedIn activity URN in the urn parameter, for example urn:li:activity:7458532524865232896. Post Details does not accept a post URL. The request body has no url parameter, and the API returns 400 with the message Unknown input field(s): url.

To build the URN from a public LinkedIn post URL, read the digits after -activity- in the URL. Add the prefix urn:li:activity: to those digits.

Source

Value

URN to send

Post URL

https://www.linkedin.com/posts/alexmercer_api-gtm-activity-7458532524865232896-a72A

urn:li:activity:7458532524865232896

LinkedIn Company Posts response

elements[].id is 7458532524865232896

urn:li:activity:7458532524865232896

Post Keyword Search response

The activity identifier of the matched post

urn:li:activity:<id>

How to send a Post Details request

  1. Copy your API key from the RichAPI dashboard.

  2. Find the activity URN of the post.

  3. Set urn in the JSON request body.

  4. Set comments to true so that the response holds the comment list.

  5. Set reactions to true so that the response holds the reaction list.

  6. Send a POST request to https://api.richapi.ai/api/v1/post_details.

  7. Send the API key in the x-api-key header.

  8. Read the post text from commentary in the response.

  9. Read numReactions and numComments for the engagement totals.

CAUTION: Set comments and reactions in every request body. The two parameters change the response, and they do not change the price of 1 credit per call.

cURL

curl -X POST https://api.richapi.ai/api/v1/post_details   
-H "x-api-key: YOUR_API_KEY"
-H "Content-Type: application/json"
-d '{
"urn": "urn:li:activity:7458532524865232896",
"comments": true,
"reactions": true
}'

Python

import requests

response = requests.post(
"https://api.richapi.ai/api/v1/post_details",
headers={"x-api-key": "YOUR_API_KEY"},
json={
"urn": "urn:li:activity:7458532524865232896",
"comments": True,
"reactions": True,
},
timeout=60,
)
response.raise_for_status()
print(response.json())

Node.js

const response = await fetch("https://api.richapi.ai/api/v1/post_details", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
urn: "urn:li:activity:7458532524865232896",
comments: true,
reactions: true,
}),
});

const data = await response.json();
console.log(data);

What parameters does Post Details accept?

Post Details accepts three parameters. The urn parameter is required. The two boolean parameters are optional.

Parameter

Type

Required

Default

Description

urn

string

Yes

—

LinkedIn activity URN of the post, for example urn:li:activity:7458532524865232896. A post URL is not a valid value.

comments

boolean

No

true

true adds the full comment list to the comments array in the response.

reactions

boolean

No

true

true adds the full reaction list to the reactions array in the response.

The request body accepts the three parameter names above and no others. If the body holds any other key, the API returns 400 with the message Unknown input field(s): <name>.

What does Post Details return?

The example below shows one Post Details response. The values are illustrative. The field names are the real field names.

{
"urn": "urn:li:activity:7458532524865232896",
"threadUrn": "urn:li:ugcPost:7458532523891765248",
"shareUrn": "urn:li:ugcPost:7458532523891765248",
"shareUrl": "https://www.linkedin.com/posts/alexmercer_api-gtm-activity-7458532524865232896-a72A",
"commentary": "We replaced four outbound data vendors with two last quarter. Cost per verified contact dropped 38%. I wrote up the whole teardown, including the two vendors we kept and why.\n\nSlides attached. Questions welcome in the comments.\n\n#outbound #revops #gtm",
"numReactions": 412,
"numComments": 34,
"reactionType": {
"like": 331,
"praise": 48,
"empathy": 19,
"interest": 14
},
"sponsored": false,
"actor": {
"profileId": "ACoAADSlaZgBSwytnwyWSoHJGmT0LGmDG8twWnU",
"firstName": "Alex",
"lastName": "Mercer",
"headline": "VP Revenue Operations at Northwind Analytics",
"profilePicture": "https://media.licdn.com/dms/image/v2/D5603AQF7kLmXn2pQrw/profile-displayphoto-shrink_400_400/0/1774288193044",
"entityUrn": "urn:li:fsd_profile:ACoAADSlaZgBSwytnwyWSoHJGmT0LGmDG8twWnU",
"profileType": "member"
},
"content": {
"document": {
"title": "Outbound Data Stack Teardown 2026",
"totalPages": 14,
"documentUrl": "https://media.licdn.com/dms/document/media/v2/D4E1FAQGh8vTnQ2mKpw/feedshare-document-pdf-analyzed/0/1774288402118",
"expiry": 1786742400000
}
},
"comments": [
{
"id": "urn:li:comment:(urn:li:activity:7458532524865232896,7458701223948013568)",
"comment": "The slide on vendor overlap matched our own audit almost exactly. We cut three tools and kept the same coverage.",
"totalComments": 2,
"totalReactions": 11,
"url": "https://www.linkedin.com/feed/update/urn:li:activity:7458532524865232896?commentUrn=urn%3Ali%3Acomment%3A7458701223948013568",
"commenter": {
"profileId": "ACoAABq7T1kBn4XdLpWcRvHs2YtEuQm9Kx3Zb0A",
"firstName": "Priya",
"lastName": "Raghunathan",
"headline": "Head of Demand Generation at Corvus Labs",
"profilePicture": "https://media.licdn.com/dms/image/v2/C4D03AQHp2wYtNvKmLQ/profile-displayphoto-shrink_400_400/0/1751204118337",
"entityUrn": "urn:li:fsd_profile:ACoAABq7T1kBn4XdLpWcRvHs2YtEuQm9Kx3Zb0A"
}
}
],
"reactions": [
{
"reaction": "PRAISE",
"reactor": {
"profileId": "ACoAAC5nH2wBRtYpLmXd8QsVbKe1JuNz6Wr4TgO",
"firstName": "Daniel",
"lastName": "Okonkwo",
"headline": "Director of Sales Operations at Halcyon Freight",
"profilePicture": "https://media.licdn.com/dms/image/v2/D4D03AQFm9RtYcXqLpA/profile-displayphoto-shrink_400_400/0/1768940255901",
"entityUrn": "urn:li:fsd_profile:ACoAAC5nH2wBRtYpLmXd8QsVbKe1JuNz6Wr4TgO"
}
},
{
"reaction": "LIKE",
"reactor": {
"profileId": "ACoAAD8kM3rBQwZtNpXcLvHy4EuTs2Km7Vd9RjP",
"firstName": "Sofia",
"lastName": "Lindqvist",
"headline": "Founder at Meridian Outbound",
"profilePicture": "https://media.licdn.com/dms/image/v2/D5603AQEt6nWxKpLmQg/profile-displayphoto-shrink_400_400/0/1762553841220",
"entityUrn": "urn:li:fsd_profile:ACoAAD8kM3rBQwZtNpXcLvHy4EuTs2Km7Vd9RjP"
}
}
]
}

Which top-level fields does the Post Details response hold?

Field

Type

Description

urn

string

The LinkedIn activity URN of the post. This value matches the urn in the request body.

threadUrn

string

The LinkedIn ugcPost URN of the thread that holds the post.

shareUrn

string

The LinkedIn ugcPost URN for a share of the post.

shareUrl

string

The public LinkedIn URL of the post.

commentary

string

The post text. Line breaks appear as \n.

numReactions

integer

The total number of reactions on the post.

numComments

integer

The total number of comments on the post.

reactionType

object

The reaction count for each reaction type.

sponsored

boolean

true means that the post is a sponsored post.

actor

object

The author of the post.

content

object

The attachment on the post. The value is null for a text post.

comments

array

The comment list. The array holds data only for a request body with comments set to true.

reactions

array

The reaction list. The array holds data only for a request body with reactions set to true.

Which author fields does Post Details return?

Field

Type

Description

actor.profileId

string

The LinkedIn profile identifier of the author. Send this value to Profile Activities.

actor.firstName

string

The first name of the author.

actor.lastName

string

The last name of the author.

actor.headline

string

The LinkedIn headline of the author.

actor.profilePicture

string

The profile photo URL of the author.

actor.entityUrn

string

The LinkedIn entity URN of the author.

actor.profileType

string

The author type, for example member.

Which engagement fields does Post Details return?

Field

Type

Description

numReactions

integer

The total number of reactions on the post.

numComments

integer

The total number of comments on the post.

reactionType

object

The reaction count for each reaction type, for example {"like": 331, "praise": 48}.

reactions

array

One entry per reaction, with the reaction type and the person.

reactions[].reaction

string

The reaction type. The accepted values are LIKE, EMPATHY, INTEREST, APPRECIATION, PRAISE and ENTERTAINMENT.

reactions[].reactor

object

The profile of the person who reacted.

reactions[].reactor.profileId

string

The LinkedIn profile identifier of the person who reacted.

reactions[].reactor.firstName

string

The first name of the person who reacted.

reactions[].reactor.lastName

string

The last name of the person who reacted.

reactions[].reactor.headline

string

The LinkedIn headline of the person who reacted.

reactions[].reactor.profilePicture

string

The profile photo URL of the person who reacted.

reactions[].reactor.entityUrn

string

The LinkedIn entity URN of the person who reacted.

Which comment fields does Post Details return?

Field

Type

Description

comments[].id

string

The LinkedIn comment identifier.

comments[].comment

string

The comment text.

comments[].totalComments

integer

The number of replies to the comment.

comments[].totalReactions

integer

The number of reactions on the comment.

comments[].url

string

The LinkedIn URL of the comment.

comments[].commenter

object

The profile of the person who wrote the comment.

comments[].commenter.profileId

string

The LinkedIn profile identifier of the person who wrote the comment.

comments[].commenter.firstName

string

The first name of the person who wrote the comment.

comments[].commenter.lastName

string

The last name of the person who wrote the comment.

comments[].commenter.headline

string

The LinkedIn headline of the person who wrote the comment.

comments[].commenter.profilePicture

string

The profile photo URL of the person who wrote the comment.

comments[].commenter.entityUrn

string

The LinkedIn entity URN of the person who wrote the comment.

Which content fields does Post Details return?

The content object holds one attachment type per post. The value is null for a post with no attachment.

Field

Type

Description

content.document

object

The document attachment, for example a slide deck.

content.document.title

string

The document title.

content.document.totalPages

integer

The number of pages in the document.

content.document.documentUrl

string

The document file URL.

content.document.expiry

integer

The expiry time of the document URL, as a Unix timestamp in milliseconds.

content.image

object

The image attachment.

content.video

object

The video attachment.

content.article

object

The linked article attachment.

content.poll

object

The poll attachment.

How do I use Post Details for social selling?

A post that a buyer wrote, and the people who engaged with that post, both carry intent. Post Details turns one post into a list of named people with headlines.

  1. Find a relevant post with Post Keyword Search, Profile Activities, or LinkedIn Company Posts.

  2. Build the activity URN from the post identifier.

  3. Send a Post Details request with comments and reactions set to true.

  4. Read commentary and quote one exact line in your outreach message.

  5. Read comments[].commenter to collect the people who wrote a comment.

  6. Read reactions[].reactor to collect the people who reacted.

  7. Filter the two lists on headline to keep the buyer titles that you target.

  8. Send each person to the RichAPI Email Finder endpoint, with the LinkedIn profile URL or the name and the company domain, for a work email.

A person who wrote a comment carries a stronger signal than a person who reacted. The comments[].comment text also gives you the exact objection or question to answer.

If a post holds more than one page of comments or reactions, use Post Activities. Post Details returns one snapshot of the engagement, and Post Activities pages through the full stream.

How much does Post Details cost?

Post Details costs 1 credit per call. One credit costs $0.02 on the 1,000 and 5,000 credit packs. So one Post Details call costs $0.02 there. Larger packs cost less per credit. The price does not change with the number of comments or the number of reactions in the response.

Calls

Credits

Cost

1

1

$0.02

10

10

$0.20

100

100

$2.00

1,000

1,000

$20.00

10,000

10,000

$200.00

RichAPI charges the credit only for a response in the 200 range. A 400, 401, 403, 429 or 500 response costs 0 credits.

How does Post Details differ from the other LinkedIn post endpoints?

RichAPI has five endpoints that read LinkedIn posts. Each one starts from a different input, and each one has its own price.

Endpoint

Input

Returns

Credits

Post Details

One post URN

The full detail of that one post, with the comment list and the reaction list

1 per call

Post Activities

One post URN

Paginated comments or reactions on that one post

3 per call

Post Keyword Search

A keyword

Matched posts from across LinkedIn, from any author

0.1 per result

LinkedIn Company Posts

One company URL, ID, or universal name

The recent posts of that one company page

0.2 per result

Profile Activities

One person profile

The recent posts, comments and reactions of that person

2 per result

Post Details and Post Activities charge a flat price per call. Post Keyword Search, LinkedIn Company Posts and Profile Activities charge per result. For the full cost table of each endpoint, read that endpoint article.

Post Details and Post Activities both start from a post URN, and the two differ in shape. Post Details returns one snapshot of the whole post in a single response. Post Activities returns one page of the engagement stream and a page cursor.

The other three endpoints find posts. Post Details reads one post that you already found. A normal flow starts with a search endpoint and ends with Post Details.

Which errors can Post Details return?

Status

Meaning

What to do

400

The request body failed validation. A missing urn, an unknown body key, or a wrong value type causes this failure.

Correct the parameter that the error message names. Use the three names in the parameter table.

401

The API key is missing or wrong.

Send a valid key in the x-api-key header.

402

The organization has no credits left, or the team reached its monthly spend limit.

Buy credits in the RichAPI dashboard.

403

The API key has no access, or Post Details is not on the plan.

Check the plan and the endpoint access in the RichAPI dashboard.

405

The request used a method other than POST.

Send the request again with the POST method.

429

Too many requests.

Read the Retry-After header. Wait that many seconds, then send the request again.

500

The API failed.

Send the request again. If the failure repeats, write to [email protected].

Frequently asked questions

Does Post Details accept a LinkedIn post URL?

No. Post Details accepts the urn parameter only, and the value must be a LinkedIn activity URN such as urn:li:activity:7458532524865232896. A url key in the request body returns 400 with the message Unknown input field(s): url.

How do I get the URN of a LinkedIn post?

Read the digits after -activity- in the public post URL, then add the prefix urn:li:activity: to those digits. The Post Keyword Search, Profile Activities and LinkedIn Company Posts endpoints also return the activity identifier of every post.

How much does one Post Details call cost?

One Post Details call costs 1 credit, which is $0.02 on the 1,000 and 5,000 credit packs. The price stays at 1 credit for every call, whatever the number of comments and reactions in the response.

Do the comments and reactions parameters cost extra credits?

No. Post Details costs 1 credit per call for every combination of the comments and reactions parameters. The two parameters change the size of the response and not the price.

What is the difference between Post Details and Post Activities?

Post Details returns one snapshot of a whole post for 1 credit per call, with the post text, the author, the media and the engagement. Post Activities returns one page of comments or reactions for 3 credits per call, and it pages through the full engagement stream.

Which reaction types does Post Details return?

The reactions[].reaction field returns one of six values: LIKE, EMPATHY, INTEREST, APPRECIATION, PRAISE and ENTERTAINMENT. The reactionType object returns the total count for each type on the post.

Is Post Details a GET or a POST endpoint?

Post Details is a POST endpoint at https://api.richapi.ai/api/v1/post_details. Every parameter goes in the JSON request body. A GET request returns 405.

Does a failed Post Details call cost a credit?

No. RichAPI charges the 1 credit only for a response in the 200 range. A 400, 401, 403, 429 or 500 response costs 0 credits.

Related articles

Did this answer your question?