VEZOO routing and logistics API
Embed road routing, location autocomplete, geocoding and places along a route into websites, CRM, ERP, delivery and transport products.
Current coverage: Russia, CIS, Europe, North and South America, the Middle East and Egypt. Coverage is expanding.
OpenAPI 3.1 includes parameters, request bodies, response headers, error codes, scopes and examples.
Trial access
After registration, submit an API access application. An administrator reviews the requested scopes and load before the key appears in your account.
Authentication
Send the key as Authorization: Bearer <api-key>. Keys can be disabled or rotated without changing the integration.
Commercial access
Each client can have an independent plan, scopes, RPM, quota, expiration and allowed browser origins.
Quick start
Get a key, calculate a route, then pass route.polyline to roadside POIs and smart trip insights.
How methods connect
Route is the base request. Its polyline is passed directly to /places/along-route and /trip-insights.
POST /routeReturns distance, duration, segments and route.polyline.
POST /places/along-routeUse the polyline to fetch roadside objects by category.
POST /trip-insightsUse the same polyline for stop suggestions and smart trip planning.
API methods
/citiesscope: cities≤ 120 RPMAutocomplete / location search
q: string (2–80, required) · limit: integer (1–20, default 10)/geocodescope: geocode≤ 30 RPMForward and reverse geocoding
q: string OR lat + lon/routescope: route≤ 60 RPMRoad route with up to 12 via points and exclusions
from, to · vias[] / v · exclude: toll,motorway,ferry/places/along-routescope: places≤ 20 RPMFuel, food, lodging, service, tyres, parking and charging
polyline · categories[] (optional)/trip-insightsscope: insights≤ 12 RPMSuggested stops and automatic trip plan
polylineRate limits
Effective RPM is the lower of the client limit and the endpoint cap. Exceeded limits return HTTP 429.
Scopes
Each key can be restricted to only the required methods.
citiesroutegeocodeplacesinsightsBrowser origins
Browser requests can be restricted to an allowlist of Origin values. Server-to-server requests without Origin are unaffected.
Ready-to-use examples
curl -G 'https://vezoo.ru/api/v1/route' \
-H 'Authorization: Bearer YOUR_API_KEY' \
--data-urlencode 'from=Москва' \
--data-urlencode 'to=Казань' \
--data-urlencode 'v=Владимир' \
--data-urlencode 'exclude=ferry'const response = await fetch('https://vezoo.ru/api/v1/route', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
from: 'Москва',
to: 'Казань',
vias: ['Владимир'],
exclude: ['ferry'],
}),
});
const data = await response.json();
console.log(data.route.polyline);curl -X POST 'https://vezoo.ru/api/v1/places/along-route' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"polyline":"ENCODED_POLYLINE_FROM_ROUTE",
"categories":["fuel","food","lodging","parking","charging"]
}'$payload = json_encode([
'from' => 'Москва',
'to' => 'Казань',
]);
$ch = curl_init('https://vezoo.ru/api/v1/route');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => $payload,
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);{
"success": true,
"from": "Москва",
"to": "Казань",
"via": [],
"exclude": [],
"route": {
"kilometers": 817.4,
"minutes": 667,
"polyline": "...",
"segments": [...]
}
}Errors
Authentication and quota errors use stable error_code values. Validation errors return HTTP 422.
| HTTP | error_code | Meaning |
|---|---|---|
| 401 | invalid_api_key | Missing or invalid key |
| 401 | api_key_disabled | Key was disabled |
| 401 | api_key_expired | Key expired |
| 403 | scope_forbidden | Scope is not allowed |
| 403 | origin_forbidden | Browser Origin is not allowed |
| 404 | not_found / unknown_location / no_route | Location or route was not found |
| 422 | validation error | Request parameters are invalid |
| 429 | rate_limit_exceeded | Per-minute limit exceeded |
| 429 | quota_exceeded | Total key quota exhausted |
| 503 | api_disabled / api_not_configured | Public API unavailable |
| 503 | service_unavailable | Required routing service unavailable |
Response headers
Use X-Request-Id for support and X-RateLimit-* headers to manage traffic.
X-API-VersionAPI version used for the response
X-Request-IdUnique request identifier for diagnostics
X-RateLimit-LimitEffective requests-per-minute limit
X-RateLimit-RemainingRequests remaining in the current minute
X-Quota-LimitTotal quota when configured for this key
X-Quota-RemainingRemaining total quota
Retry-AfterSeconds before retrying after HTTP 429
Base URL
https://vezoo.ru/api/v1Authentication: Authorization: Bearer YOUR_API_KEY