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

# Get posts for a creator (cursor-paginated)

> Returns a cursor-paginated list of posts created by the specified creator, ordered by pinned status first, then by publication date (newest first). Keyset pagination is stable under concurrent writes and has constant per-page cost, unlike the offset-paginated v0 endpoint. Page with the opaque `nextCursor`.

<Info>
  **Required scopes**

  * `read:post` — Read posts, including post details, comments, likes, and tips.
  * `read:creator` — Access creator profiles, content, and creator-specific information.
</Info>


## OpenAPI

````yaml /openapi-v1.json get /v1/creators/{creatorUserUuid}/posts
openapi: 3.1.0
info:
  title: Fanvue API
  version: '0.1'
servers:
  - url: https://api.fanvue.com
security: []
paths:
  /v1/creators/{creatorUserUuid}/posts:
    get:
      summary: Get posts for a creator (cursor-paginated)
      description: >-
        Returns a cursor-paginated list of posts created by the specified
        creator, ordered by pinned status first, then by publication date
        (newest first). Keyset pagination is stable under concurrent writes and
        has constant per-page cost, unlike the offset-paginated v0 endpoint.
        Page with the opaque `nextCursor`.
      operationId: getCreatorPostsV1
      parameters:
        - $ref: '#/components/parameters/ApiVersionHeader'
        - schema:
            type: string
            format: uuid
          required: true
          name: creatorUserUuid
          in: path
        - schema:
            type: string
            description: >-
              Opaque pagination cursor from a previous response's `nextCursor`.
              It carries the includeUnpublished flag and date range the first
              page was cut under, so later pages need nothing but the cursor.
              Resending those filters is allowed while they match it; a value
              that contradicts the cursor is rejected.
          required: false
          description: >-
            Opaque pagination cursor from a previous response's `nextCursor`. It
            carries the includeUnpublished flag and date range the first page
            was cut under, so later pages need nothing but the cursor. Resending
            those filters is allowed while they match it; a value that
            contradicts the cursor is rejected.
          name: cursor
          in: query
        - schema:
            type: number
            minimum: 1
            maximum: 50
            default: 15
            description: 'Number of items to return (1-50, default: 15)'
          required: false
          description: 'Number of items to return (1-50, default: 15)'
          name: size
          in: query
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              Whether to include unpublished posts (drafts and scheduled posts)
              in the results. Defaults to true.
          required: false
          description: >-
            Whether to include unpublished posts (drafts and scheduled posts) in
            the results. Defaults to true.
          name: includeUnpublished
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              Only include posts created on or after this ISO 8601 datetime
              (e.g., 2024-10-20T00:00:00Z).
          required: false
          description: >-
            Only include posts created on or after this ISO 8601 datetime (e.g.,
            2024-10-20T00:00:00Z).
          name: startDate
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              Only include posts created before this ISO 8601 datetime
              (non-inclusive).
          required: false
          description: >-
            Only include posts created before this ISO 8601 datetime
            (non-inclusive).
          name: endDate
          in: query
      responses:
        '200':
          description: Cursor-paginated list of posts for this creator
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        uuid:
                          type: string
                          format: uuid
                          description: Unique identifier of the post
                        createdAt:
                          type: string
                          format: date-time
                          description: >-
                            Date/time when the post was created (ISO 8601
                            format)
                        text:
                          type:
                            - string
                            - 'null'
                          description: Text content of the post
                        price:
                          type:
                            - number
                            - 'null'
                          description: Price in cents for paid posts
                        mediaPreviewUuid:
                          type:
                            - string
                            - 'null'
                          format: uuid
                          description: UUID of free preview media
                        audience:
                          $ref: '#/components/schemas/PostAudience'
                        publishAt:
                          type:
                            - string
                            - 'null'
                          format: date-time
                          description: >-
                            Future date/time when the post will be published
                            (ISO 8601 format)
                        publishedAt:
                          type:
                            - string
                            - 'null'
                          format: date-time
                          description: >-
                            Date/time when the post was published (ISO 8601
                            format)
                        expiresAt:
                          type:
                            - string
                            - 'null'
                          format: date-time
                          description: Date/time when the post expires (ISO 8601 format)
                        mediaUuids:
                          type: array
                          items:
                            type: string
                            format: uuid
                          description: Array of media UUIDs attached to the post
                        isPinned:
                          type: boolean
                          description: Whether the post is pinned to the top of the feed
                        likesCount:
                          type: number
                          description: Number of likes the post has received
                        commentsCount:
                          type: number
                          description: Number of comments on the post
                        tips:
                          type: object
                          properties:
                            count:
                              type: number
                              description: Number of paid tips received on this post
                            totalGross:
                              type: number
                              description: Total gross amount of paid tips in cents
                            totalNet:
                              type: number
                              description: >-
                                Total net amount of paid tips in cents (after
                                platform fees)
                          required:
                            - count
                            - totalGross
                            - totalNet
                          description: Tips statistics for this post
                        collections:
                          type: array
                          items:
                            type: object
                            properties:
                              uuid:
                                type: string
                                format: uuid
                                description: Unique identifier of the collection
                              label:
                                type: string
                                description: Display name of the collection
                            required:
                              - uuid
                              - label
                          description: Content collections this post belongs to
                      required:
                        - uuid
                        - createdAt
                        - text
                        - price
                        - mediaPreviewUuid
                        - audience
                        - publishAt
                        - publishedAt
                        - expiresAt
                        - mediaUuids
                        - isPinned
                        - likesCount
                        - commentsCount
                        - tips
                        - collections
                    description: Array of posts, pinned first then most recently published
                  nextCursor:
                    type:
                      - string
                      - 'null'
                    description: >-
                      Opaque cursor for the next page, or null when there are no
                      more results
                  total:
                    type:
                      - number
                      - 'null'
                    description: >-
                      Total number of items, or null when a count is not
                      computed for this list
                required:
                  - data
                  - nextCursor
                  - total
              example:
                data:
                  - uuid: 550e8400-e29b-41d4-a716-446655440000
                    createdAt: '2025-01-16T14:20:00.000Z'
                    text: Behind the scenes from today's shoot
                    price: null
                    mediaPreviewUuid: null
                    audience: subscribers
                    publishAt: null
                    publishedAt: '2025-01-16T14:20:00.000Z'
                    expiresAt: null
                    mediaUuids:
                      - 550e8400-e29b-41d4-a716-446655440010
                    isPinned: true
                    likesCount: 42
                    commentsCount: 5
                    tips:
                      count: 3
                      totalGross: 1500
                      totalNet: 1275
                    collections: []
                nextCursor: k0FQ1m9yb3ZpZGVkQnlUaGVBUEk
                total: null
        '400':
          description: >-
            Bad Request - API version not supported OR validation failed OR
            invalid UUID
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/UnsupportedVersionError'
                  - $ref: '#/components/schemas/ValidationError'
                  - $ref: '#/components/schemas/InvalidUuidError'
        '401':
          $ref: '#/components/responses/UnauthorizedResponse'
        '403':
          $ref: '#/components/responses/UnauthorizedResponse'
        '404':
          $ref: '#/components/responses/NotFoundResponse'
        '410':
          $ref: '#/components/responses/SunsetVersionResponse'
        '429':
          $ref: '#/components/responses/RateLimitResponse'
      security:
        - BearerAuth:
            - read:post
            - read:creator
components:
  parameters:
    ApiVersionHeader:
      name: X-Fanvue-API-Version
      in: header
      required: true
      schema:
        type: string
        default: '2025-06-26'
        example: '2025-06-26'
      description: API version to use for the request
  schemas:
    PostAudience:
      type: string
      enum:
        - subscribers
        - followers-and-subscribers
      description: Audience that can view the post
    UnsupportedVersionError:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
      required:
        - error
        - message
      description: API version not supported
    ValidationError:
      type: object
      properties:
        errors:
          type: array
          items:
            type: string
      required:
        - errors
      description: Request validation failed
    InvalidUuidError:
      type: object
      properties:
        message:
          type: string
      required:
        - message
      description: Invalid UUID format provided
  responses:
    UnauthorizedResponse:
      description: Unauthorized Response
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
    NotFoundResponse:
      description: Not Found Response
      content:
        application/json:
          schema:
            type: object
            properties:
              message:
                type: string
            required:
              - message
    SunsetVersionResponse:
      description: API version no longer supported (sunset)
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
              message:
                type: string
              nextVersion:
                type: string
            required:
              - error
              - message
    RateLimitResponse:
      description: Too many requests - rate limit exceeded
      headers:
        Retry-After:
          description: Number of seconds to wait before retrying the request
          schema:
            type: integer
        X-RateLimit-Limit:
          description: The maximum number of requests allowed in the current window
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: The number of requests remaining in the current window
          schema:
            type: integer
        X-RateLimit-Reset:
          description: The Unix timestamp (seconds) when the rate limit window resets
          schema:
            type: integer
      content:
        application/json:
          schema:
            type: object
            properties:
              error:
                type: string
            required:
              - error
  securitySchemes:
    BearerAuth:
      type: oauth2
      description: >-
        OAuth 2.0 access token, presented as a JWT bearer token in the
        `Authorization` header. Obtain a token via the authorization-code flow;
        the scopes granted to the token determine which operations it may call.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.fanvue.com/oauth2/auth
          tokenUrl: https://auth.fanvue.com/oauth2/token
          refreshUrl: https://auth.fanvue.com/oauth2/token
          scopes:
            read:self: >-
              Access your own user profile information, including basic account
              details and settings.
            read:chat: >-
              Read chat conversations, messages, and chat-related data. This
              includes viewing chat lists and message history.
            write:chat: >-
              Create new chats and send messages. This scope is required for any
              chat-related actions that modify data.
            read:experience: >-
              Exchange a fan's experience token for the resolved experience and
              the fan's identity, so an embedded fan-facing experience can
              render the right content.
            write:experience: >-
              Request that the creator publish or unpublish a fan-facing
              experience. The app mints a request token; the creator confirms
              and Fanvue performs the change.
            read:fan: Access fan-related data and information within the platform.
            read:post: Read posts, including post details, comments, likes, and tips.
            write:post: Create, edit, and manage posts and content on behalf of users.
            read:media: Access media files, images, videos, and other content assets.
            write:media: >-
              Upload, modify, and manage media files and content assets. Also
              required for vault folder management.
            read:creator: >-
              Access creator profiles, content, and creator-specific
              information.
            write:creator: Modify creator profiles, settings, and creator-specific data.
            read:insights: >-
              Access analytics, metrics, and insights data for performance
              tracking.
            read:tracking_links: >-
              Read tracking links and the users associated with them, including
              per-user tracking metadata.
            write:tracking_links: Create and delete tracking links.
            read:agency: Read agency information, including the agency's team members.
            write:agency: >-
              Manage agency team members and invites, including inviting new
              team members and creators.

````