Skip to main content

POST /appointments

Create a new appointment record. Call this endpoint as soon as appointment data is available, regardless of whether the customer has elected a transportation service or whether all data fields are complete.

The returned id must be persisted — it is required for the PUT /appointments/:id upgrade call.

Example Request

POST /v1/appointments
{
"customer_id": 1234,
"appointment_time": "2026-03-10T09:00:00-05:00",
"consumer_name": "Jane Smith",
"consumer_phone": "+15555550101",
"consumer_at_pickup": true,
"vehicle_vin": "1HGBH41JXMN109186",
"vehicle_make": "Honda",
"vehicle_model": "Accord",
"vehicle_year": 2022,
"vehicle_color": "Silver",
"pickup_location_id": null,
"delivery_location_id": 5678,
"config": {}
}

Body Params

FieldTypeRequired?Description
customer_idNumberRequiredHopDrive dealer account ID. Must match an authorized rooftop on your bearer token.
consumer_at_pickupBooleanRequiredtrue if the vehicle is at the consumer's location. false if the vehicle is already at the dealership.
delivery_location_idNumberRequiredHopDrive location ID for the dealership service address.
appointment_timeStringOptionalISO 8601 timestamp for when the vehicle must arrive at the dealership. Example: "2026-03-10T09:00:00-05:00"
consumer_nameStringOptionalConsumer full name. Used for SMS outreach.
consumer_phoneStringOptionalConsumer mobile phone number. Used for SMS outreach.
pickup_location_idNumberOptionalHopDrive location ID for the consumer's pickup address. May be null if the address is not yet available.
vehicle_vinStringOptionalVehicle Identification Number.
vehicle_makeStringOptionalVehicle make (e.g., "Honda").
vehicle_modelStringOptionalVehicle model (e.g., "Accord").
vehicle_yearNumberOptionalVehicle model year.
vehicle_colorStringOptionalVehicle color.
vehicle_manualBooleanOptionaltrue if the vehicle has a manual transmission.
driver_notesStringOptionalGate codes, special pickup instructions, or other notes for the driver.
configObjectOptionalFlexible JSONB metadata object for integration-specific keys.

Example Response

201 /v1/appointments
{
"id": 88001234,
"status": "new"
}
info

Store the returned id. It is required for the PUT /appointments/:id call to upgrade the appointment with a transportation type.