> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fourthwall.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Posts

<Note>
  **OAuth scope:** `memberships_read`

  API keys have full access to this endpoint.
</Note>


## OpenAPI

````yaml /openapi/membership.json GET /open-api/v1.1/memberships/posts
openapi: 3.1.0
info:
  title: OpenAPI
  version: 0.0.1
servers:
  - url: https://api.fourthwall.com
    description: Production server
security: []
paths:
  /open-api/v1.1/memberships/posts:
    get:
      tags:
        - Posts
      summary: List Posts
      operationId: list-posts
      parameters:
        - name: X-ShopId
          in: header
          required: false
          schema:
            type: string
        - name: page
          in: query
          required: false
          schema:
            type: integer
        - name: limit
          in: query
          required: false
          schema:
            type: integer
        - name: search_query
          in: query
          required: false
          schema:
            type: string
        - name: types[]
          in: query
          style: form
          required: false
          schema:
            type: array
            items:
              type:
                - string
                - 'null'
              enum:
                - Text
                - Poll
                - Image
                - Audio
                - Video
        - name: ids[]
          in: query
          style: form
          required: false
          schema:
            type: array
            items:
              type:
                - integer
                - 'null'
        - name: state
          in: query
          required: true
          schema:
            type: string
            enum:
              - Published
              - Scheduled
              - All
        - name: tags_ids[]
          in: query
          style: form
          required: false
          schema:
            type: array
            items:
              type:
                - integer
                - 'null'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  posts:
                    type: array
                    items:
                      oneOf:
                        - $ref: '#/components/schemas/Response.V1.Feed.Post.Text'
                        - $ref: '#/components/schemas/Response.V1.Feed.Post.Poll'
                        - $ref: '#/components/schemas/Response.V1.Feed.Post.Audio'
                        - $ref: '#/components/schemas/Response.V1.Feed.Post.Video'
                        - $ref: >-
                            #/components/schemas/Response.V1.Feed.Post.VideoEmbed
                        - $ref: '#/components/schemas/Response.V1.Feed.Post.Image'
                      discriminator:
                        propertyName: type
                  pagination:
                    $ref: '#/components/schemas/Response.V1.Pagination'
                required:
                  - posts
                  - pagination
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Response.Common.Error.Validation'
      security:
        - oauth:
            - memberships_read
        - basicAuth: []
components:
  schemas:
    Response.V1.Feed.Post.Text:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - Text
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        pinnedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - path
        - access
        - notifications
        - tags
        - statuses
        - comments
        - likes
      title: Text
    Response.V1.Feed.Post.Poll:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - Poll
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        finishedAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        options:
          type: array
          items:
            $ref: '#/components/schemas/Response.V1.Feed.Post.Poll.Option'
        votesAmount:
          type: integer
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        pinnedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - finishedAt
        - path
        - access
        - notifications
        - tags
        - statuses
        - options
        - votesAmount
        - comments
        - likes
      title: Poll
    Response.V1.Feed.Post.Audio:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - Audio
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        mediaUrl:
          type: string
        image:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Image.Custom'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        pinnedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - path
        - access
        - notifications
        - mediaUrl
        - image
        - tags
        - statuses
        - comments
        - likes
      title: Audio
    Response.V1.Feed.Post.Video:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - Video
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        mediaUrl:
          type: string
        image:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Image.Custom'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Image.Mux'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Image.None'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        customSubtitles:
          type: object
          properties:
            filename:
              type: string
            uploadedAt:
              type: string
              format: date-time
          required:
            - filename
            - uploadedAt
        countryRestrictions:
          type: array
          items:
            type: string
        pinnedAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - path
        - access
        - notifications
        - mediaUrl
        - tags
        - statuses
        - comments
        - likes
        - customSubtitles
        - updatedAt
      title: Video
    Response.V1.Feed.Post.VideoEmbed:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - VideoEmbed
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        embed:
          oneOf:
            - $ref: >-
                #/components/schemas/Response.V1.Feed.Post.Components.VideoEmbed.Youtube
            - $ref: >-
                #/components/schemas/Response.V1.Feed.Post.Components.VideoEmbed.Streamable
            - $ref: >-
                #/components/schemas/Response.V1.Feed.Post.Components.VideoEmbed.Vimeo
        image:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Image.Custom'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Image.None'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        pinnedAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - path
        - access
        - notifications
        - embed
        - tags
        - statuses
        - comments
        - likes
        - updatedAt
      title: Video Embed
    Response.V1.Feed.Post.Image:
      type: object
      properties:
        id:
          type: integer
        type:
          type: string
          enum:
            - Image
        title:
          type: string
        description:
          type: string
        liveAt:
          type: string
          format: date-time
        path:
          type: string
        access:
          type: object
          properties:
            tiers:
              type: array
              items:
                $ref: '#/components/schemas/Response.Common.Id'
            type:
              type: string
              enum:
                - Plans
                - MembersOnly
                - Public
                - FreeMembers
                - FreeAndPaidMembers
                - Paid
                - PaidAndPaidMembers
                - PaidAndTiers
            price:
              type:
                - integer
                - 'null'
          required:
            - type
        notifications:
          oneOf:
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Enabled'
            - $ref: '#/components/schemas/Response.V1.Feed.Post.Notification.Disabled'
        tags:
          type: array
          items:
            $ref: '#/components/schemas/Response.Common.Id'
        imageResources:
          type: array
          items:
            $ref: >-
              #/components/schemas/Response.V1.Feed.Post.Image.ResourceWithPosition
        image:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Image.Custom'
        statuses:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Statuses'
        comments:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Comments'
        likes:
          $ref: '#/components/schemas/Response.V1.Feed.Post.Likes'
        pinnedAt:
          type: string
          format: date-time
      required:
        - type
        - title
        - liveAt
        - path
        - access
        - notifications
        - imageResources
        - image
        - tags
        - statuses
        - comments
        - likes
      title: Image
    Response.V1.Pagination:
      type: object
      properties:
        pages:
          type: integer
        limit:
          type: integer
        page:
          type: integer
        total:
          type: integer
      required:
        - pages
        - limit
        - page
      title: Pagination
    Response.Common.Error.Validation:
      type: object
      properties:
        parameters:
          type: object
          example: '{ "post_id": [ "is missing" ] }'
        body:
          type: object
          example: '{ "discount": { "percentOff": [ "is missing" ] } }'
      title: Validation
    Response.Common.Id:
      type: object
      properties:
        id:
          type: integer
      required:
        - id
      title: Id
    Response.V1.Feed.Post.Notification.Enabled:
      type: object
      properties:
        type:
          type: string
          enum:
            - Enabled
      required:
        - type
      title: Enabled
    Response.V1.Feed.Post.Notification.Disabled:
      type: object
      properties:
        type:
          type: string
          enum:
            - Disabled
      required:
        - type
      title: Disabled
    Response.V1.Feed.Post.Statuses:
      type: object
      properties:
        resources:
          type: string
          enum:
            - None
            - Created
            - Processing
            - Completed
            - Errored
        post:
          type: string
          enum:
            - Created
            - Ready
            - Live
            - Finished
            - Archived
        schedule:
          type: string
          enum:
            - None
            - Asap
            - Future
            - Done
      required:
        - resources
        - post
        - schedule
      title: Statuses
    Response.V1.Feed.Post.Comments:
      type: object
      properties:
        count:
          type: integer
      required:
        - count
      title: Comments
    Response.V1.Feed.Post.Likes:
      type: object
      properties:
        count:
          type: integer
      required:
        - count
      title: Likes
    Response.V1.Feed.Post.Poll.Option:
      type: object
      properties:
        title:
          type: string
        votes:
          type: object
          properties:
            amount:
              type: number
            percentage:
              type: number
          required:
            - amount
            - percentage
      required:
        - title
        - votes
      title: Option
    Response.V1.Feed.Post.Image.Custom:
      type: object
      properties:
        type:
          type: string
          enum:
            - Custom
        thumbnailUrl:
          type: string
        url:
          type: string
      required:
        - type
        - thumbnailUrl
        - url
      title: Custom
    Response.V1.Feed.Post.Image.Mux:
      type: object
      properties:
        type:
          type: string
          enum:
            - Mux
        thumbnailUrl:
          type: string
        url:
          type: string
      required:
        - type
        - thumbnailUrl
        - url
      title: Mux
    Response.V1.Feed.Post.Image.None:
      type: object
      properties:
        type:
          type: string
          enum:
            - None
      required:
        - type
      title: None
    Response.V1.Feed.Post.Components.VideoEmbed.Youtube:
      type: object
      properties:
        type:
          type: string
          enum:
            - Youtube
        videoId:
          type: string
        url:
          type: string
      required:
        - type
        - videoId
        - url
      title: Youtube
    Response.V1.Feed.Post.Components.VideoEmbed.Streamable:
      type: object
      properties:
        type:
          type: string
          enum:
            - Streamable
        videoId:
          type: string
        url:
          type: string
      required:
        - type
        - videoId
        - url
      title: Streamable
    Response.V1.Feed.Post.Components.VideoEmbed.Vimeo:
      type: object
      properties:
        type:
          type: string
          enum:
            - Vimeo
        videoId:
          type: string
        url:
          type: string
      required:
        - type
        - videoId
        - url
      title: Vimeo
    Response.V1.Feed.Post.Image.ResourceWithPosition:
      type: object
      properties:
        type:
          type: string
          enum:
            - ResourceWithPosition
        resourceId:
          type: integer
        position:
          type: integer
      required:
        - type
        - resourceId
        - position
      title: Resource With Position
  securitySchemes:
    oauth:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: >-
            https://auth.staging.fourthwall.com/auth/realms/Fourthwall/protocol/openid-connect/auth
          scopes:
            memberships_read: memberships_read
            memberships_write: memberships_write
    basicAuth:
      type: http
      scheme: basic

````