---
title: "Record driver check-in"
method: POST
path: "/appointments/{id}/check-in"
tags: ["Appointments"]
---

# Record driver check-in

`POST /appointments/{id}/check-in`

## Request

- Base URL: `https://simpledock.ai/api/v1`
- URL: `https://simpledock.ai/api/v1/appointments/{id}/check-in`
- Auth: HTTP bearer

Record the driver's check-in reply: ON_TRACK, RUNNING_LATE (send `estimatedDelay` in minutes), or CANCELLING. CANCELLING also cancels the appointment. Only CONFIRMED appointments accept a check-in; others return 409. This does not mark the truck arrived or start dwell time.

## Path parameters

- `id` string, required

## Request body

- object
  - `status` 'ON_TRACK' | 'RUNNING_LATE' | 'CANCELLING', required
  - `estimatedDelay` integer: Minutes late

## Response `200`

Success

- object
  - `data` Appointment, required
    - `id` string, required
    - `status` 'PENDING' | 'CONFIRMED' | 'CANCELLED' | 'COMPLETED' | 'NO_SHOW', required
    - `locationId` string, required
    - `startTime` string, date-time, required
    - `endTime` string, date-time, required
    - `companyName` string, required
    - `contactEmail` string, required
    - `contactName` string, nullable
    - `contactPhone` string, nullable
    - `driverName` string, nullable
    - `driverPhone` string, nullable
    - `trailerNumber` string, nullable
    - `poReference` string, nullable
    - `notes` string, nullable
    - `driverNotes` string, nullable
    - `customFields` object, nullable, required
    - `arrivalStatus` string, nullable
    - `estimatedDelay` integer, nullable
    - `approvedAt` string, date-time, nullable
    - `rejectedAt` string, date-time, nullable
    - `cancelledAt` string, date-time, nullable
    - `checkedInAt` string, date-time, nullable: When dock staff marked the truck arrived.
    - `completedAt` string, date-time, nullable: When the appointment was marked completed (the truck left).
    - `rejectionReason` string, nullable
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
    - `door` object, required
      - `id` string, required
      - `name` string, required
    - `appointmentType` AppointmentTypeSummary, required
      - `id` string
      - `name` string
      - `loadType` string
      - `direction` string
      - `durationMinutes` integer

## Other responses

- `401`: Unauthorized — missing, invalid, or expired key
- `402`: Payment required — a Pro feature or a Free plan limit
- `403`: Forbidden — key is missing the required scope
- `409`: Not active
- `429`: Rate limited — slow down and retry after Retry-After

---

[API](https://skmtc.dev/simpledock/apis/simpledock-api.md) · [All operations](https://skmtc.dev/simpledock/apis/simpledock-api/llms.txt) · [OpenAPI document](https://skmtc.dev/simpledock/apis/simpledock-api/revisions/d6e8fedfc000?raw)
