Tiquo
API and AuthenticationCustomer API

List Memberships

Retrieve the authenticated customer's memberships and available public plans

List Memberships

Returns the authenticated customer's membership records and the organization's active public customer plans. The response contains display-safe information only; payment-provider identifiers and internal billing metadata are not exposed.

Endpoint

GET /memberships

Authentication

Requires a valid JWT access token.

Authorization: Bearer eyJhbGciOiJSUzI1NiJ9...

Example Request

curl "https://edge.tiquo.app/api/client/v1/memberships" \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9..."

Response

{
  "success": true,
  "data": {
    "memberships": [
      {
        "id": "membership_123",
        "planId": "plan_gold",
        "name": "Gold Member",
        "description": "Priority booking and guest passes",
        "type": "paid",
        "price": 2500,
        "currency": "GBP",
        "billingPeriod": "monthly",
        "status": "active",
        "paymentStatus": "paid",
        "startDate": 1749988800000,
        "renewalDate": 1784116800000,
        "features": ["Priority booking", "Guest passes"],
        "color": "#d4af37",
        "icon": "G",
        "isCurrent": true
      }
    ],
    "availablePlans": [
      {
        "id": "plan_gold",
        "name": "Gold",
        "description": "Priority booking and guest passes",
        "slug": "gold",
        "type": "paid",
        "price": 2500,
        "currency": "GBP",
        "billingPeriod": "monthly",
        "features": ["Priority booking", "Guest passes"],
        "color": "#d4af37",
        "icon": "G",
        "isPopular": true,
        "isCurrent": true,
        "signupUrl": "https://book.tiquo.app/embed/membership/plan_gold"
      }
    ]
  }
}

Prices are integer minor units. For example, 2500 with currency GBP represents £25.00.

Membership Object

FieldTypeDescription
idstringCustomer membership ID
planIdstringMembership plan ID
namestringMembership plan name
descriptionstring or nullPublic plan description
typestringfree or paid
priceintegerMembership price in minor currency units
currencystringISO currency code
billingPeriodstringBilling interval such as monthly, yearly, or one_time
statusstringactive, inactive, expired, cancelled, or suspended
paymentStatusstringMembership payment status
startDateintegerStart timestamp in milliseconds
endDateinteger or nullEnd timestamp in milliseconds
renewalDateinteger or nullNext renewal timestamp in milliseconds
trialEndDateinteger or nullTrial end timestamp in milliseconds
featuresstring[]Public membership features
colorstring or nullDisplay color configured on the plan
iconstring or nullDisplay icon configured on the plan
isCurrentbooleanWhether the record is the current active membership

Available Plan Object

availablePlans contains active, public plans that apply to customers. Company-only and private plans are excluded.

FieldTypeDescription
idstringMembership plan ID
namestringPlan name
descriptionstring or nullPublic plan description
slugstringURL-friendly plan slug
typestringfree or paid
priceintegerDefault price in minor currency units
currencystringISO currency code
billingPeriodstringDefault billing interval
featuresstring[]Public plan features
colorstring or nullDisplay color
iconstring or nullDisplay icon
isPopularbooleanWhether the plan is marked as popular
isCurrentbooleanWhether the customer currently holds this plan
signupUrlstringMembership signup embed URL

JavaScript

const response = await fetch(
  'https://edge.tiquo.app/api/client/v1/memberships',
  {
    headers: {
      Authorization: `Bearer ${accessToken}`,
    },
  }
);

const result = await response.json();

if (result.success) {
  console.log(result.data.memberships);
  console.log(result.data.availablePlans);
}

With the Hosted Package, use window.Tiquo.getMemberships() or the data-tiquo-memberships and data-tiquo-membership-plans collection attributes instead of managing the access token directly.

Errors

StatusDescription
401Missing, invalid, or expired access token
500Internal server error

On this page