Members API Documentation

Overview

This collection is the members report: it returns one row for each member — that is, each person covered by a membership. It includes membership owners and, for group memberships, every covered member. A person who holds more than one membership appears once per membership, so de-duplicate on customer_id if you need a unique list of people.

This collection complements two related ones:

  • Customer Memberships — one row per membership (subscription), owner-centric. Each member row here links to its customer membership via membership_id.
  • Membership Types — the membership plans/types. Each member row here links to its membership type via membership_type_id.

This collection is read-only and supports only the list operation; there is no per-member detail URL. Rows are ordered by member last name, then first name.

Response shape: unlike most collections, this endpoint returns a plain JSON array — it is not paginated and has no count / next / results envelope. A single request returns every matching member. See Pulling All Members.

Members included: by default only members of active, frozen, and payment-failed memberships are returned. Members of cancelled/ended, denied, and not-yet-started (awaiting initial payment) memberships are not retrievable through this collection. See Statuses.

Fields

All fields are read-only. They are grouped below by purpose for readability; all groups appear together in each row.

Member

The person this row is about (the covered member, who may or may not be the owner).

NameTypeDescription
customer_idintegerThe identifier of the member's customer record.
customer_urlstring (URL)The API URL of the member's customer record.
first_namestringThe member's first name.
last_namestringThe member's last name.
birthdaystring (ISO-8601 date)The member's birthday.
emailstringThe member's email address.
telephonestringThe member's telephone number.
address_postcodestringThe postcode or zip code of the member's address.
address_street_1stringThe member's street address line 1.
address_street_2stringThe member's street address line 2.
address_citystringThe city of the member's address.
address_statestringThe state or province of the member's address.
address_countrystringThe two-letter country code of the member's address.
home_location_idinteger or nullThe identifier of the member's home location.
home_location_namestring or nullThe name of the member's home location.
add_onslist of JSON objectsThe add-ons applied to this member for this membership. See the add-on object.

Membership

NameTypeDescription
membership_idintegerThe identifier of the customer membership (subscription) this member belongs to. Note: the membership_id query parameter means something different — see Filters.
membership_urlstring (URL)The API URL of the customer membership.
membership_type_idintegerThe identifier of the membership type (plan).
membership_type_urlstring (URL)The API URL of the membership type.
membership_namestringThe name of the membership type.
membership_purchase_typestringThe membership type's purchase type: REC (Recurring), PRE (Prepaid), or BEN (Benefit).
membership_intervalstringThe billing interval for recurring memberships (e.g. MON), or empty otherwise. See billing intervals.
membership_is_groupbooleanWhether the membership type is a group membership.
membership_is_youth_programmingbooleanWhether the membership type is a youth programming membership.
membership_duration_yearsinteger or nullThe membership type's duration in years, if applicable.
membership_duration_monthsinteger or nullThe membership type's duration in months, if applicable.
membership_duration_daysinteger or nullThe membership type's duration in days, if applicable.
location_idinteger or nullThe identifier of the membership's location.
location_urlstring (URL) or nullThe API URL of the membership's location.
location_namestring or nullThe name of the membership's location.

Owner

The customer who owns the membership. For a solo membership this is the same person as the member; for a group membership it is the account that holds the membership.

NameTypeDescription
owner_idintegerThe identifier of the owning customer.
owner_urlstring (URL)The API URL of the owning customer.
owner_first_namestringThe owner's first name.
owner_last_namestringThe owner's last name.
owner_birthdaystring (ISO-8601 date)The owner's birthday.
owner_emailstringThe owner's email address.
owner_telephonestringThe owner's telephone number.

Status & Dates

NameTypeDescription
statusstringThe member's effective status. One of the statuses. If the membership is active but this individual member is frozen, the status is FRZ.
is_pending_staff_approvalbooleanWhether the membership is awaiting staff approval.
start_datestring (ISO-8601 date)The membership's start date, in the local time of your organization.
end_datestring (ISO-8601 date)The membership's end date (or next bill date for recurring memberships), in organization-local time.
has_payment_methodbooleanWhether a saved payment method is on file for the membership.

Billing Fields (Optional)

These fields are included only when the request is made with include_billing_info=true.

NameTypeDescription
membership_num_membersintegerThe number of members on the membership.
billing_amountstring (decimal)The next bill total for recurring memberships; 0 for non-recurring memberships.
billing_amount_per_memberstring (decimal)The next bill total divided by the number of members.
last_invoice_idinteger or nullThe identifier of the most recent invoice for the membership.
last_invoice_amountstring (decimal) or nullThe amount of the most recent invoice.
last_invoice_tax_amountstring (decimal) or nullThe tax amount of the most recent invoice.
last_invoice_datestring (ISO-8601 date) or nullThe date of the most recent invoice, in organization-local time.

Add-on Object

Each entry in a member's add_ons list is a JSON object with the following fields:

NameTypeDescription
idstringThe identifier of the add-on.
namestringThe add-on's name.
feestring (decimal)The add-on's fee.
is_visiblebooleanWhether the add-on is visible to customers.
icon_color_hexstringThe hex color of the add-on's icon.
icon_initialsstringThe initials shown on the add-on's icon.
revenue_account_codesJSON objectA mapping of location ID to the revenue account code for the add-on.
tax_rate_idinteger or nullThe identifier of the add-on's tax rate, if any.
tax_rate_per_locationJSON object or nullA mapping of location ID to tax rate, where the add-on is taxed per location.

Statuses

The status field takes one of the following values. They are grouped by the status_in token used to request them (see Filters). For the full meaning of each code, see the Customer Memberships statuses.

status_in tokenStatus codes returned
activeACT (Active), IPP (Initial Payment Processing), PPR (Renewal Payment Processing)
frozenFRZ (Frozen), FPR (Freeze Payment Processing), plus individually-frozen members
failedPAF (Renewal Payment Failed), FPF (Freeze Payment Failed)

Filters

See the filtering documentation for more information on how to use filters in the Capitan API.

NameSyntaxDescription
Status status_in A comma-separated list of the tokens active, frozen, and failed, selecting which membership statuses to return (see Statuses). If omitted, all three are returned. Tokens for cancelled, ended, denied, and not-yet-started memberships are not available.
Membership Type membership_id Filters for members enrolled in the given membership type ID. Note: despite its name, this parameter takes a membership type ID (the value of membership_type_id in each row), not the membership_id field. An unknown ID returns HTTP 400.
Purchase Type purchase_type Filters for members whose membership type has the given purchase type (REC, PRE, or BEN).
Is Group is_group Filters for members whose membership type is (true) or is not (false) a group membership.
Is Youth Programming is_youth_programming Filters for members whose membership type is (true) or is not (false) a youth programming membership.
Add-on Name add_on_name Filters for members who have an add-on with exactly the given name.
Home Location home_location_id Filters for members whose own home location is the given ID. (This filters on the member's home location, not the membership's location.)
Minimum Start Date start_date_min Filters for members whose membership starts on or after the given date (in the local time of your organization).
Maximum Start Date start_date_max Filters for members whose membership starts on or before the given date (in the local time of your organization). The given date is inclusive of its whole local day.
Has Payment Method has_payment_method If true, filters for members whose membership has a saved payment method; any other value filters for those without one.
Include Billing Info include_billing_info If true, adds the billing fields to each row. Defaults to false.

Operations

List

Returns a plain JSON array (no pagination envelope).

Request
GET /api/members/

Response
200 OK
[
    {
        "customer_id": 4822,
        "customer_url": "https://api.hellocapitan.com/api/customers/4822/",
        "first_name": "Ben",
        "last_name": "Anderson",
        "birthday": "1992-11-03",
        "email": "ben@example.com",
        "telephone": "",
        "address_postcode": "BS1 5TF",
        "address_city": "Bristol",
        "home_location_id": 7,
        "home_location_name": "Bristol Central",
        "add_ons": [],
        "membership_id": 9912,
        "membership_url": "https://api.hellocapitan.com/api/customer-memberships/9912/",
        "membership_type_id": 33,
        "membership_type_url": "https://api.hellocapitan.com/api/memberships/33/",
        "membership_name": "Family Monthly",
        "membership_purchase_type": "REC",
        "membership_interval": "MON",
        "membership_is_group": true,
        "membership_is_youth_programming": false,
        "location_id": 7,
        "location_name": "Bristol Central",
        "owner_id": 4821,
        "owner_url": "https://api.hellocapitan.com/api/customers/4821/",
        "owner_first_name": "Ada",
        "owner_last_name": "Anderson",
        "owner_email": "ada@example.com",
        "status": "ACT",
        "is_pending_staff_approval": false,
        "start_date": "2025-09-01",
        "end_date": "2026-07-01",
        "has_payment_method": true
    },
    ...
]

Pulling All Members

A single unfiltered request returns every member of an active, frozen, or payment-failed membership, as a plain (unpaginated) array:

GET /api/members/

Add include_billing_info=true to include billing fields. Keep in mind:

  • The response is the complete set in one payload — there is no paging. For a large organization this can be a sizeable response.
  • Members of cancelled/ended, denied, and not-yet-started memberships cannot be retrieved here. To include those, use the Customer Memberships collection, which returns all statuses except the two never-paid initial states.
  • A person with multiple memberships appears once per membership; de-duplicate on customer_id for a unique list of people.