---
title: "Get Person LinkedIn Posts"
method: POST
path: "/v2/people/posts"
tags: ["People"]
---

# Get Person LinkedIn Posts

`POST /v2/people/posts`

## Request

- Base URL: `https://api.village.ai`
- URL: `https://api.village.ai/v2/people/posts`
- Auth: HTTP bearer

Fetch a person's recent LinkedIn activity. Use this to see what someone is talking about before reaching out, or to pull talking points for a personalised message. Returns posts newest-first with content, author, engagement, mentions and links. IMPORTANT: the feed mixes the person's own posts with posts they reshared from others — check `author` and `reposted_by` before attributing anything to them. Pass `pagination.cursor` back as `cursor` for older posts, and `limit` (default 20, max 50) to change how many come back per call.

## Request body

- PersonPostsRequest: Request for a person's LinkedIn posts
  - `linkedin_url` string, required: LinkedIn person profile URL
  - `cursor` string: Pagination token from a previous response's `pagination.cursor`
  - `limit` integer: Posts to return per call (1-50, default 20). The default keeps the response inside a typical AI-client output limit; keep following `pagination.cursor` to reach the rest.

## Response `200`

Posts retrieved successfully

- object
  - `data` PersonPost[], required: A page of LinkedIn posts, newest first
    - `id` string, nullable, required
    - `linkedin_url` string, nullable, required
    - `content` string, nullable, required
    - `posted_at` string, nullable, required
    - `author` PostAuthor, nullable, required: Who wrote the post
      - `name` string, required
      - `linkedin_url` string, nullable, required
      - `headline` string, nullable, required
    - `reposted_by` string, nullable, required: Set when this post is a reshare rather than the person's own writing. The feed mixes both, so check this before attributing the words to them.
    - `engagement` object, required
      - `likes` number, required
      - `comments` number, required
      - `shares` number, required
    - `mentions` object[], required: People tagged in the post
      - `name` string, required
      - `linkedin_url` string, nullable, required
    - `article` object, nullable, required
      - `title` string, required
      - `link` string, nullable, required
    - `document` object, nullable, required
      - `title` string, required
    - `images` string[], required
    - `has_video` boolean, required
    - `repost` object, nullable, required: The original post, when this one is a reshare
      - `content` string, nullable, required
      - `author` PostAuthor, nullable, required: Who wrote the post
        - `name` string, required
        - `linkedin_url` string, nullable, required
        - `headline` string, nullable, required
      - `linkedin_url` string, nullable, required
  - `metadata` object, required
    - `request_id` string, required
  - `pagination` PaginationInfo, required: Cursor-based pagination metadata
    - `cursor` string, nullable, required: Opaque cursor for fetching the next page (null if no more results)
    - `has_next_page` boolean, required: Whether more results are available
    - `count` integer, required: Total number of results or count of items in current page

## Other responses

- `400`: Bad request - invalid parameters
- `401`: Unauthorized - missing or invalid authentication
- `404`: Profile not found or has no posts

---

[API](https://skmtc.dev/village/apis/village-v2-api.md) - [All operations](https://skmtc.dev/village/apis/village-v2-api/llms.txt) - [OpenAPI document](https://skmtc.dev/village/apis/village-v2-api/revisions/aebe21a1a544?raw)
