Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/e-vignettes-eu:e-vignettes-eu-countries-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Vignette ID public Countries API
summary: Read-only catalogue of European e-vignettes, toll products and country toll rules.
description: 'Vignette ID sells official digital motorway vignettes (e-vignettes) and Alpine section-toll
tickets for Austria, Switzerland, Czechia, Slovakia, Hungary, Slovenia, Romania, Bulgaria and
Moldova. This document describes the public, unauthenticated read endpoints served from
https://e-vignettes.eu: the list of covered countries, the editorial toll rules for each of them, and the
live product catalogue with prices.
No API key is required. Requests are rate limited per IP address and every response carries
the RateLimit-Policy and RateLimit header fields of
draft-ietf-httpapi-ratelimit-headers-09, alongside the legacy RateLimit-Limit /
RateLimit-Remaining / RateLimit-Reset triplet, so a client can self-throttle without guessing.
Responses are also edge-cached: honour Cache-Control rather than polling.
Placing an order is not part of this API. Issuing a vignette requires the authenticated partner
API on vignette.id, which is also exposed as an MCP server at https://api.vignette.id/mcp
(sandbox https://sandbox-api.vignette.id/mcp) for agents that would rather call tools than
endpoints. Request credentials at https://e-vignettes.eu/developers.'
version: 1.0.0
contact:
name: Vignette ID partner team
email: work@vignette.id
url: https://e-vignettes.eu/developers
termsOfService: https://e-vignettes.eu/terms
license:
name: Proprietary
identifier: LicenseRef-Vignette-ID-Proprietary
servers:
- url: https://e-vignettes.eu/api/v1
description: Production
security: []
tags:
- name: Countries
description: Which countries are covered and how their toll systems work.
paths:
/countries:
get:
operationId: listCountries
tags:
- Countries
summary: List every country Vignette ID sells tolls for
description: Returns the nine covered countries with their ISO code, the national toll operator, a one-paragraph summary of the toll system and links to the human page and to that country's products. Use this first to discover valid `country` values for `listProducts`.
responses:
'200':
description: 'The full country list. Never paginated: the list is nine items long.'
headers:
RateLimit-Policy:
description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
schema:
type: string
examples:
- '"public-read";q=240;w=60'
RateLimit:
description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
schema:
type: string
examples:
- '"public-read";r=239;t=43'
RateLimit-Limit:
description: 'Legacy triplet, kept for older clients: requests allowed per window.'
schema:
type: integer
examples:
- 240
RateLimit-Remaining:
description: 'Legacy triplet: requests still allowed in the current window.'
schema:
type: integer
examples:
- 239
RateLimit-Reset:
description: 'Legacy triplet: seconds until the window resets.'
schema:
type: integer
examples:
- 43
content:
application/json:
schema:
$ref: '#/components/schemas/CountryList'
'405':
description: The endpoint is read-only; only GET and OPTIONS are supported.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: The per-IP quota for this policy is exhausted. `Retry-After` gives the seconds to wait; the RateLimit fields carry the same reset.
headers:
RateLimit-Policy:
description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
schema:
type: string
examples:
- '"public-read";q=240;w=60'
RateLimit:
description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
schema:
type: string
examples:
- '"public-read";r=239;t=43'
RateLimit-Limit:
description: 'Legacy triplet, kept for older clients: requests allowed per window.'
schema:
type: integer
examples:
- 240
RateLimit-Remaining:
description: 'Legacy triplet: requests still allowed in the current window.'
schema:
type: integer
examples:
- 239
RateLimit-Reset:
description: 'Legacy triplet: seconds until the window resets.'
schema:
type: integer
examples:
- 43
Retry-After:
description: Seconds to wait before retrying.
schema:
type: integer
examples:
- 43
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
/countries/{code}:
get:
operationId: getCountry
tags:
- Countries
summary: Get the toll rules for one country
description: 'Returns everything the country guide states: which roads are tolled, vehicle categories and validity periods, activation and plate registration, fines and enforcement, tolls not covered by the vignette, a country FAQ, and the official sources each fact was checked against. Prices are not included here — call `listProducts` for those.'
parameters:
- name: code
in: path
required: true
description: ISO 3166-1 alpha-2 country code, lower case.
schema:
type: string
enum:
- at
- ch
- cz
- sk
- hu
- si
- ro
- bg
- md
examples:
- at
responses:
'200':
description: The country guide.
headers:
RateLimit-Policy:
description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
schema:
type: string
examples:
- '"public-read";q=240;w=60'
RateLimit:
description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
schema:
type: string
examples:
- '"public-read";r=239;t=43'
RateLimit-Limit:
description: 'Legacy triplet, kept for older clients: requests allowed per window.'
schema:
type: integer
examples:
- 240
RateLimit-Remaining:
description: 'Legacy triplet: requests still allowed in the current window.'
schema:
type: integer
examples:
- 239
RateLimit-Reset:
description: 'Legacy triplet: seconds until the window resets.'
schema:
type: integer
examples:
- 43
content:
application/json:
schema:
$ref: '#/components/schemas/CountryDetail'
'404':
description: No country with that code. `error.hint` lists the valid codes.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'405':
description: The endpoint is read-only; only GET and OPTIONS are supported.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'429':
description: The per-IP quota for this policy is exhausted. `Retry-After` gives the seconds to wait; the RateLimit fields carry the same reset.
headers:
RateLimit-Policy:
description: The quota policy in force, per draft-ietf-httpapi-ratelimit-headers-09, e.g. "public-read";q=240;w=60.
schema:
type: string
examples:
- '"public-read";q=240;w=60'
RateLimit:
description: Remaining quota (r) and seconds until the window resets (t), e.g. "public-read";r=239;t=43.
schema:
type: string
examples:
- '"public-read";r=239;t=43'
RateLimit-Limit:
description: 'Legacy triplet, kept for older clients: requests allowed per window.'
schema:
type: integer
examples:
- 240
RateLimit-Remaining:
description: 'Legacy triplet: requests still allowed in the current window.'
schema:
type: integer
examples:
- 239
RateLimit-Reset:
description: 'Legacy triplet: seconds until the window resets.'
schema:
type: integer
examples:
- 43
Retry-After:
description: Seconds to wait before retrying.
schema:
type: integer
examples:
- 43
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
components:
schemas:
Error:
type: object
description: Every failure from this API, including an unmatched /api/* URL, uses this shape. Branch on `error.code`, show `error.message`, act on `error.hint`.
required:
- error
properties:
error:
type: object
required:
- code
- message
- hint
- status
- documentation_url
properties:
code:
type: string
description: Stable machine-readable code. Safe to branch on.
enum:
- not_found
- invalid_parameter
- method_not_allowed
- rate_limited
- upstream_unavailable
- internal_error
message:
type: string
description: Human-readable description of what failed.
hint:
type: string
description: What to change to make the call succeed.
status:
type: integer
description: HTTP status code, repeated in the body.
documentation_url:
type: string
format: uri
CountryList:
type: object
required:
- object
- count
- data
properties:
object:
type: string
const: list
count:
type: integer
data:
type: array
items:
$ref: '#/components/schemas/CountrySummary'
CountryDetail:
allOf:
- $ref: '#/components/schemas/CountrySummary'
- type: object
required:
- subtitle
- sections
- faq
- sources
properties:
subtitle:
type: string
sections:
type: array
description: The country guide in reading order.
items:
type: object
required:
- heading
- paragraphs
- bullets
properties:
heading:
type: string
paragraphs:
type: array
items:
type: string
bullets:
type: array
items:
type: string
faq:
type: array
items:
type: object
required:
- question
- answer
properties:
question:
type: string
answer:
type: string
sources:
type: array
description: Official pages each fact was checked against.
items:
type: object
required:
- label
- url
properties:
label:
type: string
url:
type: string
format: uri
CountrySummary:
type: object
required:
- code
- name
- iso_code
- operator
- summary
- page_url
- products_url
- last_reviewed
properties:
code:
type: string
description: ISO 3166-1 alpha-2, lower case.
examples:
- at
name:
type: string
description: English country name.
examples:
- Austria
iso_code:
type: string
description: ISO 3166-1 alpha-2, upper case.
examples:
- AT
operator:
$ref: '#/components/schemas/Operator'
summary:
type: string
description: One paragraph on how the country's toll works.
page_url:
type: string
format: uri
description: Human country guide.
products_url:
type: string
format: uri
description: Products filtered to this country.
last_reviewed:
type: string
format: date
description: ISO date the facts were last verified against the operator.
Operator:
type: object
description: The national authority that issues the toll product.
required:
- name
- system_name
- url
properties:
name:
type:
- string
- 'null'
description: Official operator, e.g. "ASFINAG".
system_name:
type:
- string
- 'null'
description: Name of the toll system if it has one, e.g. "HU-GO".
url:
type:
- string
- 'null'
format: uri
description: Operator website.
externalDocs:
description: Partner API reference — authenticated ordering endpoints and the MCP server
url: https://docs.vgnt.app