Skip to main content
POST
Create a membership

Authorizations

Authorization
string
header
required

Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.

Headers

Idempotency-Key
string

Retry-safe key; a repeat of the same request replays the first response

Maximum string length: 255

Body

application/json
contactId
integer
required

Customer to give the membership to (from GET /v1/platform/contacts)

planId
integer
required

Plan to put them on

payment
object
required
startDate
string<date-time>

Defaults to now

autoRenew
boolean

Defaults to the plan's setting

overrides
object

The membership's own snapshot of the plan. Omit any field to take the plan's value; the admin Add membership dialog works the same way, so a negotiated sale is a normal case. Look the plan up first with GET /v1/platform/plans to see what you are overriding.

Response

Membership created

A customer's membership on a plan. The plan is snapshotted onto it at creation, so allowance and coverage behave exactly as they do for a membership sold in 1club.

membershipId
integer
membershipUuid
string<uuid>

Stable unguessable identifier. Prefer this over membershipId when storing a reference.

contactId
integer

Customer the membership belongs to

planId
integer
planName
string | null
clubId
integer | null

Club the membership is limited to; null when it applies organization-wide.

status
string

active, paused, cancelled, expired, used, pending, or pending_payment

startDate
string<date-time>
endDate
string<date-time> | null
renewalDate
string<date-time> | null
autoRenew
boolean
price
number | null
billingFrequency
string
maxUses
number | null

Session allowance snapshotted from the plan; null when unlimited.

usesRemaining
number | null
createdAt
string<date-time>