Checkins
A checkin records that an individual has arrived or reported for something: a court date, an appointment, or a service at a counter or kiosk. A checkin moves through a status (for example waiting to complete), can be tied to an event and client, and captures details such as location, service, and notes.
This page assumes the shared API Conventions for pagination, filtering, lifecycle actions, and references. All endpoints use your region's base URL and a Bearer token.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/checkins | List checkins |
GET | /v1/checkins/total | Count checkins matching filters |
GET | /v1/checkins/{uuid} | Get a single checkin |
GET | /v1/checkins/{uuid}/pdf | Get a generated PDF of the checkin |
POST | /v1/checkins | Create a checkin |
PATCH | /v1/checkins/{uuid} | Update a checkin |
PUT | /v1/checkins/{uuid}/archive | Archive a checkin |
PUT | /v1/checkins/{uuid}/restore | Restore an archived or deleted checkin |
DELETE | /v1/checkins/{uuid} | Delete a checkin (soft delete) |
The Checkin Object
| Field | Type | Description |
|---|---|---|
uuid | string | Unique identifier, generated when the checkin is created. |
name | string | Name of the person checking in. |
client | string | UUID of the associated client. |
event | string | UUID of the associated event. |
status | string | Checkin status, such as waiting or complete. Defaults to waiting. |
phone | string | Phone number for the checkin. |
email | string | Email for the checkin. |
location | string | UUID of the location. |
service | string | Service the person is checking in for. |
department | string | Department the person is checking in for. |
virtual | integer | 1 for a virtual checkin, 0 for in person. Defaults to 0. |
language | string | Language code. Defaults to en. |
notes | string | Notes about the checkin. |
data | object | Structured data for the checkin, including fields copied from the create request and geolocation captured at checkin and checkout. |
portal | string | UUID of the portal the checkin came through. |
url | string | Unique slug for the checkin's link. |
completed_at | string | When the checkin was completed. |
created_by | string | Email or UUID of the creator. |
created_at | string | Creation timestamp, UTC. |
updated_at | string | Last update timestamp, UTC. |
archived_at | string | Set when the checkin is archived, otherwise null. |
deleted_at | string | Set when the checkin is deleted, otherwise null. |
Create a Checkin
POST /v1/checkins
Request:
curl -X POST "$BASE_URL/v1/checkins" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Doe",
"client": "{client_uuid}",
"event": "{event_uuid}",
"service": "Traffic Court",
"location": "{location_uuid}"
}'
Response (201): the created checkin.
Create Behavior
status: defaults towaiting.virtual: defaults to0(in person). Set it to1,true,yes, oryfor a virtual checkin; any other value is treated as in person.language: defaults toen.event: when a valid event UUID is provided, that event's appearance is marked aschecked-in.data: send an explicitdataobject to set it exactly. If you do not, the checkin copies every field you submit exceptname,phone,email,client,event,location, andportalintodata, so some standard fields may appear there too. Ageolocationvalue is recorded indata.- Creating a checkin triggers a
checkin_createdauto message.
List Checkins
GET /v1/checkins
Response (200): a JSON array of checkin objects.
Query Parameters
| Parameter | Description |
|---|---|
search | Partial match within the checkin data. |
name | Partial match on the name. |
client | Filter by client UUID. |
event | Filter by event UUID. |
status | Exact match on status. |
location | Filter by location. |
service | Exact match on service. |
department | Exact match on department. |
virtual | Set to 1 to return only virtual checkins. |
inperson | Set to 1 to return only in-person checkins. |
language | Exact match on language. |
phone | Partial match on phone. |
email | Partial match on email. |
portal | Filter by portal. |
url | Filter by the checkin's link slug. |
created_from | Checkins created on or after this date or datetime. |
created_to | Checkins created on or before this date or datetime. |
created_by | Filter by the creator. |
Pagination and shaping (limit, skip, sort, sortDirection, fields) follow the shared conventions.
Get a Checkin
GET /v1/checkins/{uuid}
Returns the checkin object with its data decoded. Returns 404 with a message of Checkin {uuid} not found when no checkin matches.
Update a Checkin
PATCH /v1/checkins/{uuid}
Send only the fields you want to change, most often the status as the person progresses (for example to complete). Fields you send under data are merged into the existing data rather than replacing it, and geolocation, geolocation_checkout, and checkout_notes are recorded in data. Returns 404 when no checkin matches.
curl -X PATCH "$BASE_URL/v1/checkins/{checkin_uuid}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "complete"}'
Updating a checkin triggers a checkin_updated auto message.
Archive, Restore, and Delete
PUT /v1/checkins/{uuid}/archive
PUT /v1/checkins/{uuid}/restore
DELETE /v1/checkins/{uuid}
These follow the standard lifecycle conventions: archive and delete remove the checkin from default lists, delete is a soft delete, and restore returns it to active lists.
FAQs
What is a checkin used for?
It records that a person has reported for a court date, appointment, or service. Tie it to an event and client, track its status from waiting to complete, and use it to know who has arrived.
Does checking someone in update their event?
Yes. When you create a checkin with a valid event UUID, that event's appearance is marked as checked-in.
How do I capture extra details on a checkin?
Send an explicit data object with your custom fields. If you omit data, the checkin copies your submitted fields (except name, phone, email, client, event, location, and portal) into data, and geolocation is recorded there too.
How do I mark a checkin complete?
PATCH /v1/checkins/{uuid} with {"status": "complete"}. Updates merge into the existing data, so you can add checkout details in the same call.
How do I list who is currently waiting?
GET /v1/checkins?status=waiting. Add service, department, or location to narrow to a specific line, or event to a specific hearing.
Related Documentation
- API Conventions: shared listing, filtering, and lifecycle behavior
- Events: the court date or appointment a checkin reports for
- Clients: the person checking in
- Webhook Event Types: checkin event delivery
- Error Handling: status codes and error responses