---
title: "Get new-membership signup details"
method: GET
path: "/customers/new-membership"
tags: ["Memberships"]
---

# Get new-membership signup details

`GET /customers/new-membership`

Returns the data needed to render the public, unauthenticated
"join a membership" form for a given site: the membership types
on offer, the public rates under each type, and (if a
`MembershipSignupToken` is supplied via `token`) the pre-filled
customer details and / or the single membership type or rate the
token has been narrowed to.

Rates include their joining fee, recurring price and a calculated
pro-rata amount for an immediate signup based on the current
date — this is what a self-signup checkout page should display
side-by-side with the recurring price.

Membership types are filtered to those visible on the supplied
site's brand and that have at least one public rate (unless a
`token` overrides the visibility). Membership types without
public rates are silently omitted; if a `token` is supplied and
constrains the type or rate, only that subset is returned.

This endpoint is public — no authentication is required, since
it powers the storefront's "Become a member" page.

## Query parameters

- `site_id` string, required
- `token` string, uuid

## Response `200`

The signup form details were successfully retrieved.

- object
  - `customer_details` object — Pre-filled customer details derived from a supplied `MembershipSignupToken`. Only present when `token` was supplied on the request — otherwise the property is omitted.
    - `first_name` string, nullable — The customer's pre-filled first name, if known.
    - `last_name` string, nullable — The customer's pre-filled last name, if known.
    - `email` string, email, nullable — The customer's pre-filled email, if known.
    - `phone` string, nullable — The customer's pre-filled phone, if known.
  - `types` NewMembershipType[], required — The membership types available for signup at the given site, in display order. When a `token` is supplied, this list is narrowed to the type / rate the token is scoped to.
    - `id` string, uuid, required — The ID of the membership type.
    - `name` string, required — The display name of the membership type.
    - `rates` NewMembershipRate[], required — The publicly bookable rates for this type. If a `MembershipSignupToken` was supplied that pins a single rate, this array contains only that rate.
      - `id` string, uuid, required — The ID of the membership rate.
      - `name` string, required — The display name of the rate.
      - `currency` string, required — The ISO-4217 currency code (uppercase) that all monetary fields on this rate are denominated in.
      - `price` integer, required — The recurring price charged every billing period, expressed as an integer of the smallest currency unit (e.g. pence).
      - `joining_fee` integer, required — A one-off joining fee taken at signup, expressed as an integer of the smallest currency unit. Zero if no joining fee applies.
      - `billing_frequency` string, required — The cadence at which the recurring fee is charged, expressed as an ISO-8601 duration (for example `P1M` for monthly, `P1Y` for annually).
      - `notice_period` 'P7D' | 'P14D' | 'P1M' | 'P3M' | 'P6M' | 'P1Y' | 'null', nullable, required — How much notice a customer must give to cancel a membership on this rate, expressed as an ISO-8601 duration. Null when no notice is required.
      - `pro_rata` integer, required — The pro-rata charge owed for the partial billing period between today and the next billing-cycle boundary, expressed as an integer of the smallest currency unit. Zero when the signup happens to align with the start of a billing cycle.

## Other responses

- `404` — The resource couldn't be found

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
