Guides

Your first reservation

Take one vehicle from start to finish: find room, reserve a spot, check in, and check out.

This guide takes one vehicle from start to finish. It needs somewhere to wait between rides, and you will find it a spot.

Our vehicle is called rt-0417, and it is heading for Nørreport in Copenhagen. You will make four calls: find room, reserve a spot, check in, and check out.

You need a test key. If you do not have one yet, see Getting an API key.

Find room

First, find out where there is room. Give a point, near, and the time your vehicle will get there, arrive_at.

cURL
curl "https://api.golanoo.com/v1/availability?near=55.6812,12.5689&arrive_at=2026-11-02T14:02:00Z" \
-H "Authorization: Bearer lk_test_..."

You get the staging areas with room, nearest first:

JSON
{
"object": "list",
"has_more": false,
"data": [
{
"object": "availability",
"staging_area": "sa_norreport",
"name": "Nørreport",
"distance_m": 420,
"free_spots": 3,
"chance_free": 0.92
},
{
"object": "availability",
"staging_area": "sa_israels_plads",
"name": "Israels Plads",
"distance_m": 780,
"free_spots": 1,
"chance_free": 0.61
}
]
}

What do the numbers mean?

free_spots is how many spots are free at that time.

chance_free is how likely it is that one is still free when your vehicle gets there. 0.92 means a 92% chance. It is a forecast, so it does not keep a spot for you. Only a reservation does.

More in Finding room.

Reserve a spot

Nørreport has room, so reserve a spot there. Say which vehicle, which staging area, and when it will arrive. vehicle_id is your own name for the vehicle.

cURL
curl https://api.golanoo.com/v1/reservations \
-H "Authorization: Bearer lk_test_..." \
-H "Idempotency-Key: 5f0e9a1c-2d7b-4b8e-9c3a-0e6f2a7d1b44" \
-H "Content-Type: application/json" \
-d '{
"vehicle_id": "rt-0417",
"staging_area": "sa_norreport",
"arrive_by": "2026-11-02T14:02:00Z"
}'

Why the Idempotency-Key?

If the call times out, you cannot tell whether it went through. Send it again with the same Idempotency-Key, and we make sure the spot is only reserved once. Use a new key, such as a UUID, for each new reservation.

You get the reservation back:

JSON
{
"id": "res_8f2c41",
"object": "reservation",
"vehicle_id": "rt-0417",
"staging_area": "sa_norreport",
"spot": "2",
"location": { "lat": 55.6838, "lng": 12.5721 },
"status": "held",
"arrive_by": "2026-11-02T14:02:00Z",
"held_until": "2026-11-02T14:07:00Z",
"checked_in_at": null,
"leave_by": null,
"checked_out_at": null,
"cancellation_reason": null,
"metadata": {},
"created_at": "2026-11-02T13:51:12Z"
}

Send the vehicle to location, and park it in spot 2.

How long is the spot kept?

Until held_until, a few minutes after the time you said the vehicle would arrive. At Nørreport, that is five minutes. If the vehicle has not checked in by then, the spot goes to someone else.

Running late, or not coming at all? See Holding a spot.

Check in

When the vehicle is parked in its spot, check it in. Early is fine.

cURL
curl -X POST https://api.golanoo.com/v1/reservations/res_8f2c41/check_in \
-H "Authorization: Bearer lk_test_..." \
-H "Idempotency-Key: 9b2d6e3f-7a41-4c0e-8f15-3d9a6c2b7e80"

The status is now checked_in. leave_by says when the vehicle has to leave: at Nørreport, 45 minutes after it checked in.

JSON
{
"id": "res_8f2c41",
"object": "reservation",
"vehicle_id": "rt-0417",
"staging_area": "sa_norreport",
"spot": "2",
"location": { "lat": 55.6838, "lng": 12.5721 },
"status": "checked_in",
"arrive_by": "2026-11-02T14:02:00Z",
"held_until": "2026-11-02T14:07:00Z",
"checked_in_at": "2026-11-02T14:01:37Z",
"leave_by": "2026-11-02T14:46:37Z",
"checked_out_at": null,
"cancellation_reason": null,
"metadata": {},
"created_at": "2026-11-02T13:51:12Z"
}

Check out

When the vehicle drives off to its next ride, check it out. The spot is then free for the next vehicle.

cURL
curl -X POST https://api.golanoo.com/v1/reservations/res_8f2c41/check_out \
-H "Authorization: Bearer lk_test_..." \
-H "Idempotency-Key: 2c8f4a7e-1b3d-4e6a-9f05-7d2e8b1c6a39"

The status is now checked_out. That is a whole stay: held, then checked_in, then checked_out.

Keep learning