Guides

When a staging area closes

Planned closures for repairs, sudden ones for the police or a fire, and what each means for a vehicle that holds a spot or is parked there.

A staging area closes in one of two ways. A planned closure is announced ahead, and nobody is asked to leave for it. A sudden one closes the whole staging area at once, and every vehicle there has to go. This guide covers both, and how to send a vehicle on.

Planned closures

The owner closes some spots, or the whole staging area, for repairs or works, and tells us ahead. The closure shows in the staging area's closures, soonest first:

JSON
{
"id": "sa_norreport",
"object": "staging_area",
"name": "Nørreport",
"spots": 6,
"status": "open",
"closures": [
{
"starts_at": "2026-11-09T06:00:00Z",
"ends_at": "2026-11-09T14:00:00Z",
"spots": ["5", "6"],
"reason": "Resurfacing"
}
]
}

spots is null when the closure covers the whole staging area. ends_at is null until the owner knows when it ends. When a closure is added or changed, you receive staging_area.updated.

Nobody is asked to leave for a planned closure:

  • A spot is not held for a time inside a closure. If no other spot is free then, reserving fails with no_spot_available, or staging_area_closed when the closure covers the whole staging area.
  • A vehicle that checks in gets a leave_by no later than the start of a closure of its spot.
  • A closure never starts before the vehicles already checked in there have to leave.

If a closure is announced after you reserved, and your reservation is held for a time inside it, we cancel the reservation, as for a sudden closure below.

Sudden closures

The police close the street, or there is a fire. The staging area's status becomes closed, for all of it at once, and you receive staging_area.closed. Every vehicle there has to go:

  • A held reservation is cancelled, with cancellation_reason set to staging_area_closed. You receive reservation.cancelled.
  • A checked-in vehicle has to leave now. You receive reservation.must_leave. The reservation stays checked_in, with leave_by moved to the moment the staging area closed.
JSON
{
"id": "evt_4a9d27",
"object": "event",
"type": "reservation.must_leave",
"created_at": "2026-11-02T14:15:00Z",
"api_version": "2026-10-30",
"data": {
"object": {
"id": "res_8f2c41",
"object": "reservation",
"vehicle_id": "rt-0417",
"staging_area": "sa_norreport",
"spot": "2",
"status": "checked_in",
"checked_in_at": "2026-11-02T14:01:37Z",
"leave_by": "2026-11-02T14:15:00Z"
},
"alternatives": [
{
"object": "availability",
"staging_area": "sa_israels_plads",
"name": "Israels Plads",
"distance_m": 780,
"free_spots": 1,
"chance_free": 0.61
}
]
}
}

Check the vehicle out as it pulls away. Until then, reserving a new spot for it fails with vehicle_already_reserved.

When the staging area opens again, you receive staging_area.reopened.

Sending the vehicle on

reservation.cancelled and reservation.must_leave both carry data.alternatives: other staging areas nearby with room, in the same shape as Availability. Their distance_m is measured from the staging area that closed.

To send the vehicle to one, reserve a spot there with the same vehicle_id, and an arrive_by that allows for the drive. free_spots and chance_free are not a hold: until you reserve, the spot can go to someone else. If the reservation fails with no_spot_available, its error carries a fresh alternatives list to try next.

To receive these events, register an endpoint that asks for them; see Receiving webhooks.