Get All Memberships

get/v1/memberships

Returns memberships, optionally filtered by workspace, person, firebase id, or status. Read-only; no side effects. Used to render a workspace's member roster and pending invites. ## Filtering & sorting Filter via `POST /v1/records/query` (root `memberships`) or the `filters` model; operators are gated by each field's data type. See [Filtering & sorting](../filtering-and-sorting). **Filterable fields** | Field | Type | Allowed operators | |---|---|---| | `created_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `deleted_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | | `firebase_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `invite_token` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `is_default` | boolean | `eq` | | `membership_id` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `membership_role` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `pk` | number | `eq` `neq` `gt` `gte` `lt` `lte` `is_null` `is_not_null` | | `status` | text | `contains` `eq` `neq` `starts_with` `ends_with` `is_null` `is_not_null` | | `updated_at` | date | `eq` `lt` `gt` `is_null` `is_not_null` | **Sortable fields:** `created_at`, `deleted_at`, `firebase_id`, `invite_token`, `membership_id`, `membership_role`, `pk`, `status`, `updated_at` (via `orderBy` / `sort`, `asc`|`desc`).

Requires a bearer token: Authorization: Bearer <token>.

Query parameters

NameTypeRequiredDescription
filter[workspace]string <uuid>NoRestrict to one workspace.e.g. 8f6b2c10-4a1e-4d2b-9c3a-1f0e7a5b6c21
filter[person]string <uuid>NoRestrict to one person.e.g. d5e6f7a8-9b0c-41d2-83e4-f5a6b7c8d9e0
filter[firebase_id]stringNoRestrict to one firebase auth uid.e.g. uid_dani_park_92a
filter[status]stringNoRestrict to pending or active memberships.e.g. active
page[number]stringNo1-based page number.e.g. 1
page[size]stringNoPage size, 1 to 100.e.g. 25

Request

cURL
curl -X GET https://api.wellapp.ai/v1/memberships \
  -H "Authorization: Bearer $WELL_API_TOKEN"

Responses

200Memberships with included workspaces and people.

{
  "data": [
    {
      "type": "membership",
      "id": "3d4e5f60-7182-493a-a4b5-c6d7e8f9a0b1",
      "attributes": {
        "membership_role": "member",
        "status": "pending",
        "firebase_id": null,
        "invite_token": "5f3a9c2e-1b4d-4e6f-8a90-12c3d4e5f607",
        "is_default": false,
        "created_at": "2026-02-01T10:00:00.000Z",
        "updated_at": "2026-02-01T10:00:00.000Z"
      },
      "relationships": {
        "workspace": {
          "data": {
            "type": "workspace",
            "id": "8f6b2c10-4a1e-4d2b-9c3a-1f0e7a5b6c21"
          }
        },
        "person": {
          "data": {
            "type": "people",
            "id": "d5e6f7a8-9b0c-41d2-83e4-f5a6b7c8d9e0"
          }
        },
        "parent_workspace": {
          "data": null
        },
        "invited_by": {
          "data": {
            "type": "people",
            "id": "c4d5e6f7-8a9b-40c1-92d3-e4f5a6b7c8d9"
          }
        }
      }
    }
  ],
  "included": [
    {
      "type": "workspace",
      "id": "8f6b2c10-4a1e-4d2b-9c3a-1f0e7a5b6c21",
      "attributes": {
        "name": "Foldspace AI",
        "description": "Production finance workspace for the Foldspace team.",
        "avatar_image": null,
        "avatar_color": "#5B8DEF",
        "external_workspace_id": null,
        "trusted": false,
        "auto_extract_enabled": true,
        "stage": "active",
        "timezone": "America/Los_Angeles",
        "parent_workspace_id": null,
        "created_at": "2026-01-12T09:29:00.000Z",
        "updated_at": "2026-05-21T07:45:00.000Z"
      },
      "relationships": {
        "person": {
          "data": {
            "type": "people",
            "id": "00000000-0000-4000-8000-000000000001"
          }
        },
        "invited_by": {
          "data": {
            "type": "people",
            "id": "00000000-0000-4000-8000-000000000001"
          }
        }
      }
    }
  ]
}

401Unauthorized

{
  "code": "UNAUTHORIZED",
  "status": 401,
  "title": "Unauthorized",
  "message": "See title.",
  "meta": {
    "trace_id": "a1b2c3",
    "log_id": "a1b2c3"
  }
}

403Forbidden

{
  "code": "FORBIDDEN",
  "status": 403,
  "title": "Forbidden",
  "message": "See title.",
  "meta": {
    "trace_id": "a1b2c3",
    "log_id": "a1b2c3"
  }
}

This resource's related objects (the ones you can include) and how to filter or sort on each:

RelationshipCardinalityFilter on a fieldSort by a field
personto-one (people){ "person": { "full_name": { "_eq": … } } }"field": "person.full_name"
workspaceto-one (workspace){ "workspace": { "name": { "_eq": … } } }"field": "workspace.name"
invited_byto-one (people){ "invited_by": { "full_name": { "_eq": … } } }"field": "invited_by.full_name"

Replace field_name with any field of the related object. See its object-reference page for the full field list.

Filter by a to-one relation (and sort by it):

{
  "root": "memberships",
  "whereClause": { "person": { "full_name": { "_ilike": "%acme%" } } },
  "orderBy": { "field": "person.full_name", "direction": "asc" }
}