Integracja TollCalc z własną aplikacją
TollCalc można zintegrować z oprogramowaniem lub przepływami pracy AI na trzy sposoby:
| Metoda | Najlepsza dla |
|---|---|
| REST API | Integracja serwer-serwer, własne backendy |
| MCP (Model Context Protocol) | Asystenci AI (Claude, Cursor, GPT i inne) |
Pakiet Python tollcalc |
Skrypty, data science, Jupyter Notebooks |
REST API
Pełna dokumentacja API (OpenAPI 3.0) dostępna pod adresem:
Szybki start
curl -X POST https://app.tollcalc.eu/api/calculate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer TWÓJ_TOKEN_API" \
-d '{
"origin": "Munich, Germany",
"destination": "Vienna, Austria",
"vehicle": {
"weight": 40,
"axles": 5,
"emission_class": "euro6",
"co2_class": "class_1"
}
}'
Parametry
| Parametr | Typ | Opis |
|---|---|---|
origin |
string | Punkt startowy: adres lub "lat;lon" |
destination |
string | Punkt docelowy: adres lub "lat;lon" |
via |
string[] | Opcjonalne punkty pośrednie (maks. 48) |
vehicle.weight |
number | Masa całkowita w tonach (np. 40) |
vehicle.axles |
integer | Liczba osi: 2, 3, 4 lub 5 |
vehicle.emission_class |
string | Norma Euro: euro0–euro6 |
vehicle.co2_class |
string | Klasa CO₂: class_1 (standardowy diesel) do class_5 (zeroemisyjny) |
plannedTripStart |
string | Opcjonalna data ISO-8601 ("2026-09-01") lub data-godzina RFC3339 ("2026-09-01T06:00:00Z"); wybiera reguły myta obowiązujące w tym momencie. Domyślnie: teraz |
Opcjonalny nagłówek HTTP:
| Nagłówek | Opis |
|---|---|
X-Subaccount |
Opcjonalne przypisanie użycia, np. dla firmy klienta lub działu. Liczone osobno dla każdego subkonta i widoczne w statystykach użycia. Brak/pusty → Default; maks. 64 znaki; dozwolone A-Z a-z 0-9 _ : -; nieprawidłowy → HTTP 400 |
Uwierzytelnianie
Tokeny API dostępne po rejestracji na app.tollcalc.eu. Bez tokena dozwolone jest 10 bezpłatnych zapytań miesięcznie (na adres IP).
Pobieranie użycia i limitu
Po zintegrowaniu API możesz programowo pobierać swoje zużycie i limit – oba endpointy są read-only, nie zużywają limitu i przyjmują ten sam token bearer:
| Endpoint | Opis |
|---|---|
GET /api/usage |
Udane obliczenia w miesiącu, w podziale na X-Subaccount |
GET /api/quota |
Zużycie, limit miesięczny i pozostały limit |
Opcjonalne parametry zapytania: year i month (domyślnie: bieżący miesiąc).
# Zużycie na subkonto
curl https://app.tollcalc.eu/api/usage \
-H "Authorization: Bearer TWÓJ_TOKEN_API"
# {"year":2026,"month":9,"total":1000,
# "sub_accounts":[{"key":"kunde_a","count":500},{"key":"Default","count":320}]}
# Pozostały limit
curl https://app.tollcalc.eu/api/quota \
-H "Authorization: Bearer TWÓJ_TOKEN_API"
# {"year":2026,"month":9,"plan":"api","used":123,"limit":5000,"remaining":4877}
Bez nagłówka X-Subaccount przy obliczeniu wywołania są przypisywane do klucza Default. W planach nielimitowanych limit i remaining mają wartość null.
MCP – Integracja z asystentami AI
TollCalc obsługuje Model Context Protocol (MCP) i można go podłączyć bezpośrednio do narzędzi AI, takich jak Claude Desktop, Cursor lub inny kompatybilny asystent.
Endpoint
POST https://app.tollcalc.eu/mcp
Dostępne narzędzia
| Narzędzie | Opis |
|---|---|
calculate_toll |
Oblicza opłaty drogowe dla trasy ciężarówki |
get_quota |
Sprawdza pozostały limit dla bieżącej sesji |
Konfiguracja w Claude Desktop
Dodaj następujący wpis do konfiguracji Claude Desktop (claude_desktop_config.json):
Opcja A – OAuth (zalecane): Tylko URL, token nie jest potrzebny.
{
"mcpServers": {
"tollcalc": {
"url": "https://app.tollcalc.eu/mcp"
}
}
}
Opcja B – Klucz API (do automatyzacji): Token ustawiony ręcznie, np. do integracji serwer-serwer.
{
"mcpServers": {
"tollcalc": {
"url": "https://app.tollcalc.eu/mcp",
"headers": {
"Authorization": "Bearer TWÓJ_TOKEN_API"
}
}
}
}
Bez konfiguracji dostępnych jest 10 bezpłatnych zapytań na sesję MCP (= na rozmowę) — konto nie jest wymagane. Po 10 zapytaniach Claude Desktop automatycznie otwiera przeglądarkę do logowania (OAuth 2.0). Po zalogowaniu obowiązuje limit wybranego planu. Tokeny API dla opcji B można utworzyć na app.tollcalc.eu.
Poziomy szczegółowości
Narzędzie calculate_toll obsługuje trzy poziomy szczegółowości za pomocą parametru detail:
| Wartość | Zawartość |
|---|---|
compact (domyślny) |
Łączna opłata, km z opłatą, km bez opłaty, podział na kraje |
detailed |
Jak compact, plus koszty na segment (bez geometrii) |
full |
Jak detailed, plus współrzędne i informacje debugowe |
Pola odpowiedzi
Wszystkie poziomy szczegółowości zawierają następujące pola:
| Pole | Typ | Opis |
|---|---|---|
origin |
string | Rozwiązana nazwa miejsca startowego |
destination |
string | Rozwiązana nazwa miejsca docelowego |
total_toll_eur |
number | Łączna opłata drogowa w EUR |
total_distance_km |
number | Całkowita długość trasy w km |
toll_km |
number | Odcinki z opłatą w km |
toll_free_km |
number | Odcinki bezpłatne w km |
countries |
array | Zestawienie według kraju (country, country_name, total_km, toll_km, toll_eur) |
info_url |
string | Link do wyświetlenia obliczeń w aplikacji webowej TollCalc — w tym zaplanowanej trasy na mapie interaktywnej; do udostępnienia współpracownikom lub otwarcia w przeglądarce |
Przy detail=detailed pole countries zawiera dodatkowo segments (odcinek: road, type, km, toll_eur).
Przy detail=full segmenty zawierają współrzędne, source_url, matched_geofence i geometrię.
Pakiet Python tollcalc
Pakiet Python tollcalc opakowuje REST API i umożliwia korzystanie ze skryptów Python lub notebooków Jupyter.
Instalacja
pip install tollcalc
Użycie
from tollcalc import calculate_toll, get_usage, get_quota
result = calculate_toll(
origin="Munich, Germany",
destination="Vienna, Austria",
weight=40,
axles=5,
emission_class="euro6",
co2_class="class_1",
token="TWÓJ_TOKEN_API",
)
print(f"Łączna opłata: {result['total_toll_eur']:.2f} EUR")
print(f"Dystans: {result['total_distance_km']:.1f} km")
for country in result["countries"]:
print(f" {country['country_name']}: {country['toll_eur']:.2f} EUR ({country['toll_km']:.0f} km z opłatą)")
Zużycie i limit z Pythona
from tollcalc import get_usage, get_quota
usage = get_usage(token="TWÓJ_TOKEN_API")
print(usage["total"], "Calls")
for s in usage["sub_accounts"]:
print(f" {s['key']}: {s['count']}")
quota = get_quota(token="TWÓJ_TOKEN_API")
print(f"{quota['used']} / {quota['limit']} – pozostało: {quota['remaining']}")
Dokumentacja pakietu
Pełna dokumentacja i przykłady dostępne na PyPI: pypi.org/project/tollcalc
Cennik i limity
| Plan | Zapytania/miesiąc | Cena |
|---|---|---|
| Free (bez tokena) | 10 na sesję MCP (= na rozmowę) | bezpłatny |
| Starter | do 500 | od 9 €/miesiąc |
| Professional | do 5 000 | od 49 €/miesiąc |
| Enterprise | bez limitu | na zapytanie |
Wszystkie plany i aktualne ceny: tollcalc.eu/en/#pricing
W razie pytań dotyczących integracji: support@tollcalc.eu