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:
POSTURL:
https://api.richapi.ai/api/v1/post_detailsAuthentication:
x-api-keyheaderRequest 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 |
|
|
LinkedIn Company Posts response |
|
|
Post Keyword Search response | The activity identifier of the matched post |
|
How to send a Post Details request
Copy your API key from the RichAPI dashboard.
Find the activity URN of the post.
Set
urnin the JSON request body.Set
commentstotrueso that the response holds the comment list.Set
reactionstotrueso that the response holds the reaction list.Send a
POSTrequest tohttps://api.richapi.ai/api/v1/post_details.Send the API key in the
x-api-keyheader.Read the post text from
commentaryin the response.Read
numReactionsandnumCommentsfor 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 |
| string | Yes | — | LinkedIn activity URN of the post, for example |
| boolean | No |
|
|
| boolean | No |
|
|
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 |
| string | The LinkedIn activity URN of the post. This value matches the |
| string | The LinkedIn ugcPost URN of the thread that holds the post. |
| string | The LinkedIn ugcPost URN for a share of the post. |
| string | The public LinkedIn URL of the post. |
| string | The post text. Line breaks appear as |
| integer | The total number of reactions on the post. |
| integer | The total number of comments on the post. |
| object | The reaction count for each reaction type. |
| boolean |
|
| object | The author of the post. |
| object | The attachment on the post. The value is |
| array | The comment list. The array holds data only for a request body with |
| array | The reaction list. The array holds data only for a request body with |
Which author fields does Post Details return?
Field | Type | Description |
| string | The LinkedIn profile identifier of the author. Send this value to Profile Activities. |
| string | The first name of the author. |
| string | The last name of the author. |
| string | The LinkedIn headline of the author. |
| string | The profile photo URL of the author. |
| string | The LinkedIn entity URN of the author. |
| string | The author type, for example |
Which engagement fields does Post Details return?
Field | Type | Description |
| integer | The total number of reactions on the post. |
| integer | The total number of comments on the post. |
| object | The reaction count for each reaction type, for example |
| array | One entry per reaction, with the reaction type and the person. |
| string | The reaction type. The accepted values are |
| object | The profile of the person who reacted. |
| string | The LinkedIn profile identifier of the person who reacted. |
| string | The first name of the person who reacted. |
| string | The last name of the person who reacted. |
| string | The LinkedIn headline of the person who reacted. |
| string | The profile photo URL of the person who reacted. |
| string | The LinkedIn entity URN of the person who reacted. |
Which comment fields does Post Details return?
Field | Type | Description |
| string | The LinkedIn comment identifier. |
| string | The comment text. |
| integer | The number of replies to the comment. |
| integer | The number of reactions on the comment. |
| string | The LinkedIn URL of the comment. |
| object | The profile of the person who wrote the comment. |
| string | The LinkedIn profile identifier of the person who wrote the comment. |
| string | The first name of the person who wrote the comment. |
| string | The last name of the person who wrote the comment. |
| string | The LinkedIn headline of the person who wrote the comment. |
| string | The profile photo URL of the person who wrote the comment. |
| 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 |
| object | The document attachment, for example a slide deck. |
| string | The document title. |
| integer | The number of pages in the document. |
| string | The document file URL. |
| integer | The expiry time of the document URL, as a Unix timestamp in milliseconds. |
| object | The image attachment. |
| object | The video attachment. |
| object | The linked article attachment. |
| 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.
Find a relevant post with Post Keyword Search, Profile Activities, or LinkedIn Company Posts.
Build the activity URN from the post identifier.
Send a Post Details request with
commentsandreactionsset totrue.Read
commentaryand quote one exact line in your outreach message.Read
comments[].commenterto collect the people who wrote a comment.Read
reactions[].reactorto collect the people who reacted.Filter the two lists on
headlineto keep the buyer titles that you target.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 |
| The request body failed validation. A missing | Correct the parameter that the error message names. Use the three names in the parameter table. |
| The API key is missing or wrong. | Send a valid key in the |
| The organization has no credits left, or the team reached its monthly spend limit. | Buy credits in the RichAPI dashboard. |
| 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. |
| The request used a method other than | Send the request again with the |
| Too many requests. | Read the |
| 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.
