---
title: "List Memberships"
method: GET
path: "/memberships"
tags: ["Memberships"]
---

# List Memberships

`GET /memberships`

Lists every membership the caller can read: an account API key its account's; a user credential their own plus those of every account they manage. `account_id` and `user_id` only narrow that list — values outside the caller's reach return fewer results, not an error.

## Query parameters

- `account_id` string
- `user_id` string
- `status` 'active' | 'trialing' | 'past_due' | 'completed' | 'canceled' | 'expired' | 'canceling' | 'paused'
- `product_id` string
- `plan_id` string
- `created_after` string
- `created_before` string
- `order` 'created_at'
- `direction` 'asc' | 'desc'
- `first` integer
- `after` string
- `last` integer
- `before` string

## Response `200`

memberships listed

- object
  - `data` Membership[], required
    - `account` MembershipAccount, required
      - `id` string, required — Account ID, prefixed `biz_`.
      - `logo_url` string, nullable, required — Account logo image URL.
      - `route` string, required — Account public route identifier — the `whop.com/{route}` storefront path.
      - `title` string, required — Account display name.
    - `cancel_at_period_end` boolean, required — Whether the membership is set to cancel when the current billing period ends. Only meaningful for recurring plans.
    - `created_at` string, required — When the membership was created, as an ISO 8601 timestamp.
    - `current_period_end` string, nullable, required — When the current billing period renews, or when a non-renewing membership expires, as an ISO 8601 timestamp. `null` for one-time purchases with no expiration.
    - `id` string, required — Membership ID, prefixed `mem_`.
    - `license_key` string, nullable, required — The software license key for this membership. Only present when the product includes a software licensing experience.
    - `member` MembershipMember, required
      - `access_level` 'no_access' | 'admin' | 'customer', required — What the member can reach on the account: `customer` for paying members, `admin` for team members, `no_access` once every grant has lapsed.
      - `last_accessed_at` string, nullable, required — When the member last opened the account's content, as an ISO 8601 timestamp. `null` if they never have.
      - `position` number, nullable, required — The member's sort position in the buyer's own account list. `null` until they arrange it.
    - `metadata` object, required — Custom key-value pairs stored on the membership, commonly used for software licensing.
    - `plan_id` string, required — The plan the buyer purchased, prefixed `plan_`.
    - `product_id` string, required — The product this membership grants access to, prefixed `prod_`.
    - `status` 'trialing' | 'active' | 'past_due' | 'completed' | 'canceled' | 'expired' | 'unresolved', required — Billing state of the membership. `active`/`trialing` memberships grant access; `past_due` is the grace period after a failed payment; `completed` one-time purchases keep access; `canceled`/`expired` do not.
    - `user_id` string, nullable, required — The buyer, prefixed `user_`. `null` when the buyer is another business or the membership is unclaimed.
  - `page_info` object, required
    - `end_cursor` string, nullable, required
    - `has_next_page` boolean, required
    - `has_previous_page` boolean, required
    - `start_cursor` string, nullable, required

## Other responses

- `400` — Invalid Parameters
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Resource not found

---

[API](https://skmtc.net/whop/apis/whop-api.md) · [All operations](https://skmtc.net/whop/apis/whop-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/whop/whop-api/versions/db0883548bc5/schema)
