Skip to main content

Self Check-In

Customer-driven check-in โ€” the same flow the customer uses on their ticket page or the meeting-point poster. Unlike Redeem Ticket, self check-in:

  • Only works when the supplier has self check-in enabled (Settings โ†’ Experiences).
  • Is allowed only inside the check-in window (opens a configurable number of minutes before the session start, closes at session end).
  • Requires any applicable waivers to be signed first โ€” when they aren't, the response lists what still needs signing instead of failing.
  • Never clears the staff gear/safety checklist. Attendance is recorded; if a pre-check-in checklist is still outstanding the response returns gear_pending: true and the team completes it on the manifest.

Endpointโ€‹

POST /v1/tickets/self-checkin

Required Scopeโ€‹

tickets:write

Request Bodyโ€‹

ParameterTypeRequiredDescription
ticket_codestringYesThe ticket code or full QR URL

Example Requestโ€‹

curl -X POST https://app.equipdash.com/api/v1/tickets/self-checkin \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ticket_code": "EQTK-A3F8X9B2"}'

Responseโ€‹

Success (200)โ€‹

{
"data": {
"success": true,
"already": false,
"gear_pending": false,
"ticket_code": "EQTK-A3F8X9B2",
"message": "You're checked in. See you soon!",
"booking": {
"booking_id": 132,
"customer_name": "Sophie Marshall",
"experience_name": "Beginner Surf Lesson",
"schedule_time": "7:00 AM"
}
},
"meta": { "request_id": "req_abc123", "timestamp": "2026-03-28T06:40:00Z" }
}

gear_pending: true means the customer is marked as arrived but a staff gear/safety checklist still needs completing. already: true means the ticket was already checked in (idempotent).

Waiver Required (200)โ€‹

Not an error โ€” the customer must sign before check-in completes. Each form URL opens the live, booking-linked waiver.

{
"data": {
"success": false,
"requires_waiver": true,
"message": "Please sign your waiver to check in.",
"waiver_forms": [
{ "id": 8, "name": "Liability Waiver", "url": "https://app.equipdash.com/form/AB12CD34?code=..." }
]
},
"meta": { "request_id": "req_abc123" }
}

Outside the Window (422)โ€‹

{
"error": { "code": "self_checkin_error", "message": "Check-in isn't open yet." },
"meta": { "request_id": "req_abc123" }
}

Disabled / Not Found (404 or 409)โ€‹

Returned when self check-in is off for the account, or the ticket can't be checked in (cancelled/expired).


Find Booking for Check-In

Look up a customer's checkable party from the meeting-point poster flow, by last name and email. Scoped to the authenticated supplier and only to sessions whose check-in window is currently open. A non-match returns an empty list โ€” it never enumerates other customers.

Endpointโ€‹

POST /v1/checkin/find

Required Scopeโ€‹

tickets:read

Request Bodyโ€‹

ParameterTypeRequiredDescription
last_namestringYesCustomer's last name
emailstringYesCustomer's email address

Example Requestโ€‹

curl -X POST https://app.equipdash.com/api/v1/checkin/find \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"last_name": "Marshall", "email": "sophie@example.com"}'

Responseโ€‹

Success (200)โ€‹

{
"data": {
"parties": [
{
"booking_id": 132,
"reference": "#132",
"customer_name": "Sophie Marshall",
"experience_name": "Beginner Surf Lesson",
"schedule_date": "March 28th 2026",
"schedule_time": "7:00 AM",
"tickets": [
{ "ticket_code": "EQTK-A3F8X9B2", "type": "participant", "name": "Sophie Marshall", "rate": "Adult", "checked_in": false }
]
}
]
},
"meta": { "request_id": "req_abc123", "timestamp": "2026-03-28T06:40:00Z" }
}

Check each returned ticket in with Self Check-In using its ticket_code.