> ## 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 activity logs

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



## OpenAPI

````yaml /openapi-v1.json get /v1/activity_logs
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/activity_logs:
    get:
      tags:
        - Activity logs
      summary: List activity logs
      description: >-
        Returns a page of activity logs, newest first. Pass a page's
        `next_cursor` as `starting_after` to read the next one.
      operationId: listActivityLogs
      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: ^alog_[a-zA-Z0-9]{12}$
              - type: array
                items:
                  type: string
                  pattern: ^alog_[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:
                  - badge.given
                  - calendar_event.user_registered
                  - calendar_event.user_unregistered
                  - comment.created
                  - slack_message.created
                  - slack_message.threaded_reply.created
                  - slack_reaction.added
                  - slack_reaction.removed
                  - post.created
                  - workspace.user_joined
                  - journey.completed
                  - milestone.completed
                  - award.given
                  - poll.created
                  - poll.vote_added
                  - post.edited
                  - comment.edited
                  - post.deleted
                  - comment.deleted
                  - site.auth.login_success
                  - site.auth.login_failure
                  - slack_profile.photo.updated
                  - answer.selected
                  - answer.unselected
                  - answer.marked_best
                  - slack_channel.member_joined
              - type: array
                items:
                  type: string
                  enum:
                    - badge.given
                    - calendar_event.user_registered
                    - calendar_event.user_unregistered
                    - comment.created
                    - slack_message.created
                    - slack_message.threaded_reply.created
                    - slack_reaction.added
                    - slack_reaction.removed
                    - post.created
                    - workspace.user_joined
                    - journey.completed
                    - milestone.completed
                    - award.given
                    - poll.created
                    - poll.vote_added
                    - post.edited
                    - comment.edited
                    - post.deleted
                    - comment.deleted
                    - site.auth.login_success
                    - site.auth.login_failure
                    - slack_profile.photo.updated
                    - answer.selected
                    - answer.unselected
                    - answer.marked_best
                    - slack_channel.member_joined
                maxItems: 100
            description: >-
              Returns only rows whose type is one of these. Repeatable. One of:
              `badge.given`, `calendar_event.user_registered`,
              `calendar_event.user_unregistered`, `comment.created`,
              `slack_message.created`, `slack_message.threaded_reply.created`,
              `slack_reaction.added`, `slack_reaction.removed`, `post.created`,
              `workspace.user_joined`, `journey.completed`,
              `milestone.completed`, `award.given`, `poll.created`,
              `poll.vote_added`, `post.edited`, `comment.edited`,
              `post.deleted`, `comment.deleted`, `site.auth.login_success`,
              `site.auth.login_failure`, `slack_profile.photo.updated`,
              `answer.selected`, `answer.unselected`, `answer.marked_best`,
              `slack_channel.member_joined`.
          required: false
          description: >-
            Returns only rows whose type is one of these. Repeatable. One of:
            `badge.given`, `calendar_event.user_registered`,
            `calendar_event.user_unregistered`, `comment.created`,
            `slack_message.created`, `slack_message.threaded_reply.created`,
            `slack_reaction.added`, `slack_reaction.removed`, `post.created`,
            `workspace.user_joined`, `journey.completed`, `milestone.completed`,
            `award.given`, `poll.created`, `poll.vote_added`, `post.edited`,
            `comment.edited`, `post.deleted`, `comment.deleted`,
            `site.auth.login_success`, `site.auth.login_failure`,
            `slack_profile.photo.updated`, `answer.selected`,
            `answer.unselected`, `answer.marked_best`,
            `slack_channel.member_joined`.
          name: type
          in: query
          style: form
          explode: true
        - schema:
            type: string
            format: date-time
            description: RFC 3339. Returns only rows whose occurred_at is at or after this.
          required: false
          description: RFC 3339. Returns only rows whose occurred_at is at or after this.
          name: occurred_at[gte]
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              RFC 3339. Returns only rows whose occurred_at is at or before
              this.
          required: false
          description: RFC 3339. Returns only rows whose occurred_at is at or before this.
          name: occurred_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 initiator_id is one of these. Repeatable.
          required: false
          description: Returns only rows whose initiator_id is one of these. Repeatable.
          name: initiator_id
          in: query
          style: form
          explode: true
        - 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 recipient_id is one of these. Repeatable.
          required: false
          description: Returns only rows whose recipient_id is one of these. Repeatable.
          name: recipient_id
          in: query
          style: form
          explode: true
        - schema:
            anyOf:
              - type: string
                enum:
                  - initiator
                  - recipient
              - type: array
                items:
                  type: string
                  enum:
                    - initiator
                    - recipient
                maxItems: 2
            description: >-
              Repeatable. Returns the named relation inline. One of:
              `initiator`, `recipient`.
          required: false
          description: >-
            Repeatable. Returns the named relation inline. One of: `initiator`,
            `recipient`.
          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/ActivityLogList'
        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:
    ActivityLogList:
      type: object
      properties:
        object:
          type: string
          enum:
            - list
          description: Always `list`.
        data:
          type: array
          items:
            $ref: '#/components/schemas/ActivityLog'
          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
    ActivityLog:
      type: object
      properties:
        object:
          type: string
          enum:
            - activity_log
          description: Always `activity_log`.
        id:
          type: string
          description: Unique identifier for the object.
          example: alog_4h2o89z6qlpw
        created_at:
          type: string
          format: date-time
          description: When the activity was recorded, which is what lists are ordered by.
        occurred_at:
          type: string
          format: date-time
          description: >-
            When the activity happened. Earlier than `created_at` for activity
            recorded after the fact.
        type:
          type: string
          enum:
            - badge.given
            - calendar_event.user_registered
            - calendar_event.user_unregistered
            - comment.created
            - slack_message.created
            - slack_message.threaded_reply.created
            - slack_reaction.added
            - slack_reaction.removed
            - post.created
            - workspace.user_joined
            - journey.completed
            - milestone.completed
            - award.given
            - poll.created
            - poll.vote_added
            - post.edited
            - comment.edited
            - post.deleted
            - comment.deleted
            - site.auth.login_success
            - site.auth.login_failure
            - slack_profile.photo.updated
            - answer.selected
            - answer.unselected
            - answer.marked_best
            - slack_channel.member_joined
          description: >-
            What happened. One of:

            - `answer.marked_best`: a reply already marked as an answer was
            promoted to its post’s best answer.

            - `answer.selected`: a reply was marked as an answer on a post.

            - `answer.unselected`: a reply was unmarked as an answer on a post.

            - `award.given`: an award was given to a member.

            - `badge.given`: a badge was given to a member, recorded before
            awards replaced badges; each one is also listed as an `award.given`.

            - `calendar_event.user_registered`: a member registered for an
            event, or an admin registered them.

            - `calendar_event.user_unregistered`: a member unregistered from an
            event, or an admin unregistered them.

            - `comment.created`: a member commented on a post.

            - `comment.deleted`: a comment was deleted.

            - `comment.edited`: a comment was edited.

            - `journey.completed`: a member completed a journey.

            - `milestone.completed`: a member completed a milestone.

            - `poll.created`: a poll was created.

            - `poll.vote_added`: a member voted on a poll. Served only while the
            poll’s `results_visible` is true, and with no initiator when its
            `voter_identity_visibility` is not `public`.

            - `post.created`: a member created a post.

            - `post.deleted`: a post was deleted.

            - `post.edited`: a post was edited.

            - `site.auth.login_failure`: a sign-in attempt on the community site
            failed.

            - `site.auth.login_success`: a member signed in to the community
            site.

            - `slack_channel.member_joined`: a member joined a Slack channel.

            - `slack_message.created`: a top-level Slack message was posted in a
            community channel.

            - `slack_message.threaded_reply.created`: a threaded reply was
            posted in a community channel.

            - `slack_reaction.added`: an emoji reaction was added to a Slack
            message.

            - `slack_reaction.removed`: an emoji reaction was removed from a
            Slack message.

            - `slack_profile.photo.updated`: a member set a custom Slack profile
            photo.

            - `workspace.user_joined`: a user joined the Slack workspace.
          example: award.given
        initiator_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The member who acted. Null when no member did, when that member has
            been forgotten, or when they should not be identified.
          example: prof_9f2b8c1d4e5a
        initiator:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - type: 'null'
          description: The member who acted. Present only when `initiator` is expanded.
        recipient_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The member acted upon, such as the one reacted to, replied to or
            given an award. Null when the type has none.
          example: prof_5Yq7tVz2Hm3n
        recipient:
          anyOf:
            - $ref: '#/components/schemas/Profile'
            - type: 'null'
          description: The member acted upon. Present only when `recipient` is expanded.
        metadata_version:
          type: string
          description: >-
            The version of the `activity_metadata` shape this activity was
            recorded under.
          example: '0.08'
        activity_metadata:
          type: object
          additionalProperties: {}
          description: >-
            What the activity recorded at the time, such as labels and text
            snippets, plus the public id of each record it involved. An id reads
            as null once that record is gone or its member has been forgotten. A
            Slack channel keeps Slack's own id, and so does a Slack user who has
            not been forgotten. The keys differ per type.
          example:
            award_id: awrd_7Hk2mQ9xLp4s
            award_label: Top contributor
            given_anonymously: false
      required:
        - object
        - id
        - created_at
        - occurred_at
        - type
        - initiator_id
        - recipient_id
        - metadata_version
        - activity_metadata
    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

- [Retrieve an activity log](https://docs.tightknit.ai/v1/api-reference/activity-logs/retrieve-an-activity-log.md)
- [Salesforce](https://docs.tightknit.ai/integrations/salesforce.md)
- [Activity Log Metadata Versions](https://docs.tightknit.ai/activity-logs/versions.md)
- [Read and filter community activity logs](https://docs.tightknit.ai/activity-logs/getting-started.md)
- [MCP Server](https://docs.tightknit.ai/integrations/mcp.md)


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