1 operation. Every schema and example on this page is generated from the platform contract.
Front-desk staff check a member in by hand (walk-ins, dead phones, day passes): records a visit (gym_checkins, token_type=manual), recomputes member status (active/trialing/past_due vs frozen/cancelled/none) and month-to-date visits, and broadcasts the check-in on the store Realtime channel. No dedup by design, a repeat tap is a repeat visit.
Store checking the member in (also authorises the merchant).
Customer being manually checked in.
Whether the check-in was allowed (active membership) or denied.
The recorded gym_checkins row id (null if the insert failed open).
The member display name (falls back to "Member").
The membership plan name, when known.
Approved visits this calendar month including this one (null on a denied check-in).
Why the check-in was denied (no_membership / frozen / cancelled); null when approved.
The member profile photo URL, when set.
curl -X POST "https://www.membber.com/api/v1/gym/manual-checkin" \
-H "Authorization: Bearer $MEMBBER_TOKEN" \
-H "Idempotency-Key: 1f0e2d3c-4b5a-4678-9abc-def012345678" \
-H "Content-Type: application/json" \
-d '{
"store_id": "6659c139-0000-4000-8000-d0c500000066",
"customer_id": "96607d1c-0000-4000-8000-d0c500000096"
}'import { createMembberClient } from "@membber/sdk-ts";
const membber = createMembberClient({
getAccessToken: () => process.env.MEMBBER_TOKEN,
});
const { data, error } = await membber.raw.POST("/api/v1/gym/manual-checkin", {
body: {
store_id: "6659c139-0000-4000-8000-d0c500000066",
customer_id: "96607d1c-0000-4000-8000-d0c500000096"
},
headers: { "Idempotency-Key": crypto.randomUUID() },
});
if (error) {
// Typed error envelope: { error: { code, message, requestId } }
throw new Error(`${error.error.code}: ${error.error.message}`);
}
console.log(data);import MembberSwift
let client = MembberClient(
serverURL: MembberClient.productionServerURL,
tokenProvider: { session.accessToken }
)
let response = try await client.api.manualGymCheckin(
body: .json(.init(
storeId: "6659c139-0000-4000-8000-d0c500000066",
customerId: "96607d1c-0000-4000-8000-d0c500000096"
))
).ok.body.json
print(response){
"approved": true,
"checkin_id": "e1a5166d-0000-4000-8000-d0c5000000e1",
"member_name": "<member_name>",
"plan_name": "<plan_name>",
"visits_this_month": 1,
"denial_reason": "Added at the front desk",
"member_photo_url": "https://example.com/image.jpg"
}