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

# List Activities (Global Feed)

> Global activity feed for the active org with filters.

Returns activities of any type (meeting, message, email, call, note, etc.)
sorted by `effective_time` desc — a generated column = COALESCE(due_at, created_at).
This gives a single linear time axis regardless of activity type, so manual
notes don't get pushed to the bottom just because they lack a due_at.

<Note>New to activities? See the [Activities guide](/concepts/activities) for what an activity is and how it attaches to other records. This page (and every other page in this section) is the field-level technical reference.</Note>

Returns activities of any type across the active org, sorted by `effective_time` descending. `effective_time` is a generated column — `COALESCE(due_at, created_at)` computed by Postgres, so it can never be sent on a write — and sorting by it means manual notes (no `due_at`) don't get pushed to the bottom of a timeline that's otherwise ordered by scheduled time.

Returns a bare JSON array — no total-count header, no pagination envelope. `limit` is capped at `500` server-side. Note that the `from`/`to` filters constrain `due_at`, **not** `effective_time`.

<Note>Passing a linked-filter together with its matching id-filter matches nothing: `unlinked_account=true` together with an explicit `account_id`, or `unlinked_deal=true` with `deal_id`, sends the same PostgREST query key twice (`eq.<id>` and `is.null`), which is a self-contradicting `AND` — you get an empty result, not an error.</Note>

### Auth

Requires a CRM read [scope](/authentication#scopes) and an active organization on the token. Any of `contacts:read`, `deals:read`, `companies:read`, or `activities:read` qualifies, as does any `*:manage` scope — manage implies read.

### Response

Same row shape as [List Meetings](/api-reference/activities/list-meetings), except `type` varies per row instead of always being `"meeting"`:

| Field              | Type                           | Description                                                                                                                                                                      |
| ------------------ | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `id`               | `string` (uuid)                | Primary key.                                                                                                                                                                     |
| `type`             | `string`                       | `note`, `call`, `meeting`, `email`, `task`, or a system-generated type.                                                                                                          |
| `subject`          | `string \| null`               | Short headline.                                                                                                                                                                  |
| `body`             | `string \| null`               | Free-text content.                                                                                                                                                               |
| `due_at`           | `string \| null` (timestamptz) | Scheduled time.                                                                                                                                                                  |
| `completed_at`     | `string \| null` (timestamptz) | When the activity was marked done, if applicable.                                                                                                                                |
| `duration_minutes` | `integer \| null`              | Meeting length; usually `null` for non-meeting types.                                                                                                                            |
| `metadata`         | `object \| null` (jsonb)       | Free-form; only meaningfully populated for meetings. See the [List Meetings](/api-reference/activities/list-meetings) response for what manual vs. synced sources write into it. |
| `account_id`       | `string \| null` (uuid)        | Linked account.                                                                                                                                                                  |
| `deal_id`          | `string \| null` (uuid)        | Linked deal.                                                                                                                                                                     |
| `contact_id`       | `string \| null` (uuid)        | Linked contact.                                                                                                                                                                  |
| `owner_id`         | `string \| null`               | Logto user sub of the owning rep.                                                                                                                                                |
| `source`           | `string`                       | `manual`, `import`, or a sync source (`calendar`, `gmail`, `outlook`, `slack`, `teams`).                                                                                         |
| `direction`        | `string \| null`               | `inbound` \| `outbound`, where applicable (e.g. calls, emails).                                                                                                                  |
| `created_at`       | `string` (timestamptz)         | Row creation time.                                                                                                                                                               |
| `accounts`         | `object \| null`               | Embedded: `{ id, name, domain }`. `null` if `account_id` is unset.                                                                                                               |
| `deals`            | `object \| null`               | Embedded: `{ id, name, stage_id }`. `null` if `deal_id` is unset.                                                                                                                |
| `contacts`         | `object \| null`               | Embedded: `{ id, first_name, last_name, email }`. `null` if `contact_id` is unset.                                                                                               |


## OpenAPI

````yaml GET /activities
openapi: 3.1.0
info:
  title: anycrm-api
  version: 0.0.1
servers: []
security: []
tags:
  - name: Customer Intelligence
    description: >-
      Company research and ICP-fit scoring — create a research run, track its
      progress, and read back scored companies as leads.
  - name: Outreach
    description: >-
      The cold-email management console — domains, mailboxes, and campaigns — as
      a thin control plane over the SalesForge stack.
  - name: AnyCard
    description: >-
      Authenticated CRUD for AnyCard, the org's digital business-card /
      lead-capture product.
  - name: AnyCard Events
    description: >-
      Event-attribution analytics for AnyCard — which captured leads converted,
      broken down by source, owner, and deal.
  - name: AnyCard Share Links
    description: >-
      Unauthenticated endpoints reached by anyone who scans a QR code or opens a
      shared AnyCard link.
  - name: AI
    description: >-
      A streaming (SSE) AI chat endpoint with account-commit actions it can take
      on the caller's behalf.
  - name: Analytics Assistant
    description: >-
      The natural-language analytics assistant — a guarded text-to-SQL loop
      (SSE) that answers ad-hoc questions over the org's CRM data as a
      least-privilege, read-only database role.
  - name: Account Readiness
    description: >-
      Account Readiness Profiles — AI-scored signals on whether an account is
      ready for outreach or expansion, computed via a Temporal workflow.
  - name: Integrations
    description: >-
      Pipedream Connect — issuing connect tokens and managing the org's
      connected third-party accounts.
  - name: Feedback
    description: >-
      User-submitted platform feedback (bug reports, feature requests) — global,
      not scoped to one organization.
  - name: Public Media
    description: >-
      Unauthenticated image reads for publicly-embeddable assets (card photos,
      inline email images) — allowlisted by key shape; everything else in the
      storage bucket stays private.
  - name: Service Health
    description: Service liveness.
paths:
  /activities:
    get:
      tags:
        - Activities
      summary: List Activities
      description: >-
        Global activity feed for the active org with filters.


        Returns activities of any type (meeting, message, email, call, note,
        etc.)

        sorted by `effective_time` desc — a generated column = COALESCE(due_at,
        created_at).

        This gives a single linear time axis regardless of activity type, so
        manual

        notes don't get pushed to the bottom just because they lack a due_at.
      operationId: list_activities_activities_get
      parameters:
        - name: type
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter to activities of this type (e.g. note, call, meeting,
              email, task).
            title: Type
          description: >-
            Filter to activities of this type (e.g. note, call, meeting, email,
            task).
        - name: source
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Filter to activities from this source (manual, import, or a sync
              source such as calendar, gmail, outlook, slack, teams).
            title: Source
          description: >-
            Filter to activities from this source (manual, import, or a sync
            source such as calendar, gmail, outlook, slack, teams).
        - name: search
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Case-insensitive substring match against subject.
            title: Search
          description: Case-insensitive substring match against subject.
        - name: contact_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to activities linked to this contact.
            title: Contact Id
          description: Filter to activities linked to this contact.
        - name: deal_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to activities linked to this deal.
            title: Deal Id
          description: Filter to activities linked to this deal.
        - name: account_id
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: Filter to activities linked to this account.
            title: Account Id
          description: Filter to activities linked to this account.
        - name: unlinked_account
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              If true, only return activities with no account_id. Combining with
              an explicit account_id filter yields an empty result.
            default: false
            title: Unlinked Account
          description: >-
            If true, only return activities with no account_id. Combining with
            an explicit account_id filter yields an empty result.
        - name: unlinked_deal
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              If true, only return activities with no deal_id. Combining with an
              explicit deal_id filter yields an empty result.
            default: false
            title: Unlinked Deal
          description: >-
            If true, only return activities with no deal_id. Combining with an
            explicit deal_id filter yields an empty result.
        - name: exclude_future
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              If true, hide activities whose effective_time is later than the
              current UTC instant. Note this cuts at 'now', not at end of day —
              an activity due later today is excluded.
            default: false
            title: Exclude Future
          description: >-
            If true, hide activities whose effective_time is later than the
            current UTC instant. Note this cuts at 'now', not at end of day — an
            activity due later today is excluded.
        - name: from
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Only return activities with due_at on or after this ISO 8601
              timestamp — filters due_at, not the effective_time the feed is
              sorted by.
            title: From
          description: >-
            Only return activities with due_at on or after this ISO 8601
            timestamp — filters due_at, not the effective_time the feed is
            sorted by.
        - name: to
          in: query
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            description: >-
              Only return activities with due_at on or before this ISO 8601
              timestamp — filters due_at, not the effective_time the feed is
              sorted by.
            title: To
          description: >-
            Only return activities with due_at on or before this ISO 8601
            timestamp — filters due_at, not the effective_time the feed is
            sorted by.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            description: Maximum rows to return; capped at 500 server-side.
            default: 100
            title: Limit
          description: Maximum rows to return; capped at 500 server-side.
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            description: Number of rows to skip, for pagination.
            default: 0
            title: Offset
          description: Number of rows to skip, for pagination.
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  additionalProperties: true
                  type: object
                title: Response List Activities Activities Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer: []
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````