Check-Ins API Documentation

Overview

This collection contains the check-in records for your organization — one record each time a customer entered a location. Each record captures who checked in, when, at which location, and the method by which entry was granted (membership, entry pass, event reservation, guest pass, or free entry).

This is the collection for reading check-in history. It is distinct from the endpoints used to create a check-in at the door, which are documented separately under Barcode Check-In and Open Door Check-In.

This collection is read-only: only the list and read operations are supported. Results are ordered by check-in time, newest first.

Access: this collection requires a user with the "manage members" permission. See the authentication documentation.

Check-ins for a single customer are also available as a sub-collection of that customer, at /api/customers/{customer_id}/check-ins/.

Fields

All fields are read-only.

Name Type Description
id integer The unique identifier of the check-in. This is placed in the URL when making API calls for the check-in.
url string (URL) The unique API URL of the check-in.
customer_id integer The identifier of the customer who checked in.
customer_url string (URL) The API URL of the customer who checked in.
customer_first_name string The first name of the customer who checked in.
customer_last_name string The last name of the customer who checked in.
customer_birthday string (ISO-8601 date) or null The birthday of the customer who checked in.
customer_email string or null The email address of the customer who checked in.
check_in_datetime string (ISO-8601 datetime, no offset) The time of the check-in, expressed in the location's local time zone (without a UTC offset). This is the same instant as created_at, presented as local wall-clock time.
check_out_datetime string (ISO-8601 datetime, no offset) or null The time the customer checked out, expressed in the location's local time zone, or null if they have not checked out.
visit_duration_minutes integer The length of the visit in minutes. If the customer has not checked out, this is measured up to the present moment and will continue to grow.
entry_method string The method by which entry was granted. One of the entry methods.
entry_method_description string A human-readable description of the entry method, such as the membership name, "Entry Pass (3 remaining)", or "Guest Pass from Jane Doe".
location_id integer The identifier of the location where the check-in occurred.
location_url string (URL) The API URL of the location where the check-in occurred.
location_name string The name of the location where the check-in occurred.
free_entry_reason string The reason recorded for a free entry. Empty unless the entry method is free entry.
free_entry_granting_user_id integer or null The identifier of the staff member who granted the free entry, if applicable.
free_entry_granting_user_first_name string or null The first name of the staff member who granted the free entry.
free_entry_granting_user_last_name string or null The last name of the staff member who granted the free entry.
converted_from_free_entry boolean Whether a free entry was subsequently converted to a paid entry.
milestone_list list of strings Any milestones reached at this check-in (e.g. "100th visit"). Empty if none.
check_in_count integer or null The customer's cumulative check-in count as of this check-in, including this one (so 1 indicates their first ever check-in).
created_at string (ISO-8601 datetime) When the check-in was created, as a UTC timestamp. This is the check-in time, and the field that the date filters operate on and results are ordered by.
updated_at string (ISO-8601 datetime) When the check-in's record in the Capitan database was last updated, as a UTC timestamp.

Entry Methods

Name Syntax
MembershipMEM
Entry PassENT
Event ReservationEVE
Guest PassGUE
Free EntryFRE
Migrated DataMIG

Filters

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

Name Syntax Description
Minimum Check-In Date check_in_date_min Filters for check-ins on or after the given date (in the local time of your organization). Accepts an ISO-8601 date (YYYY-MM-DD); the boundary is the start of that day in your organization's time zone.
Maximum Check-In Date check_in_date_max Filters for check-ins on or before the given date (in the local time of your organization). The given date is inclusive of its whole local day.
This Calendar Day this_calendar_day If true, filters for check-ins occurring since the start of the current day in your organization's time zone.
Has Checked Out has_checked_out If true, filters for check-ins that have a recorded check-out time. (These results are ordered by check-out time, newest first.)
Customer customer_id Filters for check-ins by the given customer ID.
Location location_id Filters for check-ins at the given location ID.
Entry Method entry_method Filters for check-ins with the given entry method code.

Operations

List

Request
GET /api/check-ins/

Response
200 OK
{
    "count": 137,
    "next": "https://api.hellocapitan.com/api/check-ins/?page=2",
    "previous": null,
    "results": [
        {
            "id": 884213,
            "url": "https://api.hellocapitan.com/api/check-ins/884213/",
            "customer_id": 50231,
            "customer_url": "https://api.hellocapitan.com/api/customers/50231/",
            "customer_first_name": "Jane",
            "customer_last_name": "Doe",
            "customer_email": "jane.doe@example.com",
            "check_in_datetime": "2026-06-15T18:42:03",
            "check_out_datetime": "2026-06-15T20:15:00",
            "visit_duration_minutes": 93,
            "entry_method": "MEM",
            "entry_method_description": "Adult Monthly Membership",
            "location_id": 17,
            "location_name": "Downtown",
            "milestone_list": ["100th visit"],
            "check_in_count": 100,
            "created_at": "2026-06-15T18:42:03.123456Z",
            "updated_at": "2026-06-15T20:15:00.654321Z",
            ...
        },
        ...
    ]
}

Read

Request
GET /api/check-ins/884213/

Response
200 OK
{
    "id": 884213,
    "url": "https://api.hellocapitan.com/api/check-ins/884213/",
    "customer_id": 50231,
    ...
}

Pulling Recent Check-Ins

The check_in_date_min and check_in_date_max filters operate at whole-day granularity, with day boundaries taken in your organization's local time zone. To retrieve a single day's check-ins, set both to the same date:

GET /api/check-ins/?check_in_date_min=2026-06-15&check_in_date_max=2026-06-15&page_size=100

Each result also includes a precise UTC created_at timestamp, which can be used to narrow to an exact window on the client side. When polling daily, pulling a slightly overlapping window (for example, the previous two days) and de-duplicating on the check-in id avoids missing records near the day boundary. Page through results using the next link until it is null; see the pagination documentation.