# Return a user's feed of posts

Provides a list of posts in the user’s feed. Accepts pagination and filtering parameters. Upon enabling expanded reactions types, the response will include the additional reaction types.
 Resources
 
 Knowledge Base article on Feeds
 Feeds overview page
 Pagination
 Filtering

Endpoint: GET /v2/feed/posts
Version: 2026-03-06
Security: oauth2_as_a_user

## Query parameters:

  - `name` (string)
    Use a specific named feed, which is a preset of filters for specific types of feeds. By default, requests return the "myfeed" feed, which includes posts the user can see but may not necessarily be following. Specifying a name not listed here will result in a 400 Bad Request error.
    Enum: "myfeed", "following", "resources", "trending", "icymi", "featured", "bookmarked", "community_images"

  - `search` (string)
    Find content matching provided keywords. When specified, parameters other than pagination and the topics filter will be ignored.

  - `filter.user_behaviors` (array)
    Return content posts that users have interacted with in the provided ways. Defaults to all content if left empty.
    Enum: "liked", "bookmarked", "read", "unread"

  - `filter.channels.id` (array)
    Build the feed from the given topics. Provide a list as either array or comma separated list. Returns posts that are published to ANY of the topics. Defaults to all topics.

  - `filter.initiative_tags.id` (array)
    Build the feed from the given initiative tags. Provide a list as either array or comma separated list. Returns posts that are published with ANY of the initiative tags. Defaults to all content.

  - `filter.content_type` (array)
    Return only content matching the provided types, which can be a single type or a list as either array or comma separated list. Possible values include 'article', 'link', 'note', 'image', and 'video'. Defaults to all types. Including a type not listed her will result in a 400 Bad Request error.
    Enum: "article", "link", "note", "image", "video"

  - `filter.visibility` (string)
    Limit records to the value provided.
    Enum: "public", "private", "any"

  - `filter.featured` (string)
    Limit records to the value provided.
    Enum: "true", "false", "any"

  - `page.size` (integer)
    Return `page.size number of records starting at size*number`. The default page size is 10 (number of records per page), resulting in the first page being retrieved. The maximum page size is 100.

  - `page.number` (integer)
    Using classical pagination, the page number to return. Default is 1

## Response 200 fields (application/json):

  - `data` (array, required)

  - `data.id` (integer)
    Unique identifier for this post
    Example: 456

  - `data.uuid` (string)
    Example: "8b358e6b-11d4-4e89-bf7f-ec670e3398ed"

  - `data.version` (integer)
    The version of the content creation studio used to generate the content.
- 1 - Legacy Studio
- 2 - Creator Studio
    Enum: 1, 2

  - `data.content_type` (string)
    The type of content. One of: article, image, link, note, or video. The content_type can determine how the post should be presented.
    Example: "article"

  - `data.title` (string)
    The post title. Can also be considered the headline.
    Example: "Example Post Title"

  - `data.summary` (string)
    Short summary of the post.
    Example: "Example Post Summary"

  - `data.body` (string)
    The body of the post.
    Example: "Example post body"

  - `data.accent_color` (string)
    The color of the post, currently only applicable to notes.

  - `data.author` (object)

  - `data.author.avatar_url` (string)
    Path to an image representing the author.
    Example: "https://example.com/avatar.png"

  - `data.author.display_name` (string)
    The name to display as the author.
    Example: "Some User"

  - `data.author.user_id` (integer)
    The Firstup user_id of the author.
    Example: 123

  - `data.channels` (array)
    A list of the topics this post is published to.

  - `data.channels.channel_id` (integer)
    Topic's unique identifier (GUID).  NOTE: Originally called "id" in this documentation.
    Example: 789

  - `data.channels.name` (string)
    Topic's name.  NOTE: Originally called "title" in this documentation.
    Example: "Name of Example Topic"

  - `data.engagement` (object)

  - `data.engagement.liked_at` (string)
    Date and time at which the user liked the post. If the user has not liked the post, this value will be null.
    Example: "2000-01-01T00:00:00Z"

  - `data.engagement.bookmarked_at` (string)
    Date and time at which the user bookmarked the post. If the user has not bookmarked the post, this value will be null.
    Example: "2000-01-01T00:00:00Z"

  - `data.engagement.viewed_at` (string)
    Date and time at which the user viewed the post. If the user has not viewed the post, this value will be null.
    Example: "2000-01-01T00:00:00Z"

  - `data.engagement.total_likes_count` (integer)
    The total likes of this post within the program by any user.
    Example: 5

  - `data.engagement.total_shares_count` (integer)
    The total number of shares of this post within the program by any user.
    Example: 5

  - `data.engagement.total_bookmarks_count` (integer)
    The total number of bookmarks this post has got within the program by any user.
    Example: 5

  - `data.updated_at` (string)
    When this content was last updated in ISO8601 format and UTC timezone.
    Example: "2000-01-01T00:00:00Z"

  - `data.published_at` (string)
    When this content was published in ISO8601 format and UTC timezone.
    Example: "2000-01-01T00:00:00Z"

  - `data.visibility` (string)
    An indication of the native availability of the post within the Firstup platform. If 'public', the post has a public_link_url and shares of the post should use that url as the canonical url. If 'private', the post requires user authentication to view.
    Enum: "private", "public", "any"

  - `data.featured` (boolean)
    Whether the post is featured.
    Example: true

  - `data.featured_label` (string)
    The content's feature label
    Example: "Save Pandora!"

  - `data.permalink_url` (string)
    The url of the post on the Firstup platform.
    Example: "https://onfirstup.com/acme/acmetimes/sc4#contents/456"

  - `data.shareable_url` (string)
    The publicly shareable url of the post if it's visibility is public. Private visibility posts will have no shareable_url.
    Example: "https://onfirstup.com/acme/acmetimes/sc4#contents/456"

  - `data.prepopulated_share_message` (string)
    The auto-generated string used when sharing the post.
    Example: "Example Post Title https://onfirstup.com/acme/acmetimes/sc4#contents/456"

  - `data.appended_hashtag` (string)
    The hashtag configured to be included when sharing the posts. example: #YourBrand

  - `data.language` (string)
    The language. For non-translatable posts, this value will be null.
    Example: "en"

  - `data.is_translatable` (boolean)
    Whether the content is translatable.
    Example: true

  - `data.is_commentable` (boolean)
    Whether the content allows comments.
    Example: true

  - `data.comment_count` (integer)
    The number of comments on the content.
    Example: 5

  - `data.poster_image_url` (string)
    The url of the primary image used for this post, if one exists.
    Example: "https://cdn.example.com/acme/acmetimes/images/abc123"

  - `data.links` (array)

  - `data.links.link_url` (string)
    Example: "https://google.com"

  - `data.images` (array)

  - `data.images.id` (integer)
    The unique identifier of this image record
    Example: 678

  - `data.images.image_url` (string)
    Example: "https://cdn.example.com/acme/acmetimes/images/abc123"

  - `data.images.width` (integer)
    The width of the image in pixels
    Example: 1024

  - `data.images.height` (integer)
    The height of the image in pixels
    Example: 768

  - `data.videos` (array)

  - `data.videos.embed_html` (string)
    Html that can be used to embed the video in a page, wrapped in an iframe widget.
    Example: "<iframe href='https://onfirstup.com/acme/acmetimes/sc4#contents/456/videos/abc123'></iframe>\n"

  - `data.videos.link_url` (string)
    A link to the video where it can be played
    Example: "https://onfirstup.com/acme/acmetimes/sc4#contents/456/videos/abc123"

  - `meta` (object)

  - `meta.filters` (any)
    A list of the filters applied in the current request.
    Example: {"content_type":"article","visibility":"public"}

  - `meta.feed_name` (any)
    The name of the current feed, if named.
    Example: "myfeed"

  - `meta.pagination` (object)

  - `meta.pagination.page` (any)
    The page returned. Defaults to 1.
    Example: 1

  - `meta.pagination.page_size` (any)
    The max number of records requested with pagination applied. Is not necessarily an exact count of the current records returned. Defaults to 10.
    Example: 10

## Response 400 fields (application/json):

  - `error` (object, required)

  - `error.code` (integer, required)
    The HTTP status code of the received error.
    Example: 400

  - `error.title` (string, required)
    A short, human-readable title describing the error.
    Example: "Bad Request"

  - `error.detail` (string, required)
    A detailed explanation of what caused the error.
    Example: "One or more request validations have failed."

  - `error.validations` (array)
    A list of validation errors that caused the request to fail.

  - `error.validations.rule` (string)
    The validation rule that was violated.
    Example: "invalid_enum"

  - `error.validations.parameter` (string)
    The name of the request parameter that failed validation.
    Example: "state"

  - `error.validations.message` (string)
    A human-readable message describing the validation failure.
    Example: "name must be one of myfeed, following, resources"


