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

# List follows

> Returns a page of follows, newest first. Pass a page's `next_cursor` as `starting_after` to read the next one.



## OpenAPI

````yaml /openapi-v1.json get /v1/follows
openapi: 3.1.0
info:
  title: Tightknit Admin API
  version: 1.0.0
  description: Administrative access to a Tightknit community.
servers:
  - url: https://api.tightknit.ai
security:
  - Bearer: []
tags:
  - name: API keys
    description: Inspect the key a request authenticated with.
  - name: Awards
    description: Badges and certificates a community grants its members.
  - name: Events
    description: Read, create, update and delete events on the community calendar.
  - name: Journeys
    description: Read multi-step member programs and their milestones.
  - name: Tags
    description: The labels that classify events and content resources.
  - name: Groups
    description: The segments a community sorts its members into.
  - name: Content
    description: >-
      The collections a community files its content under, and the links and
      events in them.
  - name: Feeds
    description: The Slack channels and site-only spaces a community posts in.
  - name: Files
    description: Images and documents a community has uploaded.
  - name: Messages
    description: What a community has published.
  - name: Members
    description: The people in a community.
  - name: Slack messages
    description: >-
      Messages sent to Slack. Sending is the only operation: they cannot be
      read, edited or deleted here.
  - name: Compositions
    description: >-
      Message Blaster drafts: messages saved in Studio before, and kept after,
      they are sent to Slack channels and members. An API key sees only the
      compositions shared with every Studio user.
  - name: Follows
    description: What a member follows.
  - name: Polls
    description: The questions a community puts to its members in Slack.
  - name: Activity logs
    description: What members did in the community, and when.
  - name: System
    description: Service health.
paths:
  /v1/follows:
    get:
      tags:
        - Follows
      summary: List follows
      description: >-
        Returns a page of follows, newest first. Pass a page's `next_cursor` as
        `starting_after` to read the next one.
      operationId: listFollows
      parameters:
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
            description: How many rows to return, from 1 to 100.
            example: 20
          required: false
          description: How many rows to return, from 1 to 100.
          name: limit
          in: query
        - schema:
            type: string
            description: Opaque cursor from a previous page’s next_cursor.
          required: false
          description: Opaque cursor from a previous page’s next_cursor.
          name: starting_after
          in: query
        - schema:
            anyOf:
              - type: string
                pattern: ^fllw_[a-zA-Z0-9]{12}$
              - type: array
                items:
                  type: string
                  pattern: ^fllw_[a-zA-Z0-9]{12}$
                maxItems: 100
            description: Returns only rows whose id is one of these. Repeatable.
          required: false
          description: Returns only rows whose id is one of these. Repeatable.
          name: id
          in: query
          style: form
          explode: true
        - schema:
            type: string
            format: date-time
            description: RFC 3339. Returns only rows whose created_at is at or after this.
          required: false
          description: RFC 3339. Returns only rows whose created_at is at or after this.
          name: created_at[gte]
          in: query
        - schema:
            type: string
            format: date-time
            description: RFC 3339. Returns only rows whose created_at is at or before this.
          required: false
          description: RFC 3339. Returns only rows whose created_at is at or before this.
          name: created_at[lte]
          in: query
        - schema:
            anyOf:
              - type: string
                pattern: ^prof_[a-zA-Z0-9]{12}$
              - type: array
                items:
                  type: string
                  pattern: ^prof_[a-zA-Z0-9]{12}$
                maxItems: 100
            description: Returns only rows whose follower_id is one of these. Repeatable.
          required: false
          description: Returns only rows whose follower_id is one of these. Repeatable.
          name: follower_id
          in: query
          style: form
          explode: true
        - schema:
            anyOf:
              - type: string
                enum:
                  - profile
                  - feed
                  - post
              - type: array
                items:
                  type: string
                  enum:
                    - profile
                    - feed
                    - post
                maxItems: 100
            description: >-
              Returns only rows whose target_type is one of these. Repeatable.
              One of: `profile`, `feed`, `post`.
          required: false
          description: >-
            Returns only rows whose target_type is one of these. Repeatable. One
            of: `profile`, `feed`, `post`.
          name: target_type
          in: query
          style: form
          explode: true
        - schema:
            anyOf:
              - type: string
                enum:
                  - follower
              - type: array
                items:
                  type: string
                  enum:
                    - follower
                maxItems: 1
            description: 'Repeatable. Returns the named relation inline. One of: `follower`.'
          required: false
          description: 'Repeatable. Returns the named relation inline. One of: `follower`.'
          name: expand
          in: query
          style: form
          explode: true
      responses:
        '200':
          description: Success
          headers:
            Request-Id:
              description: Identifier for this request, quote it in support tickets.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FollowList'
        default:
          description: Error
          headers:
            Request-Id:
              description: Identifier for this request, quote it in support tickets.
              schema:
                type: string
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - Bearer: []
components:
  schemas:
    FollowList:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
          description: Always `list`.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Follow'
          description: The rows on this page, in the order the list is read.
        url:
          type: string
          description: The path this list was read from.
        next_cursor:
          type: string
          description: >-
            Opaque cursor for the next page, to pass back as starting_after.
            Absent when no further pages exist, which is how a walk ends.
      required:
        - object
        - data
        - url
    Problem:
      type: object
      properties:
        type:
          type: string
          description: A URI naming the problem type. Always `about:blank`.
          example: about:blank
        title:
          type: string
          description: A short summary of the HTTP status.
          example: Not found
        status:
          type: integer
          description: The HTTP status code.
          example: 404
        detail:
          type: string
          description: What went wrong with this request, when there is more to say.
        code:
          type: string
          description: >-
            A stable, machine-readable error code to branch on, unlike `title`
            and `detail`.
          example: not_found
        param:
          type: string
          description: The request field or parameter the error is about, when one is.
        request_id:
          type: string
          description: >-
            The id of the request, also sent as the `Request-Id` header. Quote
            it in support tickets.
          example: req_9f2b8c1d4e5a6b7c8d9e0f1a2b3c4d5e
      required:
        - type
        - title
        - status
        - code
    Follow:
      type: object
      properties:
        object:
          type: string
          enum:
            - follow
          description: Always `follow`.
        id:
          type: string
          description: Unique identifier for the object.
          example: fllw_4k8p2n6x1vqz
        created_at:
          type: string
          format: date-time
          description: >-
            When the member followed. Unfollowing removes the record, so this
            never reads as a re-follow.
        follower_id:
          type: string
          description: The id of the member who follows.
          example: prof_9f2b8c1d4e5a
        follower:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - type: 'null'
          description: The member who follows. Present only when `follower` is expanded.
        target_type:
          type: string
          enum:
            - profile
            - feed
            - post
          description: |-
            What kind of record is followed. One of:
            - `profile`: another member.
            - `feed`: a feed.
            - `post`: a post.
          example: feed
        target_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The followed record, prefixed for its `target_type`. Null when the
            target no longer exists (nothing cleans a follow up with its target)
            or cannot be resolved within the community.
          example: feed_7m3x9k4t8plz
      required:
        - object
        - id
        - created_at
        - follower_id
        - target_type
        - target_id
    Profile:
      type: object
      properties:
        object:
          type: string
          enum:
            - profile
          description: Always `profile`.
        id:
          type: string
          description: Unique identifier for the object.
          example: prof_9f2b8c1d4e5a
        created_at:
          type: string
          format: date-time
          description: When the object was created.
        updated_at:
          type: string
          format: date-time
          description: When the object was last changed.
        name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The name the community shows for the member. With a linked Slack
            profile it follows the community’s name preference, or reads
            `🔒[private profile]` when `opt_out_of_public_profile` is true;
            without one it is `display_name`, falling back to `full_name`.
          example: Ada Lovelace
        full_name:
          type: string
          description: The member’s full name. Always set.
          example: Ada Lovelace
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The shorter name the member goes by, when they set one. Null
            otherwise.
        first_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s first name, when known.
        last_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s last name, when known.
        avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The URL of the member’s avatar, from their Slack profile when one is
            linked. Null when they have none, or when a member with a linked
            Slack profile has `opt_out_of_public_profile` on.
        email:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s email address. Null when it is not known.
          example: ada@example.com
        email_domain:
          anyOf:
            - type: string
            - type: 'null'
          description: The lowercased domain of `email`, maintained by the database.
          example: example.com
        locale:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s language and region, such as `en-US`, when known.
        is_team_member:
          type: boolean
          description: >-
            Whether the member is staff of the community rather than one of its
            people.
        is_deactivated:
          type: boolean
          description: Whether the member has been deactivated in the community.
        opt_out_of_public_profile:
          type: boolean
          description: >-
            Whether the member asked to be left out of the public member
            directory.
        member_since:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            When the member joined the community: their first site sign-in or
            Slack join. Null while they are invited and have not joined yet.
        invited_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            When an admin added the member before they joined (Studio, Admin
            API, MCP or CSV import), whether or not an invitation was sent. Kept
            after they join; null for members never added this way.
        signed_up_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            When the member first signed in to the community site. Unlike
            `member_since`, a Slack join never sets it. Null for members who
            have never signed in.
        source:
          type: string
          enum:
            - slack_sync
            - import
            - api
            - studio_signin
            - sso_signin
            - legacy
            - unknown
          description: >-
            How the profile was created. A Slack invitee who had not joined yet
            takes `api` or `import` when an admin then adds them. One of:

            - `slack_sync`: from Slack, through the member roster sync or the
            member joining or acting in the workspace.

            - `import`: from an admin’s bulk member import.

            - `api`: from the Admin API, Studio’s add-member form or the MCP
            server.

            - `studio_signin`: on an admin’s first Studio sign-in.

            - `sso_signin`: on a member’s first single sign-on (SSO) sign-in,
            where the site creates accounts automatically.

            - `legacy`: created before the origin was recorded.

            - `unknown`: created before the origin was recorded and before its
            Slack link, with no way left to tell how.
          example: slack_sync
        has_account:
          type: boolean
          description: >-
            Whether the member has a sign-in account. False for a Slack identity
            nobody has claimed.
        flair_group_id:
          anyOf:
            - type: string
            - type: 'null'
          description: The group whose flair the member shows beside their name.
          example: grup_7m3x9k4t8plz
        slack_profile_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Slack’s id for the member’s linked Slack profile. Null when the
            member has no Slack identity.
          example: U0BRY4S6LNQ
        integrations:
          type: object
          properties:
            slack:
              type: object
              properties:
                profile:
                  anyOf:
                    - $ref: '#/components/schemas/SlackProfile'
                    - type: 'null'
                  description: The linked Slack profile, or null when the member has none.
              required:
                - profile
              description: The member’s Slack identity.
          required:
            - slack
          description: >-
            Where the member connects to other platforms. Present only when
            `slack_profile` is expanded.
      required:
        - object
        - id
        - created_at
        - updated_at
        - name
        - full_name
        - display_name
        - first_name
        - last_name
        - avatar_url
        - email
        - email_domain
        - locale
        - is_team_member
        - is_deactivated
        - opt_out_of_public_profile
        - member_since
        - invited_at
        - signed_up_at
        - source
        - has_account
        - flair_group_id
        - slack_profile_id
    SlackProfile:
      type: object
      properties:
        object:
          type: string
          enum:
            - slack_profile
          description: Always `slack_profile`.
        id:
          type: string
          description: Slack’s id for the member.
          example: U0BRY4S6LNQ
        created_at:
          type: string
          format: date-time
          description: When the object was created.
        updated_at:
          type: string
          format: date-time
          description: When the object was last changed.
        workspace_id:
          type: string
          description: Slack’s id for the workspace the member belongs to.
          example: T01ABC123
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The display name the member set in Slack. Empty or null when they
            set none.
        real_name:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s full name in Slack. Null when Slack has none.
        email:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The email address on the Slack account. Null when Slack does not
            share it, as for bots.
          example: ada@example.com
        pronouns:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The pronouns the member set in Slack. Empty or null when they set
            none.
        avatar_url:
          anyOf:
            - type: string
            - type: 'null'
          description: The URL of the member’s Slack avatar. Null when Slack has none.
        locale:
          anyOf:
            - type: string
            - type: 'null'
          description: The member’s Slack language and region, such as `en-US`, when known.
        tz:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The member’s time zone in Slack, as an IANA name such as
            `America/New_York`, when known.
        is_bot:
          type: boolean
          description: Whether the account is a bot rather than a person.
        is_app_user:
          type: boolean
          description: >-
            Whether Slack reports the member as an authorized user of the
            Tightknit app.
        is_workflow_bot:
          type: boolean
          description: Whether the account is the bot behind a Slack workflow.
        is_admin:
          type: boolean
          description: Whether the member is an admin of the Slack workspace.
        is_owner:
          type: boolean
          description: Whether the member is an owner of the Slack workspace.
        is_restricted:
          type: boolean
          description: >-
            Whether the member is a Slack guest, limited to the channels they
            were invited to.
        is_invited_user:
          type: boolean
          description: Whether the member holds nothing but a still-open Slack invitation.
        is_deleted:
          type: boolean
          description: Whether Slack deactivated the account.
      required:
        - object
        - id
        - created_at
        - updated_at
        - workspace_id
        - display_name
        - real_name
        - email
        - pronouns
        - avatar_url
        - locale
        - tz
        - is_bot
        - is_app_user
        - is_workflow_bot
        - is_admin
        - is_owner
        - is_restricted
        - is_invited_user
        - is_deleted
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: Tightknit API key
      description: 'A Tightknit admin API key, sent as `Authorization: Bearer <key>`.'

````

## Related topics

- [List compositions](https://docs.tightknit.ai/v1/api-reference/compositions/list-compositions.md)
- [List tags](https://docs.tightknit.ai/v1/api-reference/tags/list-tags.md)
- [List journeys](https://docs.tightknit.ai/v1/api-reference/journeys/list-journeys.md)
- [List polls](https://docs.tightknit.ai/v1/api-reference/polls/list-polls.md)
- [List members](https://docs.tightknit.ai/v1/api-reference/members/list-members.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.