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

# Get team activity

> A tenant-scoped record of what the team (MSP staff) did in MSPortal: daily totals plus teammate and company rollups over the window (default the last 24 hours, at most 366 days). includeFeed=true adds a paginated, redacted who-did-what feed. Requires `analytics.read` and the linked user's read_team_activity permission.



## OpenAPI

````yaml /openapi.json get /api/public/v1/analytics/team-activity
openapi: 3.0.3
info:
  title: MSPortal Public API
  version: 1.0.0
  description: >-
    Public API for MSPortal - provides programmatic access to tenant data.


    ## Authentication


    All endpoints require authentication via API key passed as a Bearer token:


    ```

    Authorization: Bearer <your-api-key>

    ```


    API keys can be created in the MSPortal dashboard under Settings →
    Integrations → API Access.


    **Important:** Do not include cookies in API requests. The public API uses
    stateless authentication only.


    ## Scopes


    API keys are granted specific scopes that determine what operations they can
    perform. Each endpoint documents its required scope(s).


    ## Rate Limiting


    API calls are rate limited per API key. Rate limit information is returned
    in response headers:


    - `X-RateLimit-Limit`: Maximum requests per minute

    - `X-RateLimit-Remaining`: Remaining requests in current window

    - `X-RateLimit-Reset`: When the rate limit resets (ISO 8601)


    ## Request ID


    All responses include an `X-Request-Id` header for debugging and support.
    You can also pass your own `X-Request-Id` header to correlate requests.
  contact:
    name: MSPortal Support
    email: support@msportal.ai
  license:
    name: Proprietary
servers:
  - url: https://app.msportal.ai
    description: Production (US)
  - url: https://eu.msportal.ai
    description: Production (EU)
security:
  - BearerAuth: []
tags:
  - name: Budgets
    description: >-
      Budget management - create, track, and forecast budgets with line items,
      categories, and products
  - name: Calendar
    description: Calendar and meeting management - events, participants, and meeting types
  - name: Companies
    description: Company management endpoints
  - name: Company Users
    description: Company user management - client portal contacts (read-only, paginated)
  - name: Compliance
    description: Compliance check management - runs, assigned checks, and status updates
  - name: Dashboards
    description: Dashboard management - external iframe resources and internal dashboards
  - name: Devices
    description: Device management - inventory, types, and locations
  - name: Goals
    description: Goal management - create, track, and manage goals with tasks and updates
  - name: NPS Surveys
    description: >-
      NPS survey management - Net Promoter Score surveys, responses, and
      analytics
  - name: Reports
    description: >-
      Report management - create, manage, and schedule reports with templates
      and types
  - name: Planner
    description: >-
      Planner item management - tasks, roadmap items, and project planning with
      linked goals, compliance, and projects
  - name: Surveys
    description: >-
      General survey management - multi-question surveys, responses, and
      statistics
  - name: Tickets
    description: Ticket management - view and filter tickets from PSA integrations
  - name: Training
    description: >-
      Training management - courses, enrollments, certificates, and progress
      tracking
  - name: Users
    description: Tenant user management - internal staff and team members (read-only)
  - name: Automation Rules
    description: >-
      Automation rule management - create, configure, and monitor automation
      rules with triggers, conditions, and actions
  - name: Analytics
    description: >-
      Analytics and reporting - company audit data, training analytics, user
      activity, and portfolio metrics
  - name: Client Onboarding
    description: >-
      Client onboarding - portals (phases, tasks, contacts, activation),
      templates, checklist templates, forms and documentation pages
  - name: Backup
    description: >-
      Backup - summaries, protected devices, alerts and SaaS protection (Datto,
      Axcient, Slide, Kaseya)
  - name: Microsoft 365
    description: Microsoft 365 - licenses, users, domains and Secure Score
  - name: Security
    description: >-
      Security - posture summary, EDR incidents, vulnerabilities, email threats,
      firewalls, DNS filtering and security awareness
  - name: Financial
    description: Financial - quotes, invoices and revenue summaries
  - name: Integrations
    description: Integrations - status, sync health, pause and resume (never credentials)
  - name: Documentation
    description: >-
      Documentation - pages, folders and articles synced from Hudu or IT Glue,
      plus built-in pages
  - name: Broadcasts
    description: Broadcasts - emergency broadcasts, recipients and groups
  - name: Notifications
    description: Notifications - the linked user's in-app notifications
  - name: Standards
    description: >-
      Standards - technology standards catalog, service plans, applicability,
      deployment statuses, compliance rollups, white space and costs
  - name: Customer Success
    description: >-
      Customer success - client health scores, trends, benchmarks and Traffic
      Light Reviews
  - name: Tasks
    description: Tasks - the linked user's personal task list
  - name: Tenant Setup
    description: Tenant setup - profile, branding and portal settings (never secrets)
  - name: Roles
    description: Roles - staff and client roles and their permission grants
  - name: Ticket Templates
    description: Ticket templates - reusable ticket definitions
  - name: Readiness
    description: Client readiness - account readiness assessments
  - name: Projects
    description: >-
      Projects - PSA projects with health overlays (deliverables, milestones,
      client actions, weekly updates), phases, tickets, time entries, PSA
      status/owner/priority write-through, ticket notes, task controls, display
      settings and the document library
paths:
  /api/public/v1/analytics/team-activity:
    get:
      tags:
        - Analytics
      summary: Get team activity
      description: >-
        A tenant-scoped record of what the team (MSP staff) did in MSPortal:
        daily totals plus teammate and company rollups over the window (default
        the last 24 hours, at most 366 days). includeFeed=true adds a paginated,
        redacted who-did-what feed. Requires `analytics.read` and the linked
        user's read_team_activity permission.
      parameters:
        - schema:
            type: array
            items:
              type: string
              format: uuid
            maxItems: 100
            description: Limit to one or more companies (repeat the key or comma-separate)
          required: false
          description: Limit to one or more companies (repeat the key or comma-separate)
          name: companyId
          in: query
        - schema:
            type: string
            format: uuid
            description: 'Feed: limit to one teammate'
          required: false
          description: 'Feed: limit to one teammate'
          name: userId
          in: query
        - schema:
            type: string
            maxLength: 100
            description: 'Feed: one entity type, such as tickets or planner_items'
          required: false
          description: 'Feed: one entity type, such as tickets or planner_items'
          name: entityType
          in: query
        - schema:
            type: string
            enum:
              - create
              - insert
              - update
              - delete
              - view
              - login
            description: 'Feed: one action type'
          required: false
          description: 'Feed: one action type'
          name: actionType
          in: query
        - schema:
            type: string
            format: date-time
            description: >-
              Inclusive ISO-8601 start; defaults to 24 hours before dateTo (or
              before now when dateTo is omitted)
          required: false
          description: >-
            Inclusive ISO-8601 start; defaults to 24 hours before dateTo (or
            before now when dateTo is omitted)
          name: dateFrom
          in: query
        - schema:
            type: string
            format: date-time
            description: Inclusive ISO-8601 end; defaults to now
          required: false
          description: Inclusive ISO-8601 end; defaults to now
          name: dateTo
          in: query
        - schema:
            type: boolean
            default: false
            description: Include background and integration activity
          required: false
          description: Include background and integration activity
          name: includeSystem
          in: query
        - schema:
            type: boolean
            nullable: true
            default: false
            description: Include the detailed, paginated feed
          required: false
          description: Include the detailed, paginated feed
          name: includeFeed
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 10000
            default: 1
            description: Feed page
          required: false
          description: Feed page
          name: page
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
            description: Feed page size
          required: false
          description: Feed page size
          name: limit
          in: query
      responses:
        '200':
          description: Team activity
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/TeamActivity'
                required:
                  - data
        '400':
          description: Invalid query parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: >-
            Forbidden - missing scope (analytics.read), the linked user lacks
            the permission, or a company user addressed another company
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - BearerAuth: []
components:
  schemas:
    TeamActivity:
      type: object
      properties:
        overview:
          type: object
          properties:
            creates:
              type: integer
            updates:
              type: integer
            deletes:
              type: integer
            views:
              type: integer
            logins:
              type: integer
            totalActions:
              type: integer
            activeUsers:
              type: integer
            byDay:
              type: array
              items:
                type: object
                properties:
                  creates:
                    type: integer
                  updates:
                    type: integer
                  deletes:
                    type: integer
                  views:
                    type: integer
                  logins:
                    type: integer
                  date:
                    type: string
                  totalActions:
                    type: integer
                  uniqueUsers:
                    type: integer
                required:
                  - creates
                  - updates
                  - deletes
                  - views
                  - logins
                  - date
                  - totalActions
                  - uniqueUsers
          required:
            - creates
            - updates
            - deletes
            - views
            - logins
            - totalActions
            - activeUsers
            - byDay
        perUser:
          type: array
          items:
            type: object
            properties:
              userId:
                type: string
                nullable: true
                format: uuid
              name:
                type: string
              email:
                type: string
                nullable: true
              totalActions:
                type: integer
              activeDays:
                type: integer
              companiesTouched:
                type: integer
              lastActivity:
                type: string
                nullable: true
              actions:
                type: object
                properties:
                  creates:
                    type: integer
                  updates:
                    type: integer
                  deletes:
                    type: integer
                  views:
                    type: integer
                  logins:
                    type: integer
                required:
                  - creates
                  - updates
                  - deletes
                  - views
                  - logins
              entityTypes:
                type: array
                items:
                  type: string
            required:
              - userId
              - name
              - email
              - totalActions
              - activeDays
              - companiesTouched
              - lastActivity
              - actions
              - entityTypes
        perCompany:
          type: array
          items:
            type: object
            properties:
              companyId:
                type: string
                nullable: true
                format: uuid
              name:
                type: string
              totalActions:
                type: integer
              uniqueUsers:
                type: integer
              activeDays:
                type: integer
              lastActivity:
                type: string
                nullable: true
              actions:
                type: object
                properties:
                  creates:
                    type: integer
                  updates:
                    type: integer
                  deletes:
                    type: integer
                  views:
                    type: integer
                  logins:
                    type: integer
                required:
                  - creates
                  - updates
                  - deletes
                  - views
                  - logins
              entityTypes:
                type: array
                items:
                  type: string
            required:
              - companyId
              - name
              - totalActions
              - uniqueUsers
              - activeDays
              - lastActivity
              - actions
              - entityTypes
        feed:
          type: object
          properties:
            rows:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  occurredAt:
                    type: string
                  actor:
                    type: object
                    properties:
                      userId:
                        type: string
                        nullable: true
                        format: uuid
                      name:
                        type: string
                      email:
                        type: string
                        nullable: true
                      impersonated:
                        type: boolean
                      realActorUserId:
                        type: string
                        nullable: true
                        format: uuid
                      realActorName:
                        type: string
                        nullable: true
                    required:
                      - userId
                      - name
                      - email
                      - impersonated
                      - realActorUserId
                      - realActorName
                  company:
                    type: object
                    properties:
                      id:
                        type: string
                        nullable: true
                        format: uuid
                      name:
                        type: string
                    required:
                      - id
                      - name
                  actionType:
                    type: string
                  entityType:
                    type: string
                    nullable: true
                  entityLabel:
                    type: string
                  entityId:
                    nullable: true
                  summary:
                    type: string
                  changedFields:
                    nullable: true
                required:
                  - id
                  - occurredAt
                  - actor
                  - company
                  - actionType
                  - entityType
                  - entityLabel
                  - entityId
                  - summary
                  - changedFields
            pagination:
              $ref: '#/components/schemas/Pagination'
          required:
            - rows
            - pagination
          description: Present only when includeFeed=true
      required:
        - overview
        - perUser
        - perCompany
    ErrorResponse:
      type: object
      properties:
        error:
          type: string
          description: Error message
        requestId:
          type: string
          description: Request correlation ID
        details:
          nullable: true
          description: Additional error details
        code:
          type: string
          description: Error code
      required:
        - error
    Pagination:
      type: object
      properties:
        page:
          type: integer
          minimum: 1
          description: Current page number
        limit:
          type: integer
          minimum: 1
          maximum: 100
          description: Items per page
        totalCount:
          type: integer
          description: Total number of items
        totalPages:
          type: integer
          description: Total number of pages
        hasNextPage:
          type: boolean
          description: Whether there is a next page
        hasPrevPage:
          type: boolean
          description: Whether there is a previous page
      required:
        - page
        - limit
        - totalCount
        - totalPages
        - hasNextPage
        - hasPrevPage
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Use your API key as a Bearer token. API keys can be generated in
        Settings → Integrations → API Access.

````

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