---
title: "Get posts from a profile"
method: GET
path: "/api/v1/posts"
---

# Get posts from a profile

`GET /api/v1/posts`

## Request

- Base URL: `https://api.fetchin.io`
- URL: `https://api.fetchin.io/api/v1/posts`
- Auth: API key in header `X-API-Key`

Fetch posts from a professional profile using its URN, public identifier (slug) or URL

## Query parameters

- `profileUrlOrUrn` string, required
- `count` integer
- `start` integer
- `paginationToken` string
- `includeReposts` boolean

## Response `200`

Successfully fetched posts

- object
  - `posts` object[]: Posts on this page. Reposts without commentary are filtered out unless `includeReposts=true`, so a page can hold fewer items than `count` while more remain — trust `hasMore`.
    - `id` string: Activity URN. References the post in the `urn:li:activity:*` namespace.
    - `shareUrn` string: Share URN. References the same post as `id` but in the `urn:li:share:*` or `urn:li:ugcPost:*` namespace (depends on the post type).
    - `content` string
    - `date` string, date-time
    - `reactionCount` integer: Omitted on a `repost` item, which has no counts of its own.
    - `commentCount` integer: Omitted on a `repost` item, which has no counts of its own.
    - `sharesCount` integer: Number of times the post was reshared. Omitted on a `repost` item, which has no counts of its own.
    - `imageUrl` string
    - `videoUrl` string
    - `carouselPdfUrl` string
    - `profile` object
      - `urn` string, required
      - `name` string, required
      - `headline` string, required
      - `url` string, required
      - `imageUrl` string, required
    - `resharedPostUrn` string: Set when the author reshared someone else's post WITH their own commentary: the URN of the quoted post, which is also returned in full as `resharedPost`. Absent on an original post, so `!resharedPostUrn` selects originals only. Also set on a `repost` item (`includeReposts=true`).
    - `postType` 'text' | 'image' | 'document' | 'article' | 'linkedinVideo' | 'job' | 'event' | 'celebration' | 'repost': Kind of content attached to the post. 'article' means a link preview card is attached; long-form articles the member published are NOT returned by this endpoint. 'job', 'event' and 'celebration' are shared cards, detailed in the object of the same name. 'repost' is a repost without commentary, returned only with `includeReposts=true`.
    - `shareUrl` string: Public permalink to the post.
    - `reactionsByType` object: Reaction counts broken down by type. Only the types the post actually received are present, and they sum to `reactionCount`. Keys: `like`, `praise`, `empathy`, `interest`, `appreciation`, `entertainment`, `superLike`. Omitted on a `repost` item, and on a quoted post whose counts the source did not provide.
    - `images` object[]: Every image of the post with its dimensions (empty for non-image posts). `imageUrl` is the first one, kept for backward compatibility.
      - `url` string
      - `width` integer
      - `height` integer
    - `video` object, nullable: Video attached to the post, or null. `videoUrl` mirrors `video.url`.
      - `url` string
      - `duration` integer: Duration in milliseconds.
      - `thumbnail` string, nullable
      - `progressiveStreams` object[]: Available renditions (bitrate/resolution variants).
    - `authorProfileId` string: Author id, the same value as the `profileId` returned by `/profile`.
    - `authorType` 'Person' | 'Company': Whether the post was published by a member or by an organization page.
    - `permissions` object: What the post allows, as published.
      - `canReact` boolean
      - `canPostComments` boolean
      - `canShare` boolean
      - `commentingDisabled` boolean
      - `allowedCommentersScope` string
      - `shareAudience` string
      - `isActivity` boolean
      - `rootShare` boolean: False when the post quotes another one.
    - `author` object: Who published the item, member or organization page. On a `repost` item it is the reposting profile; inside `resharedPost`, the original author.
      - `type` 'profile' | 'company'
      - `id` string: The profile id (`ACoAA...`) for a person, the numeric company id for a page.
      - `name` string
      - `url` string: Professional profile URL, or the company page URL without a `/posts` suffix.
      - `info` string: The headline for a person, the follower line for a page (e.g. "29,282,565 followers"), as the feed renders it.
      - `followerCount` number: Companies only: the follower count `info` states, as a number.
      - `publicIdentifier` string: Persons only: profile slug.
      - `universalName` string: Companies only: page slug.
      - `numericId` string: Numeric member or company id, when the feed carries it.
      - `avatar` object: Picture or logo, largest rendition.
        - `url` string
        - `width` integer
        - `height` integer
    - `mentions` object[]: The members and companies tagged in the text, one entry each. Empty when there are none.
      - `type` 'person' | 'company', required
      - `id` string, required: The profile id (`ACoAA...`) for a person, the numeric company id for a company.
      - `publicIdentifier` string: Persons only.
      - `firstName` string: Persons only.
      - `lastName` string: Persons only.
      - `universalName` string: Companies only.
      - `name` string, required
      - `url` string, required
    - `contentAttributes` object[]: Annotated ranges of `content`: tags, mentions, hashtags and links. `start` and `length` index into `content`.
      - `start` integer
      - `length` integer
      - `type` string: Kind of range, e.g. `COMPANY_NAME`, `PROFILE_MENTION`, `HASHTAG`, `HYPERLINK`.
      - `hyperlink` string: Where a link range points.
      - `hashtag` string
      - `company` object: The resolved company of a `COMPANY_NAME` range.
        - `id` string
        - `name` string
        - `url` string
      - `profile` object: The resolved member of a `PROFILE_MENTION` range.
        - `id` string
        - `firstName` string
        - `lastName` string
        - `url` string
        - `publicIdentifier` string
    - `job` object: The shared job, on `postType: "job"`. Each field is present when the card carries it.
      - `id` string
      - `url` string
      - `title` string
      - `companyName` string
      - `companyId` string: Numeric company id.
      - `companyUrl` string
      - `location` string
      - `companyLogoUrl` string
    - `event` object: The shared event, on `postType: "event"`. Each field is present when the card carries it. No timestamp is available for the event.
      - `id` string
      - `name` string
      - `dateText` string: The date line exactly as displayed, time zone included.
      - `location` string
      - `url` string
      - `bannerUrl` string
    - `celebration` object: The celebration card, on `postType: "celebration"`. Each field is present when the card carries it.
      - `headline` string
      - `subtitle` string
      - `imageUrl` string
    - `resharedPost` object: The quoted post in full, whenever `resharedPostUrn` is set: the same shape as an item of `posts`. Its `reactionCount`, `commentCount`, `sharesCount`, `reactionsByType` and `reactionTypeCounts` are OMITTED when the source did not provide them - usually the case for a quoted post - never reported as 0.
    - `repostedBy` object: Only on a `postType: "repost"` item: who reposted.
      - `name` string
      - `url` string
      - `publicIdentifier` string: When a person reposted.
      - `universalName` string: When a page reposted.
  - `paginationToken` string, nullable: Cursor to pass back as `paginationToken` to fetch the next page.
  - `hasMore` boolean: Whether the feed holds more posts behind this page. Keep paging while true.
  - `pageSize` integer: The `count` this page was requested with.

## Other responses

- `400`: Bad request - a required parameter is missing or a value is invalid.
- `401`: Unauthorized - the X-API-Key header is missing or invalid.
- `402`: Payment required - you are out of credits (QUOTA_EXHAUSTED): the plan allowance for the current period is spent AND no pay-as-you-go credits are left. Buy pay-as-you-go credits (self-serve, https://fetchin.io/credits), upgrade your plan, or wait for renewal; retrying will not help and no Retry-After is sent. Distinct from the per-second rate limit, which is a 429 (RATE_LIMITED).
- `404`: Not found - the request was served successfully but the requested professional entity does not exist.
- `429`: Too many requests - your per-second rate limit (RATE_LIMITED) was exceeded. Back off and retry, honoring the Retry-After header. (Running out of credits is a separate 402 PaymentRequired / QUOTA_EXHAUSTED, and buying credits never raises this per-second limit.)
- `500`: Internal server error - an unexpected error occurred in our API. Safe to retry; contact support if it persists.
- `503`: Service unavailable - our API is temporarily unable to serve this request (capacity exhausted or overloaded). This is on our side, not yours and not an upstream service outage. Retry with backoff, honoring the Retry-After header.

---

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