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 |
|---|---|
| Membership | MEM |
| Entry Pass | ENT |
| Event Reservation | EVE |
| Guest Pass | GUE |
| Free Entry | FRE |
| Migrated Data | MIG |
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.