---
title: "List workspace/channel membership deltas"
method: GET
path: "/memberships"
tags: ["Memberships"]
---

# List workspace/channel membership deltas

`GET /memberships`

## Request

- Base URL: `https://api.carbonvoice.app`
- URL: `https://api.carbonvoice.app/memberships`
- Auth: one of:
  - API key in header `pxtoken`
  - OAuth 2 (implicit, authorization URL `https://api.carbonvoice.app/oauth/authorize`)

Returns membership rows for the given workspace and/or channel, optionally restricted to a user and/or to rows updated after updated_since. Only rows in workspaces/channels the caller has access to are returned. Rows are sorted (last_updated_at, id) ascending; if a list contains exactly `limit` rows, page by passing the last row’s last_updated_at as updated_since and its id as membership_id.

## Query parameters

- `updated_since` string, date-time
- `membership_id` string
- `limit` number
- `workspace_id` string
- `channel_id` string
- `user_id` string
- `type` 'workspace' | 'channel' | 'both'

## Response `200`

- ListMembershipsResponse
  - `total_results` number, required: Number of rows returned across both lists (not the total number of matching rows). limit applies to each list independently, so this can be up to 2×limit.
  - `workspace_results` number, required: Number of rows returned in workspace_memberships.
  - `channel_results` number, required: Number of rows returned in channel_memberships.
  - `pagination` ListMembershipsPagination, required
    - `limit` number, required
    - `direction` 'older' | 'newer', nullable
    - `date` string, date-time, nullable
  - `workspace_memberships` WorkspaceMembershipModel[], required
    - `id` string, required: Membership row id; pass as the membership_id paging cursor together with updated_since.
    - `user_id` string, required
    - `workspace_id` string, required
    - `role` 'admin' | 'owner' | 'creator' | 'member' | 'guest', required
    - `status` 'active' | 'user_left' | 'removed_from_channel' | 'removed_from_workspace', required
    - `last_updated_at` string, date-time, required
    - `status_changed_at` string, date-time, nullable
  - `channel_memberships` ChannelMembershipModel[], required
    - `id` string, required: Membership row id; pass as the membership_id paging cursor together with updated_since.
    - `user_id` string, required
    - `workspace_id` string, required
    - `channel_id` string, required
    - `role` 'admin' | 'owner' | 'creator' | 'member' | 'guest', required
    - `status` 'active' | 'user_left' | 'removed_from_channel' | 'removed_from_workspace', required
    - `last_updated_at` string, date-time, required
    - `status_changed_at` string, date-time, nullable

## Other responses

- `403`

---

[API](https://skmtc.dev/carbonvoice/apis/carbon-voice-api.md) · [All operations](https://skmtc.dev/carbonvoice/apis/carbon-voice-api/llms.txt) · [OpenAPI document](https://skmtc.dev/carbonvoice/apis/carbon-voice-api/revisions/b91c5c845122?raw)
