VEZOO Public API v1

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.

1
Request access
Authorization: Bearer <api-key>
2
POST /route
from + to + optional vias
3
route.polyline
Use the returned encoded polyline
4
POI / insights
Pass polyline to trip endpoints

How methods connect

Route is the base request. Its polyline is passed directly to /places/along-route and /trip-insights.

STEP 1
POST /route

Returns distance, duration, segments and route.polyline.

STEP 2
POST /places/along-route

Use the polyline to fetch roadside objects by category.

STEP 3
POST /trip-insights

Use the same polyline for stop suggestions and smart trip planning.

API methods

GET/citiesscope: cities≤ 120 RPM

Autocomplete / location search

Parameters
q: string (2–80, required) · limit: integer (1–20, default 10)
GET/geocodescope: geocode≤ 30 RPM

Forward and reverse geocoding

Parameters
q: string OR lat + lon
GET | POST/routescope: route≤ 60 RPM

Road route with up to 12 via points and exclusions

Parameters
from, to · vias[] / v · exclude: toll,motorway,ferry
POST/places/along-routescope: places≤ 20 RPM

Fuel, food, lodging, service, tyres, parking and charging

Parameters
polyline · categories[] (optional)
POST/trip-insightsscope: insights≤ 12 RPM

Suggested stops and automatic trip plan

Parameters
polyline

Rate limits

Effective RPM is the lower of the client limit and the endpoint cap. Exceeded limits return HTTP 429.

cities 120 · route 60 · geocode 30 · places 20 · insights 12 RPM

Scopes

Each key can be restricted to only the required methods.

citiesroutegeocodeplacesinsights

Browser 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 · route
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'
JavaScript · route
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 · places along route
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"]
  }'
PHP · route
$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);
JSON · route response
{
  "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.

HTTPerror_codeMeaning
401invalid_api_keyMissing or invalid key
401api_key_disabledKey was disabled
401api_key_expiredKey expired
403scope_forbiddenScope is not allowed
403origin_forbiddenBrowser Origin is not allowed
404not_found / unknown_location / no_routeLocation or route was not found
422validation errorRequest parameters are invalid
429rate_limit_exceededPer-minute limit exceeded
429quota_exceededTotal key quota exhausted
503api_disabled / api_not_configuredPublic API unavailable
503service_unavailableRequired routing service unavailable

Response headers

Use X-Request-Id for support and X-RateLimit-* headers to manage traffic.

X-API-Version

API version used for the response

X-Request-Id

Unique request identifier for diagnostics

X-RateLimit-Limit

Effective requests-per-minute limit

X-RateLimit-Remaining

Requests remaining in the current minute

X-Quota-Limit

Total quota when configured for this key

X-Quota-Remaining

Remaining total quota

Retry-After

Seconds before retrying after HTTP 429

Base URL

https://vezoo.ru/api/v1

Authentication: Authorization: Bearer YOUR_API_KEY