---
title: "Get a single post by ID"
method: GET
path: "/api/v1/posts/{postId}"
tags: ["Social Feeds"]
---

# Get a single post by ID

`GET /api/v1/posts/{postId}`

**Rate limit:** 60 requests per 60 seconds. This is the **default shared quota** — it is shared with every other endpoint that has no dedicated limit, so requests across those endpoints all draw from the same budget.

---

Retrieves a single discussion post by its ID, including comments preview, emotions data, and requester context. Authentication is optional — unauthenticated requests receive the post without personalised requester context.

## Path parameters

- `postId` string, uuid, required

## Query parameters

- `take` integer
- `badgesExperimentIsEnabled` boolean

## Headers

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

## Response `200`

Post retrieved successfully

- Discussion — A single discussion entry in a feed — wraps a Post with its interaction data
  - `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
            - `width` integer — Thumbnail width in pixels
            - `height` integer — Thumbnail height in pixels
            - `url` string — Thumbnail URL
    - `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
            - `url` string — SVG URL
            - `backgroundColor` string — Brand background colour (hex)
            - `textColor` string — Brand text colour (hex)
        - `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)
            - `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)
      - `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
            - `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
        - `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
            - `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
        - `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
            - `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
        - `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
            - `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)
      - `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
            - `image` object — Image dimensions and URL
              - …
            - `video` object — Video source 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
            - `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)
        - `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
            - `image` object — Image dimensions and URL
              - …
            - `video` object — Video source details
              - …
        - `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
              - …
            - `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
        - `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
              - …
            - `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
        - `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
            - `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)
              - …
            - `obsoleteId` string — Legacy numeric emotion ID
            - `parent` object — Parent entity reference
              - …
            - `created` string, date-time — When the like was created
      - `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
            - `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)
        - `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

## Other responses

- `404` — Post not found
- `429` — Too Many Requests — the shared rate limit (60 requests / 60s) was exceeded.

---

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