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

# List memberships

Returns the authenticated member's paginated membership records, one per
restaurant, each carrying a `check_in_count` and the member's
`membership_tier` at that restaurant. The subject is resolved from the
access token, so there is no member ID in the path. This is the
canonical source for the member's per-restaurant check-in totals: filter
by `restaurant` and sum `check_in_count` across the result.

<Warning>
  **Chef's warning** - The filter key is `restaurant` (a UUID), **not**
  `restaurant_id`. Passing `restaurant_id` is silently ignored and
  returns the full unfiltered list. The field on each record is
  `restaurant_id`; the filter param is `restaurant`. Mind the asymmetry.
</Warning>

<Note>
  **Tasting note** - There is no `GET /users/me/memberships/{id}`; the
  filtered list is the only accessor. Server-side sorting isn't applied:
  `sort` and friends are accepted but ignored, so sort `check_in_count`
  client-side for leaderboards.
</Note>

Auth: OAuth access token carrying `read:memberships`. A token missing
that scope returns `403` with `error="insufficient_scope"` in the
`WWW-Authenticate` header.

## Example

```bash theme={null}
curl "https://api.staging.blackbird.xyz/flynet/v1/users/me/memberships?restaurant=2cb56d03-4417-4b60-afe3-be819ecde8ac&page=0&page_size=50" \
  -H "Authorization: Bearer $ACCESS_TOKEN"
```

## Response

```json theme={null}
{
  "memberships": [
    {
      "id": "011ac10e-7f27-4355-847a-c51e2e7e5625",
      "object": "membership",
      "restaurant_id": "2cb56d03-4417-4b60-afe3-be819ecde8ac",
      "check_in_count": 1,
      "last_check_in_date": "2026-05-26T16:30:45.825827Z",
      "membership_tier": {
        "id": "8a71471b-c07c-4e05-9888-7ecd8e1bc609",
        "object": "membership_tier",
        "name": "Member",
        "artist": "Andrew Braswell",
        "asset": {
          "preview_1x": "https://images.blackbird.xyz/.../343_490.png",
          "web_2x": "https://images.blackbird.xyz/.../343_490.png",
          "full_3x": "https://images.blackbird.xyz/.../343_490.png"
        }
      }
    }
  ],
  "pagination": {
    "total_count": 875,
    "total_pages": 18,
    "current_page": 0,
    "next_page": 1,
    "page_size": 50
  }
}
```

## Schema

| Field                              | Type               | Notes                                                                                                               |
| ---------------------------------- | ------------------ | ------------------------------------------------------------------------------------------------------------------- |
| `memberships`                      | array              | One record per `(member, restaurant)` pair. Does not embed the member.                                              |
| `memberships[].restaurant_id`      | UUID               | The restaurant this membership belongs to.                                                                          |
| `memberships[].check_in_count`     | integer            | This member's check-ins at this restaurant. Sum across the filtered list for the per-restaurant total.              |
| `memberships[].last_check_in_date` | ISO 8601 timestamp | Most recent check-in, or `null`.                                                                                    |
| `memberships[].membership_tier`    | object             | `{ id, object, name, artist, asset }`. `name` is an open string (e.g. `Member`, `VIP`, `Friend`), not a fixed enum. |
| `pagination`                       | object             | Standard pagination wrapper. `page_size` is uncapped.                                                               |

## Query parameters

| Param        | Type    | Notes                                                    |
| ------------ | ------- | -------------------------------------------------------- |
| `restaurant` | UUID    | Filter to one restaurant. Use this, not `restaurant_id`. |
| `page`       | integer | Zero-indexed.                                            |
| `page_size`  | integer | Default `50`. Uncapped.                                  |

## See also

* [Get my status](/api-reference/users/get-status): the member's tier and level.
