---
title: "List shared emails and meetings with a workspace contact (v2)"
method: GET
path: "/v2/workspaces/{workspaceId}/contacts/{contactId}/shared-activity"
tags: ["workspaces"]
---

# List shared emails and meetings with a workspace contact (v2)

`GET /v2/workspaces/{workspaceId}/contacts/{contactId}/shared-activity`

## Request

- Base URL: `https://api.prod.getdex.com`
- URL: `https://api.prod.getdex.com/v2/workspaces/{workspaceId}/contacts/{contactId}/shared-activity`
- Auth: HTTP bearer

Emails and meetings with one workspace contact from every member account shared with the workspace at a content level, read live through each sharing member's own Google or Outlook account and redacted to that account's level: `metadata` gives subject or title, sender, participants (never Bcc) and dates; `full` adds the email snippet or event description. Optional `kinds` (comma-separated subset of `emails,calendar`; both by default) and `limit` (1–100, default 50). Newest first, capped at `limit` and not exhaustive: each account is read within a bounded window (calendar about two years back). `partial: true` means at least one shared account could not be read this time. Each item names the members whose shared accounts held it (`member_user_ids`) — not every teammate who took part — and the most permissive level among them (`visibility`). `has_body` marks a full-level email whose body the Dex app can open; bodies are not available over the public API. Accounts shared at dates only, or not shared, contribute nothing; a shared account's own address, provider links and raw payloads are never returned. Returns `{ data: { shared_activity: { items, partial } } }`.

## Path parameters

- `workspaceId` string, uuid, required
- `contactId` string, uuid, required

## Query parameters

- `kinds` string
- `limit` integer

## Response `200`

Successful response

- object
  - `data` object, required
    - `shared_activity` object, required
      - `items` object[], required
        - `id` string, required
        - `type` 'EMAIL' | 'CALENDAR', required
        - `thread_id` string, nullable, required
        - `date` string, date-time, required
        - `end_date` string, date-time, nullable, required
        - `is_all_day` boolean, required
        - `member_user_ids` string[], required
        - `visibility` 'metadata' | 'full', required
        - `subject` string, required
        - `from` object, nullable, required
          - `email` string, required
          - `name` string, nullable, required
        - `participants` object[], required
          - `email` string, required
          - `name` string, nullable, required
          - `role` 'from' | 'to' | 'cc' | 'attendee' | 'organizer', nullable, required
        - `snippet` string, nullable, required
        - `description` string, nullable, required
        - `has_body` boolean, required
        - `provider` 'GOOGLE' | 'OFFICE365', required
      - `partial` boolean, required

## Other responses

- `400`: Request body failed validation.
- `401`: Missing or invalid API key.
- `403`: Valid key, insufficient permission.
- `404`: Resource does not exist.
- `409`: Request conflicts with the current state of the resource.
- `429`: Rate limit exceeded.
- `500`: Unexpected server error.

## Changes

- **2026-10-21** `0f58a167f636`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/getdex/apis/dex-public-api/changes/v2/workspaces/:workspaceId/contacts/:contactId/shared-activity/get.md)

---

[API](https://skmtc.dev/getdex/apis/dex-public-api.md) · [All operations](https://skmtc.dev/getdex/apis/dex-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getdex/apis/dex-public-api/revisions/657247ddcf7c?raw)
