---
title: "Get user pinned feed posts"
method: GET
path: "/api/v1/feeds/users/{userId}/pinned"
tags: ["Social Feeds"]
---

# Get user pinned feed posts

`GET /api/v1/feeds/users/{userId}/pinned`

**Rate limit:** 60 requests per 60 seconds. This is a **shared quota** — the same budget is consumed by a group of related endpoints, so calling any of them reduces what is left for the others (you cannot call each at the full rate independently). Endpoints sharing this quota:
- `GET /api/v1/feeds/following`
- `GET /api/v1/feeds/for-you`
- `GET /api/v1/feeds/instrument/{marketId}`
- `GET /api/v1/feeds/markets/{marketId}`
- `GET /api/v1/feeds/news`
- `GET /api/v1/feeds/saved`
- `GET /api/v1/feeds/user/{userId}`
- `GET /api/v1/feeds/users/{userId}`

---

Retrieves the posts that the specified user has pinned to the top of their profile feed. The pinned feed surfaces highlighted content the user has explicitly chosen to feature, ordered by pin time.

## Path parameters

- `userId` string, required

## Query parameters

- `badgesExperimentIsEnabled` boolean

## Headers

- `x-request-id` string, uuid, required
- `x-api-key` string, password, required
- `x-user-key` string, password, required

## Response `200`

Successfully retrieved user pinned feed posts

- DiscussionsResponse — Paginated feed response containing a list of discussions
  - `discussions` Discussion[]
    - `id` string — Discussion wrapper ID (same as post ID)
    - `post` DiscussionsPost — Post data embedded inside a Discussion feed item
      - `id` string — Post ID
      - `owner` User — eToro user profile (slim projection)
        - `id` string — User's GCID (string form)
        - `username` string — Unique username
        - `firstName` string — First name
        - `lastName` string — Last name
        - `avatar` object — Profile picture URLs
          - `small` string — 32 px avatar URL
          - `medium` string — 64 px avatar URL
          - `large` string — 128 px avatar URL
          - `svg` object, nullable — SVG avatar with brand colours (null when not available)
            - `url` string — SVG URL
            - `backgroundColor` string — Background colour hex
            - `textColor` string — Text colour hex
        - `roles` string[] — User roles
        - `isBlocked` boolean — Owner has blocked the requester
        - `isPrivate` boolean — User's profile is private
        - `countryCode` integer — ISO numeric country code
        - `piLevel` integer — Popular Investor level (0 = not PI)
      - `obsoleteId` string — Legacy numeric post ID
      - `message` object — Post/comment text content
        - `text` string — Text content
        - `languageCode` string — BCP-47 language code
      - `created` string, date-time — Creation timestamp
      - `updated` string, date-time, nullable — Last-edited timestamp
      - `type` 'Default' | 'Share' | 'MarketEvent' | 'Trade' | 'Order' | 'Copy' | 'Poll' | 'Article' — Post type
      - `isDeleted` boolean — True when soft-deleted
      - `isSpam` boolean — True when classified as spam
      - `editStatus` 'None' | 'Edited' | 'Moderated' — Edit lifecycle status
      - `attachments` Attachment[]
        - `url` string — Full URL of the attachment
        - `title` string — Title of the attachment
        - `host` string — Host domain of the attachment
        - `description` string — Short description of the attachment
        - `mediaType` 'None' | 'Link' | 'Image' | 'Video' — Type of media
        - `media` object — Media content details
          - `image` object — Image dimensions and URL
            - `width` integer — Width in pixels
            - `height` integer — Height in pixels
            - `url` string — Image URL
          - `video` object — Video source details
            - `videoSourceId` string — External video ID
            - `videoSource` 'None' | 'YouTube' | 'Vimeo' — Video provider
            - `image` object — Video thumbnail
              - …
      - `tags` object[]
        - `market` Market — Financial instrument / market
          - `id` string — Market identifier
          - `symbolName` string — Ticker symbol
          - `displayName` string — Human-readable name
          - `updated` string, date-time, nullable — Last update timestamp
          - `assetType` 'Stocks' | 'Bonds' | 'ETF' | 'Index' | 'Warrants' | 'Options' | 'Futures' | 'CFD' | 'TRS' | 'FOREX' | 'CommodityMetals' | 'CommodityEnergyAgriculture' | 'CryptoCoin' | 'NFT' — Asset class
          - `internalId` integer — Internal numeric market ID
          - `avatar` object — Market logo images
            - `small` string — Small logo URL (32 px)
            - `medium` string — Medium logo URL (64 px)
            - `large` string — Large logo URL (128 px)
            - `svg` object, nullable — SVG logo with brand colours
              - …
          - `application` 'eToro' | 'Delta' | 'Gatsby' — Source application
          - `metadata` string — Opaque JSON metadata string
          - `assetTypeId` integer — Numeric asset type ID
          - `assetTypeSubCategoryId` integer — Numeric asset sub-category ID
      - `mentions` object[]
        - `user` User — eToro user profile (slim projection)
          - `id` string — User's GCID (string form)
          - `username` string — Unique username
          - `firstName` string — First name
          - `lastName` string — Last name
          - `avatar` object — Profile picture URLs
            - `small` string — 32 px avatar URL
            - `medium` string — 64 px avatar URL
            - `large` string — 128 px avatar URL
            - `svg` object, nullable — SVG avatar with brand colours (null when not available)
              - …
          - `roles` string[] — User roles
          - `isBlocked` boolean — Owner has blocked the requester
          - `isPrivate` boolean — User's profile is private
          - `countryCode` integer — ISO numeric country code
          - `piLevel` integer — Popular Investor level (0 = not PI)
        - `isDirect` boolean — Direct @-mention
      - `metadata` object — Post type–specific metadata — only the relevant key is populated
        - `share` object — Share metadata — present when type is Share
          - `sharedPost` DiscussionsPost — recursive
          - `sharedOriginPost` DiscussionsPost — recursive
        - `marketEvent` object — Market event metadata — present when type is MarketEvent
          - `earningReportId` integer — Earnings report ID
          - `market` Market — Financial instrument / market
            - `id` string — Market identifier
            - `symbolName` string — Ticker symbol
            - `displayName` string — Human-readable name
            - `updated` string, date-time, nullable — Last update timestamp
            - `assetType` 'Stocks' | 'Bonds' | 'ETF' | 'Index' | 'Warrants' | 'Options' | 'Futures' | 'CFD' | 'TRS' | 'FOREX' | 'CommodityMetals' | 'CommodityEnergyAgriculture' | 'CryptoCoin' | 'NFT' — Asset class
            - `internalId` integer — Internal numeric market ID
            - `avatar` object — Market logo images
              - …
            - `application` 'eToro' | 'Delta' | 'Gatsby' — Source application
            - `metadata` string — Opaque JSON metadata string
            - `assetTypeId` integer — Numeric asset type ID
            - `assetTypeSubCategoryId` integer — Numeric asset sub-category ID
          - `stocksIndustryId` integer — Industry sector ID
          - `earningsDate` string, date-time — Earnings announcement date
          - `isBeforeMarketOpen` boolean — Event occurs before market open
          - `earningsYear` integer — Fiscal year of earnings
          - `earningsQuarter` integer — Fiscal quarter (1–4)
          - `verified` boolean — Whether the event data is verified
          - `marketCap` number, double — Market capitalisation in USD
          - `estimatedEps` number, double — Estimated earnings per share
          - `estimatedSales` number, double — Estimated revenue in USD
          - `tagName` 'Reports' | 'Dividends' | 'Split' | 'ReverseSplit' — Event tag
          - `textKey` integer — Localisation key for event label
        - `trade` object — Trade metadata — present when type is Trade
          - `type` 'Open' | 'Close' — Trade lifecycle stage
          - `positionId` integer — Internal position ID
          - `market` Market — Financial instrument / market
            - `id` string — Market identifier
            - `symbolName` string — Ticker symbol
            - `displayName` string — Human-readable name
            - `updated` string, date-time, nullable — Last update timestamp
            - `assetType` 'Stocks' | 'Bonds' | 'ETF' | 'Index' | 'Warrants' | 'Options' | 'Futures' | 'CFD' | 'TRS' | 'FOREX' | 'CommodityMetals' | 'CommodityEnergyAgriculture' | 'CryptoCoin' | 'NFT' — Asset class
            - `internalId` integer — Internal numeric market ID
            - `avatar` object — Market logo images
              - …
            - `application` 'eToro' | 'Delta' | 'Gatsby' — Source application
            - `metadata` string — Opaque JSON metadata string
            - `assetTypeId` integer — Numeric asset type ID
            - `assetTypeSubCategoryId` integer — Numeric asset sub-category ID
          - `gain` number, float — P&L gain/loss percentage
          - `rate` number, float — Entry/exit rate
          - `direction` 'Long' | 'Short' — Trade direction
        - `order` object — Order metadata — present when type is Order
          - `type` 'Open' | 'Close' — Order lifecycle stage
          - `orderId` integer — Internal order ID
          - `market` Market — Financial instrument / market
            - `id` string — Market identifier
            - `symbolName` string — Ticker symbol
            - `displayName` string — Human-readable name
            - `updated` string, date-time, nullable — Last update timestamp
            - `assetType` 'Stocks' | 'Bonds' | 'ETF' | 'Index' | 'Warrants' | 'Options' | 'Futures' | 'CFD' | 'TRS' | 'FOREX' | 'CommodityMetals' | 'CommodityEnergyAgriculture' | 'CryptoCoin' | 'NFT' — Asset class
            - `internalId` integer — Internal numeric market ID
            - `avatar` object — Market logo images
              - …
            - `application` 'eToro' | 'Delta' | 'Gatsby' — Source application
            - `metadata` string — Opaque JSON metadata string
            - `assetTypeId` integer — Numeric asset type ID
            - `assetTypeSubCategoryId` integer — Numeric asset sub-category ID
          - `rate` number, float — Limit/entry rate
          - `direction` 'Long' | 'Short' — Order direction
        - `copy` object — Copy metadata — present when type is Copy
          - `type` 'Start' | 'Stop' — Copy event type
          - `user` User — eToro user profile (slim projection)
            - `id` string — User's GCID (string form)
            - `username` string — Unique username
            - `firstName` string — First name
            - `lastName` string — Last name
            - `avatar` object — Profile picture URLs
              - …
            - `roles` string[] — User roles
            - `isBlocked` boolean — Owner has blocked the requester
            - `isPrivate` boolean — User's profile is private
            - `countryCode` integer — ISO numeric country code
            - `piLevel` integer — Popular Investor level (0 = not PI)
        - `poll` object — Poll metadata — present when type is Poll
          - `id` integer — Poll ID
          - `title` string — Poll question
          - `gcid` integer — Poll creator GCID
          - `options` object[]
            - `id` integer — Option ID
            - `index` integer — Display order (1-based, matches the index supplied at poll creation)
            - `text` string — Option label
            - `isUserVoted` boolean — Requester voted for this option
            - `votesCount` integer — Total votes for this option
        - `article` object — Article metadata — present when post type is Article
          - `id` integer — Article ID
          - `title` string — Article title
          - `url` string — Canonical article URL
          - `rating` 'Bearish' | 'Bullish', nullable — Analyst rating
          - `featuredImage` Attachment — Media or link attachment
            - `url` string — Full URL of the attachment
            - `title` string — Title of the attachment
            - `host` string — Host domain of the attachment
            - `description` string — Short description of the attachment
            - `mediaType` 'None' | 'Link' | 'Image' | 'Video' — Type of media
            - `media` object — Media content details
              - …
          - `body` string — Full article HTML body
          - `bodyPreview` string — Plain-text preview (≈200 chars)
          - `aiSummary` string — AI-generated summary
          - `languageCode` string — BCP-47 language code
          - `status` 'Draft' | 'Published' | 'Deleted' — Publication status
          - `editStatus` 'None' | 'Edited' | 'Moderated' — Edit status
          - `ownerId` integer — Author's internal user ID
          - `created` string, date-time — When the article was created
          - `updated` string, date-time, nullable — Last edit timestamp
          - `published` string, date-time, nullable — Publication timestamp
          - `readingTimeMinutes` number, float — Estimated reading time
          - `wordCount` integer — Word count
    - `commentsData` object — Inline comments preview
      - `reactionPaging` object
        - `totalCount` integer — Total comment count on this post
      - `comments` Comment[]
        - `entity` object — Core comment data
          - `id` string — Comment ID
          - `owner` User — eToro user profile (slim projection)
            - `id` string — User's GCID (string form)
            - `username` string — Unique username
            - `firstName` string — First name
            - `lastName` string — Last name
            - `avatar` object — Profile picture URLs
              - …
            - `roles` string[] — User roles
            - `isBlocked` boolean — Owner has blocked the requester
            - `isPrivate` boolean — User's profile is private
            - `countryCode` integer — ISO numeric country code
            - `piLevel` integer — Popular Investor level (0 = not PI)
          - `obsoleteId` string — Legacy numeric comment ID
          - `created` string, date-time — Creation timestamp
          - `updated` string, date-time, nullable — Last-edited timestamp
          - `message` object — Post/comment text content
            - `text` string — Text content
            - `languageCode` string — BCP-47 language code
          - `attachments` Attachment[]
            - `url` string — Full URL of the attachment
            - `title` string — Title of the attachment
            - `host` string — Host domain of the attachment
            - `description` string — Short description of the attachment
            - `mediaType` 'None' | 'Link' | 'Image' | 'Video' — Type of media
            - `media` object — Media content details
              - …
          - `mentions` object[]
            - `user` User — eToro user profile (slim projection)
              - …
            - `isDirect` boolean — Direct @-mention
          - `tags` object[]
            - `market` Market — Financial instrument / market
              - …
          - `isSpam` boolean — True when classified as spam
          - `editStatus` 'None' | 'Edited' | 'Moderated' — Edit lifecycle status
          - `parent` object — Parent entity reference
            - `id` string — Parent entity ID
            - `obsoleteId` string — Legacy parent ID
            - `type` 'Unknown' | 'Post' | 'Comment' | 'Reply' — Parent entity type
        - `repliesCount` integer — Number of direct replies to this comment
        - `replies` Comment[] — Inline reply preview. Each entry has the same shape as Comment; nested `replies` arrays are not populated at this level.
        - `emotionsData` object — Aggregated emotions (likes) on an entity
          - `like` object
            - `paging` object — Pagination cursor info
              - …
            - `emotions` Emotion[]
              - …
        - `requesterContext` object — Requester's relationship state with the comment
          - `isOwner` boolean — Requester is the comment owner
          - `isFlaggingAsSpam` boolean — Requester flagged this as spam
          - `isSubscribed` boolean — Requester is subscribed to notifications
          - `isLiking` boolean — Requester has liked this comment
          - `isSaved` boolean — Requester has saved this comment
          - `isPinned` boolean — Comment is pinned
          - `isRequesterBlocking` boolean — Requester is blocking the comment owner
          - `isInteractionRestricted` boolean — Owner has blocked the requester
    - `emotionsData` object — Aggregated emotions (likes) on an entity
      - `like` object
        - `paging` object — Pagination cursor info
          - `totalCount` integer — Total number of items
          - `offsetEntityId` string — Opaque cursor for next page
          - `next` string — URL to next page
        - `emotions` Emotion[]
          - `type` 'Like' — Emotion type (currently only Like is supported)
          - `id` string — Emotion ID
          - `owner` User — eToro user profile (slim projection)
            - `id` string — User's GCID (string form)
            - `username` string — Unique username
            - `firstName` string — First name
            - `lastName` string — Last name
            - `avatar` object — Profile picture URLs
              - …
            - `roles` string[] — User roles
            - `isBlocked` boolean — Owner has blocked the requester
            - `isPrivate` boolean — User's profile is private
            - `countryCode` integer — ISO numeric country code
            - `piLevel` integer — Popular Investor level (0 = not PI)
          - `obsoleteId` string — Legacy numeric emotion ID
          - `parent` object — Parent entity reference
            - `id` string — Parent entity ID
            - `obsoleteId` string — Legacy parent ID
            - `type` 'Unknown' | 'Post' | 'Comment' | 'Reply' — Parent entity type
          - `created` string, date-time — When the like was created
    - `requesterContext` object — Requester's relationship state with the post
      - `isOwner` boolean — Requester is the post owner
      - `isFlaggingAsSpam` boolean — Requester flagged this as spam
      - `isSubscribed` boolean — Requester is subscribed to notifications
      - `isLiking` boolean — Requester has liked this post
      - `isSaved` boolean — Requester has saved this post
      - `isPinned` boolean — Post is pinned for the requester
      - `isRequesterBlocking` boolean — Requester is blocking the post owner
      - `isInteractionRestricted` boolean — Owner has blocked the requester
      - `isFollowing` boolean — Requester is following this post
    - `summary` object — Post-level engagement counters
      - `totalCommentsAndReplies` integer — Sum of all comments and replies
      - `sharedCount` integer — Number of times this post has been shared
    - `reason` unknown
  - `paging` object — Pagination info
    - `next` string — URL to fetch the next page
    - `offSet` integer — Current page offset
    - `take` integer — Page size used for this response
    - `version` string — API version string
  - `metadata` object — Feed-level metadata for analytics
    - `experimentName` string — Active A/B experiment name
    - `streamType` string — Actual stream/ranking type served
    - `designatedStreamType` string — Intended stream type (may differ during A/B)

## Other responses

- `401` — Authentication required
- `429` — Too Many Requests — the shared rate limit (60 requests / 60s) was exceeded.

---

[API](https://skmtc.dev/etoro/apis/etoro-api.md) · [All operations](https://skmtc.dev/etoro/apis/etoro-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/etoro/etoro-api/revisions/69c1fb266c35/schema)
