Skip to main content
GET
/
memberships
List memberships
curl --request GET \
  --url https://api.staging.blackbird.xyz/flynet/v1/memberships
Returns paginated membership records, one per (member, restaurant) pair, each carrying a check_in_count and the member’s membership_tier at that restaurant. This is the canonical source for per-restaurant check-in totals: filter by restaurant and sum check_in_count across the result.
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.
Tasting note - There is no GET /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.
Auth: OAuth access token. Accessible with a token carrying read:profile read:checkins.

Example

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

Response

{
  "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

FieldTypeNotes
membershipsarrayOne record per (member, restaurant) pair. Does not embed the member.
memberships[].restaurant_idUUIDThe restaurant this membership belongs to.
memberships[].check_in_countintegerThis member’s check-ins at this restaurant. Sum across the filtered list for the per-restaurant total.
memberships[].last_check_in_dateISO 8601 timestampMost recent check-in, or null.
memberships[].membership_tierobject{ id, object, name, artist, asset }. name is an open string (e.g. Member, VIP, Friend), not a fixed enum.
paginationobjectStandard pagination wrapper. page_size is uncapped.

Query parameters

ParamTypeNotes
restaurantUUIDFilter to one restaurant. Use this, not restaurant_id.
userUUIDFilter to one member. Combines with restaurant.
pageintegerZero-indexed.
page_sizeintegerDefault 50. Uncapped.

See also