> ## 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 polls

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



## OpenAPI

````yaml /openapi-v1.json get /v1/polls
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/polls:
    get:
      tags:
        - Polls
      summary: List polls
      description: >-
        Returns a page of polls, newest first. Pass a page's `next_cursor` as
        `starting_after` to read the next one.
      operationId: listPolls
      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: ^poll_[a-zA-Z0-9]{12}$
              - type: array
                items:
                  type: string
                  pattern: ^poll_[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
                enum:
                  - open
                  - closed
                  - scheduled
              - type: array
                items:
                  type: string
                  enum:
                    - open
                    - closed
                    - scheduled
                maxItems: 100
            description: >-
              Returns only rows whose status is one of these. Repeatable. One
              of: `open`, `closed`, `scheduled`.
          required: false
          description: >-
            Returns only rows whose status is one of these. Repeatable. One of:
            `open`, `closed`, `scheduled`.
          name: status
          in: query
          style: form
          explode: true
        - schema:
            anyOf:
              - type: string
              - type: array
                items:
                  type: string
                maxItems: 100
            description: >-
              Returns only rows whose slack_channel_id is one of these.
              Repeatable.
          required: false
          description: >-
            Returns only rows whose slack_channel_id is one of these.
            Repeatable.
          name: slack_channel_id
          in: query
          style: form
          explode: true
        - schema:
            type: string
            enum:
              - 'true'
              - 'false'
            description: >-
              Returns only rows whose results_visible is this. One of: `true`,
              `false`.
          required: false
          description: >-
            Returns only rows whose results_visible is this. One of: `true`,
            `false`.
          name: results_visible
          in: query
        - schema:
            type: string
            description: Returns only rows whose search contains this.
          required: false
          description: Returns only rows whose search contains this.
          name: search[contains]
          in: query
        - schema:
            anyOf:
              - type: string
                enum:
                  - created_by
                  - updated_by
                  - slack_channel
              - type: array
                items:
                  type: string
                  enum:
                    - created_by
                    - updated_by
                    - slack_channel
                maxItems: 3
            description: >-
              Repeatable. Returns the named relation inline. One of:
              `created_by`, `updated_by`, `slack_channel`.
          required: false
          description: >-
            Repeatable. Returns the named relation inline. One of: `created_by`,
            `updated_by`, `slack_channel`.
          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/PollList'
        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:
    PollList:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
          description: Always `list`.
        data:
          type: array
          items:
            $ref: '#/components/schemas/Poll'
          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
    Poll:
      type: object
      properties:
        object:
          type: string
          enum:
            - poll
          description: Always `poll`.
        id:
          type: string
          description: Unique identifier for the object.
          example: poll_6r4t8y2u1iop
        created_at:
          type: string
          format: date-time
          description: >-
            When the poll was created. A scheduled poll is created before it
            reaches Slack, so this is not when it was posted.
        updated_at:
          type: string
          format: date-time
          description: >-
            When the poll was last edited, closed, reopened or published. Votes
            do not move it.
        question:
          anyOf:
            - type: string
            - type: 'null'
          description: What the poll asks.
          example: Which day suits the next meetup?
        description:
          anyOf:
            - type: string
            - type: 'null'
          description: Extra context shown under the question. Null for none.
        allow_multiple_responses:
          anyOf:
            - type: boolean
            - type: 'null'
          description: >-
            Whether a member may choose several options, rather than their pick
            replacing the last one.
        options:
          type: array
          items:
            $ref: '#/components/schemas/PollOption'
          description: >-
            The options a member chooses between, in the order the poll shows
            them.
        status:
          type: string
          enum:
            - open
            - closed
            - scheduled
          description: |-
            Whether the poll takes votes. One of:
            - `open`: posted and taking votes.
            - `closed`: no longer taking votes.
            - `scheduled`: waiting for `scheduled_at` to be posted.
          example: open
        closed_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            When the poll was closed. Reopening clears it, so it never describes
            an earlier close.
        scheduled_at:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            When a scheduled poll is due to post. It is kept once the poll
            publishes, so it reads as history rather than as something still
            pending.
        results_visibility:
          type: string
          enum:
            - public
            - hidden
            - shown_when_closed
          description: >-
            Who may see the tally, and when. Fixed when the poll is created. One
            of:

            - `public`: everyone, at any time.

            - `hidden`: only whoever created the poll.

            - `shown_when_closed`: everyone once the poll closes, and only its
            creator before.
        voter_identity_visibility:
          type: string
          enum:
            - public
            - anonymous
            - confidential
          description: >-
            Whether voters are named with their answers. Fixed when the poll is
            created. One of:

            - `public`: voters are named to everyone who sees the results.

            - `anonymous`: voters are hidden from everyone.

            - `confidential`: voters are named only to whoever created the poll.
        results_visible:
          type: boolean
          description: >-
            Whether this key may see the tally. False leaves `votes_count` and
            `responses_count` null. An API key counts as nobody, so a poll that
            only shows its results to its creator withholds them here.
        responses_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          description: >-
            How many responses the poll holds. A poll allowing several answers
            counts each one, so this is votes rather than voters. Null when
            `results_visible` is false.
        created_by_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The id of the profile that created the poll. Null when no member is
            recorded as its creator.
          example: prof_9f2b8c1d4e5a
        created_by:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - type: 'null'
          description: >-
            The profile that created the poll. Present only when `created_by` is
            expanded.
        updated_by_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The id of the profile that last changed the poll. Null until it is
            first changed, or when no member is recorded.
        updated_by:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - type: 'null'
          description: >-
            The profile that last changed the poll. Present only when
            `updated_by` is expanded.
        integrations:
          type: object
          properties:
            slack:
              type: object
              properties:
                channel_id:
                  type: string
                  description: The id of the Slack channel the poll is posted in.
                  example: C01ABC123
                message_ts:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    The posted poll message, null while the poll is still
                    scheduled.
                  example: '1788879207.324959'
                message_url:
                  anyOf:
                    - type: string
                    - type: 'null'
                  description: >-
                    A permalink to the poll message, null while the poll is
                    still scheduled.
                results_visualization:
                  type: string
                  enum:
                    - ascii_bar
                    - bar
                    - pie
                  description: |-
                    How the tally is drawn in the Slack message. One of:
                    - `ascii_bar`: bars drawn in text.
                    - `bar`: a Slack bar chart.
                    - `pie`: a Slack pie chart.
                channel:
                  anyOf:
                    - $ref: '#/components/schemas/SlackChannel'
                    - type: 'null'
                  description: >-
                    The Slack channel. Present only when `slack_channel` is
                    expanded.
              required:
                - channel_id
                - message_ts
                - message_url
                - results_visualization
              description: >-
                The Slack channel the poll runs in. A poll is always posted to
                one.
          required:
            - slack
          description: The poll's settings in connected platforms.
      required:
        - object
        - id
        - created_at
        - updated_at
        - question
        - description
        - allow_multiple_responses
        - options
        - status
        - closed_at
        - scheduled_at
        - results_visibility
        - voter_identity_visibility
        - results_visible
        - responses_count
        - created_by_id
        - updated_by_id
        - integrations
    PollOption:
      type: object
      properties:
        object:
          type: string
          enum:
            - poll_option
          description: Always `poll_option`.
        id:
          type: string
          description: Unique identifier for the object.
          example: qopt_8k3m1p9x2vqz
        position:
          type: integer
          minimum: 0
          description: Where the option sits in the poll, counting from zero.
        label:
          type: string
          description: What the option says.
          example: Wednesday
        votes_count:
          anyOf:
            - type: integer
              minimum: 0
            - type: 'null'
          description: >-
            How many responses chose this option. Null when the poll withholds
            its results, which `results_visible` on the poll says.
      required:
        - object
        - id
        - position
        - label
        - votes_count
    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
    SlackChannel:
      type: object
      properties:
        object:
          type: string
          enum:
            - slack_channel
          description: Always `slack_channel`.
        id:
          type: string
          description: Slack’s id for the channel.
          example: C01ABC123
        name:
          type:
            - string
            - 'null'
          description: >-
            The channel’s name in Slack, without the `#`. Null when it is not
            known.
        is_private:
          type:
            - boolean
            - 'null'
          description: Whether the channel is private in Slack. Null when it is not known.
        is_archived:
          type:
            - boolean
            - 'null'
          description: Whether the channel is archived in Slack. Null when it is not known.
      required:
        - object
        - id
        - name
        - is_private
        - is_archived
    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

- [Polls](https://docs.tightknit.ai/member-engagement/polls.md)
- [List poll responses](https://docs.tightknit.ai/v1/api-reference/polls/list-poll-responses.md)
- [MCP Server](https://docs.tightknit.ai/integrations/mcp.md)
- [List milestones](https://docs.tightknit.ai/v1/api-reference/journeys/list-milestones.md)
- [List activity logs](https://docs.tightknit.ai/v1/api-reference/activity-logs/list-activity-logs.md)


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