Zone
Operational zones, their areas, and parking occupancy. Use these endpoints to render where riding, parking and reduced-speed rules apply, and to discover which zones the partner can access. Zone areas change rarely — cache them no more than once every 6 hours.
Operational zones
Get operational zones responds with every zone the partner can access.
{
"data": {
"id": "4EAC93B2-CB40-4FFD-B905-F4505E2E3BAD",
"type": "zone",
"attributes": {
"zones": [
{
"zoneId": "1",
"zoneName": "Stockholm",
"parkingMode": "free-floating",
"licenceVerificationRequired": false,
"speedConfig": { "maxSpeed": 25, "minRequiredRides": 3, "reducedSpeed": 11, "speedUnit": "km/h" }
}
]
}
}
}
| Field | Type | Description |
|---|---|---|
zoneId | string | Voi's unique id of the operational zone. |
zoneName | string | Name of the city. |
parkingMode | string | Default parking mode — see below. |
licenceVerificationRequired | boolean | Whether verifying the user's driving licence is required. |
speedConfig | object | Zone speed restrictions — see below. |
isSleeping | boolean | Whether the zone is in sleep mode (vehicles unavailable; no rentals can start). |
Parking modes — free-floating (end the ride anywhere except No-parking and No-riding zones) or parking-spot (rides can only end inside a parking spot).
Speed config — maxSpeed and reducedSpeed (beginner's mode) are given in speedUnit (km/h or mph); minRequiredRides is the rides needed before a user can leave beginner's mode.
Zone areas
Get zone areas responds with the operational zone's areas as GeoJSON.
{
"data": {
"id": "1",
"type": "area",
"attributes": {
"areas": [
{
"id": "651d1341-775d-4e0a-a5d3-310add50ef7f",
"area_type": "no-parking",
"geometry": { "type": "MultiPolygon", "coordinates": [] }
}
]
}
}
}
Area types
| Area type | Description |
|---|---|
operations | The operational area where Voi operates. |
no-parking | Rentals cannot be ended here. |
parking-spot | A rental must be ended here. |
slow-zone | The vehicle's max speed is lowered. |
no-riding | Vehicles may stop (depending on configuration); the ride cannot end here. |
incentive | Users are incentivised to park here. |
free-floating | Rentals can end without restrictions (V2 endpoint only). |
A zone uses either parking spots or free-floating — it has either no-parking or parking-spot areas, never both. All area behaviour is enforced by the system, but for a good user experience we recommend explaining the areas and their implications to the user.
Parking occupancy
Get parking occupancy returns the number of available spots per parking-spot area.
{ "data": [ { "id": "044bb70b-8ac6-605c-984f-2244776800a5", "occupancy": 8, "capacity": 10 } ] }
| Field | Type | Description |
|---|---|---|
id | string | Specific parking-spot area id. |
occupancy | integer | Number of parked vehicles in the area. |
capacity | integer | Maximum capacity of the area. |
Fetch zone areas
Returns the areas of an operational zone (e.g. `no-parking`, `slow-zone`, `parking-spot`) as GeoJSON. Zone areas change rarely — cache them no more than once every 6 hours.
Fetch zone areas V2
Returns the same data as [Get zone areas](/deep-integration/reference/get-zone-areas), plus the `free-floating` area type.
Fetch zone information
Returns all operational zones the partner has access to, including parking mode, licence requirements and speed configuration. Some zones have vehicle sleep times during which no rentals can be started.
Fetch zone areas occupancy
Returns the number of available parking spots in every parking-spot area of the given operational zone.