Skip to main content
GET
/
api
/
lists
/
linkedin-posts
List LinkedIn post enrichments for a list row
curl --request GET \
  --url https://app.puffle.ai/api/lists/linkedin-posts \
  --header 'Authorization: Bearer <token>'
{ "posts": [ { "id": "cccccccc-1111-2222-3333-444444444444", "postUrl": "https://www.linkedin.com/posts/example-activity-7000000000000000000", "postText": "We're hiring! ...", "datePosted": "2026-04-20T14:22:00Z", "numLikes": 42, "numComments": 7, "images": null, "hashtags": [ "hiring", "engineering" ], "postType": "regular" }, { "id": "cccccccc-2222-3333-4444-555555555555", "postUrl": "https://www.linkedin.com/posts/example-activity-7000000000000000001", "postText": "Thrilled to announce our Series B...", "datePosted": "2026-04-10T09:00:00Z", "numLikes": 312, "numComments": 54, "images": [ "https://media.licdn.com/..." ], "hashtags": null, "postType": "announcement" } ] }

Overview

Returns the LinkedIn posts enrichment attached to one row in a list. The handler:
  • Verifies the row belongs to a list owned by the caller (joined on lists.user_id).
  • Fetches all rows from linkedin_posts keyed by either list_row_id (person) or list_company_row_id (company).
  • Filters out posts with empty post_text.
  • De-duplicates by post_id (same post may appear more than once if a row is re-enriched).
  • Returns posts sorted by date_posted descending, transformed to camelCase for frontend use.
Use this to read back post content after running a LinkedIn posts enrichment column (sources linkedin-profile-posts / linkedin-company-posts via the list-generic-enrich task).

AI agent notes

When to call. After an enrichment column for LinkedIn posts has finished populating for the target row. Poll GET /api/lists/{listId}/rows or GET /api/lists/{listId}/columns/{colId}/preview-cells to detect when cells reach a terminal status, then call this for the raw content.Subject parameter. Default is person. For company rows (from list_company_rows), pass subject=company — otherwise the row won’t be found and you’ll get a 404.Empty state. A valid row with no enrichment yet returns { "posts": [] }, not a 404. Distinguish “not enriched yet” from “row missing” via status code.No side effects. Pure read.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

rowId
string<uuid>
required

UUID of a list_rows row (when subject=person) or a list_company_rows row (when subject=company). The row must belong to a list owned by the caller — ownership is enforced via the join to lists.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
subject
enum<string>

Which row type rowId refers to. Defaults to person when omitted.

Available options:
person,
company

Response

De-duplicated, non-empty posts for the row, sorted by datePosted descending. Returns posts: [] when the row has no posts yet.

posts
object[]
required