Pierwsze kroki
Veritra monitoruje publiczne przetargi zamówień w całej UE. Możesz korzystać z platformy przez panel webowy lub integrować się za pomocą REST API.
Korzystaj przez przeglądarkę
Dla większości użytkowników. Rejestracja, filtry, digest e-mailowy, aplikacja mobilna.
Przejdź ↓Integruj przez API
Dla deweloperów. REST API, webhooki, specyfikacja OpenAPI, MCP dla agentów AI.
Przejdź ↓Zacznij pracę w panelu
Nic do instalowania ani kodowania. Wystarczy przeglądarka i adres e-mail.
1. Utwórz konto
Przejdź do /register i podaj swój adres e-mail, imię i nazwisko oraz opcjonalnie czeski numer identyfikacyjny firmy (IČO). Jeśli podasz IČO, nazwa firmy, VAT i adres zostaną automatycznie uzupełnione z rejestru ARES.
Na razie nie ustawiaj hasła — zrobisz to w kolejnym kroku po kliknięciu linku weryfikacyjnego.
2. Zweryfikuj adres e-mail i ustaw hasło
W ciągu kilku sekund otrzymasz wiadomość e-mail z linkiem weryfikacyjnym. Kliknij go. Zostaniesz przekierowany na stronę, gdzie ustawisz hasło (min. 8 znaków).
Po ustawieniu hasła zostaniesz zalogowany i możesz od razu przejść do panelu głównego.
3. Utwórz swój pierwszy filtr przetargów
W panelu głównym kliknij Przetargi → Nowy filtr. Filtr to zapisany zestaw kryteriów, których system używa do wysyłania Ci pasujących przetargów:
- Region — region lub kilka regionów (Praga, Czechy Środkowe, …)
- Branża — kategoria przetargu (Budownictwo, Rozwój IT, …) lub kod CPV
- Słowa kluczowe — słowa, które muszą pojawić się w tytule lub opisie (np. „remont mostu")
- Wartość — minimalna/maksymalna przewidywana wartość przetargu
Szczegółowy opis wszystkich parametrów filtrów znajdziesz w dokumentacji Lead Watcheró
4. Włącz codzienny digest e-mail
Każdy filtr może mieć codzienny digest e-mail. Każdego dnia o godzinie 7:00 otrzymujesz wiadomość e-mail z przetargami dodanymi tego dnia, które odpowiadają Twojemu filtrowi.
Digest jest przełączany w szczegółach filtra — przełącznik „Digest e-mail" u góry. Możesz mieć wiele filtrów, każdy z własnym ustawieniem digestu.
REST API
Jeśli potrzebujesz danych w sposób programowy — np. aby przesłać je do swojego systemu ERP lub CRM — skorzystaj z REST API. Wszystkie punkty końcowe znajdują się pod /api/v2, uwierzytelnianie odbywa się za pomocą klucza API. Większość punktów końcowych zwraca JSON w kopercie z pojedynczym kluczem 'data'; wyjątkami są faktury PDF (binarne), eksport dopasowań (CSV/XLSX, chyba że ustawisz format=json) oraz podgląd dokumentu (przekierowanie 302 do podpisanego URL).
Hello world
Z kluczem wywołanie wygląda następująco:
curl -H "X-Api-Key: mrw_live_…" \ "https://veritra.io/api/v2/leads/tenders/search?qText=bridge%20reconstruction&limit=5"
Zwraca JSON z najnowszymi otwartymi przetargami. Pełne parametry wyszukiwania znajdują się w dokumentacji Lead Watcher"
Jak uzyskać klucz
Twój pierwszy klucz API jest tworzony przez panel: zarejestruj się w wersji webowej, zweryfikuj adres e-mail, a następnie w Ustawienia → Integracje kliknij „Wygeneruj klucz". Klucz jest pokazywany tylko raz — zapisz go natychmiast (np. w zmiennych środowiskowych lub magazynie sekretów). Jeśli go utracisz, utwórz nowy i usuń stary.
Używanie klucza z klientami MCP (Claude Desktop, Cursor, …)
Klucz jest taki sam jak dla REST API. Różni się jedynie sposób, w jaki klient go wysyła: serwer MCP działa pod adresem /api/mcp, a klucz przekazywany jest w nagłówku uzgadniania X-Api-Key. Pełna konfiguracja dla Claude Desktop, Cursor oraz ogólnych klientów HTTP znajduje się w dokumentacji MCP.
Uwierzytelnianie
Wszystkie punkty końcowe /api/v2 uwierzytelniają się za pomocą jednego klucza API (format mrw_live_HEX64). Klucz można przekazać jako nagłówek X-Api-Key lub jako token Bearer:
# header X-Api-Key curl -H "X-Api-Key: mrw_live_…" https://veritra.io/api/v2/account/me # nebo Bearer (kompatibilní s OpenAPI client generators) curl -H "Authorization: Bearer mrw_live_…" https://veritra.io/api/v2/account/me
Klucz niesie ze sobą tożsamość użytkownika. To, które usługi może wywoływać, jest określone przez subskrypcję (patrz sekcja Subskrypcje). Możesz mieć do 5 aktywnych kluczy — przydatne do rozdzielenia środowisk prod / dev / per-system.
Koperta odpowiedzi
Wszystkie punkty końcowe v2 zwracają ujednoliconą kopertę JSON. Pojedynczy zasób pod kluczem data, listy paginowane pod data + pagination, błędy pod error.
Sukces
// Pojedynczy zasób
{ "data": { "id": "…", "field": "…" } }
// Lista paginowana
{
"data": [{ "…": "…" }],
"pagination": { "nextCursor": "abc123…", "totalCount": 42 }
}Błąd
{
"error": {
"code": "VALIDATION_ERROR",
"message": "Field 'url' must be a valid HTTPS URL.",
"details": { "field": "url" }
}
}Stabilne kody błędów: UNAUTHORIZED, FORBIDDEN, NOT_FOUND, VALIDATION_ERROR, CONFLICT, RATE_LIMITED, ENTITLEMENT_REQUIRED, INTERNAL. Klienci powinni rozgałęziać się na podstawie code, nie message — status HTTP jest automatycznie mapowany na kod.
Limity zapytań
| Parametr | Typ | Opis |
|---|---|---|
| Account API — odczyt | 60/min, 5 000/dzień | GET na /api/v2/account/* |
| Account API — zapis | 10/min, 200/dzień | POST, PUT, PATCH, DELETE |
| Service APIs | 100/h/klucz | Miesięczny limit zależy od usługi — patrz dokumentacja usługi |
W przypadku przekroczenia limitu API zwraca HTTP 429 z nagłówkiem Retry-After (sekundy).
Okres próbny i rozliczenia
Po utworzeniu konta otrzymujesz 7-dniowy bezpłatny okres próbny usługi Lead Watcher — bez karty, bez profilu rozliczeniowego. Po jego zakończeniu wymagana jest karta płatnicza lub opłacona faktura proforma, w przeciwnym razie usługa przechodzi w tryb SUSPENDED a kolejne wywołania zwracają 403. Bez pakietów poziomów — płatność za usługę, rezygnacja w dowolnym momencie.
Account API
Zarządzanie kontem, kluczami, rozliczeniami i webhookami. Wszystkie punkty końcowe /api/v2/account/* wymagają uwierzytelnienia kluczem.
/api/v2/account/meOdpowiednik /profile + /subscriptions + informacje o apiKey. Przydatne podczas początkowego ładowania w klientach UI.
{
"data": {
"account": { "email": "…", "name": "…", "company": "…", "ico": "…", "country": "CZ", "locale": "cs", "isComplete": true },
"subscriptions": [
{ "service": "LEADS", "scope": "CZ", "state": "ACTIVE", "tier": "PAID", "trialEndsAt": null, "paidUntil": "2026-06-30T22:00:00.000Z", "cancelAtPeriodEnd": false }
],
"apiKey": { "keyPrefix": "mrw_live_7fa7785c", "lastUsedAt": "…", "requestsMonth": 120, "requestsLimit": 500 }
}
}/api/v2/account/profile/api/v2/account/profileHasło i sesja
/api/v2/account/password/api/v2/account/password/api/v2/account/sessions/revokeKlucze API
Klucz uwierzytelnia się względem całego API. Możesz mieć maksymalnie 5 aktywnych kluczy. Surowy klucz jest zwracany wyłącznie przy tworzeniu lub rotacji — później można go uzyskać jedynie poprzez utworzenie nowego.
/api/v2/account/keys/api/v2/account/keys{ "label": "Production ERP" }{
"data": {
"id": "cm…",
"key": "mrw_live_<hex64>",
"keyPrefix": "mrw_live_7fa7785c",
"label": "Production ERP",
"createdAt": "…"
}
}Klucz w odpowiedzi jest dostępny w pełnej formie tylko tutaj. Serwer przechowuje wyłącznie skrót SHA-256; surowego klucza nie można odzyskać później. W razie utraty utwórz nowy i usuń stary.
/api/v2/account/keys/:id/api/v2/account/keys/:id/api/v2/account/keys/:id/api/v2/account/keys/:id/rotateSubskrypcje usług
Aktywacja wersji próbnej, przegląd stanu, zaplanowane anulowanie przy paidUntil/trialEndsAt. Aby aktywować płatną kartę, użyj /billing/checkout.
/api/v2/account/subscriptions/api/v2/account/subscriptions{ "service": "LEADS", "scope": "CZ", "mode": "trial" }/api/v2/account/subscriptions/batch{ "service": "LEADS", "scopes": ["CZ","SK","DE"], "mode": "trial" }/api/v2/account/subscriptions/:service{ "cancelAtPeriodEnd": true }Użycie API
Dzienny agregat wywołań klucza API z ostatnich N dni (domyślnie 30). Służy do monitorowania zużycia limitu zapytań.
/api/v2/account/usage?days=30Rozliczenia
/api/v2/account/billing/api/v2/account/billing/api/v2/account/billing/checkout/api/v2/account/billing/customer-portal/api/v2/account/billing/proforma{ "cycle": "MONTHLY", "currency": "CZK", "scopes": ["CZ","SK"] }/api/v2/account/billing/invoices/api/v2/account/billing/invoices/:invoiceIdEksport danych (RODO)
/api/v2/account/export/api/v2/account/exportZamknięcie konta
/api/v2/account/cancel/request{ "action": "DEACTIVATE" }/api/v2/account/cancel/confirmWebhooki
Webhooki na poziomie konta — jeden punkt końcowy obejmuje wszystkie filtry i przyszłe usługi. Każde zdarzenie zawiera sygnaturę HMAC-SHA256 w X-Signature-256, klucz idempotentności w X-Idempotency-Key oraz typ w X-Event-Type. Ponowne próby z wykładniczym opóźnieniem do ~33 h.
Maksymalnie 5 punktów końcowych na konto. Obsługiwane zdarzenia i schematy ładunków są udokumentowane dla każdej usługi.
/api/v2/account/webhooks/api/v2/account/webhooks{
"url": "https://yourapp.cz/api/veritra-webhook",
"enabledEvents": ["leads.match.created"],
"description": "production"
}/api/v2/account/webhooks/:id/api/v2/account/webhooks/:id/api/v2/account/webhooks/:id/api/v2/account/webhooks/:id/rotate-secretPowiadomienia
/api/v2/account/notifications/api/v2/account/notificationsOpinie
/api/v2/feedbackSpecyfikacja OpenAPI 3.1
Pełna, czytelna maszynowo specyfikacja API znajduje się pod adresem /openapi.json. Użyj jej do automatycznego generowania typowanych klientów w dowolnym języku (TypeScript, Python, Go, Rust, …) lub do importu do Postman / Insomnia / Swagger UI.
# Generate TypeScript client npx openapi-typescript https://veritra.io/openapi.json -o ./veritra-types.ts # Generate Python client (openapi-python-client) openapi-python-client generate --url https://veritra.io/openapi.json
Kody błędów
| Kod | Znaczenie |
|---|---|
| 400 | Brakujące pole, nieprawidłowy JSON, nieprawidłowy format |
| 401 | Brak X-Api-Key / Bearer, wygasły lub nieprawidłowy token |
| 402 | Brak aktywnej subskrypcji dla usługi |
| 403 | Token nie należy do tego konta lub usługa jest w wersji beta bez listy dozwolonych |
| 404 | Klucz / token / endpoint nie został znaleziony |
| 409 | E-mail już zarejestrowany / klucz już istnieje / limit endpointów (5) / limit filtrów (20) |
| 410 | Token lub kod wygasł albo został już wykorzystany |
| 412 | E-mail niezweryfikowany — krok 2 nie został jeszcze ukończony |
| 429 | Limit zapytań (nagłówek Retry-After) |
| 500 | Błąd serwera |
Dostępne usługi API
Account API (powyżej) jest wspólne dla wszystkich — onboarding, klucze, rozliczenia, webhooki. Dane specyficzne dla domeny znajdują się w dedykowanych API:
Lead Watcher
Przetargi ze wszystkich głównych portali — filtry, codzienny skrót, REST API i webhooki
Ceny w budownictwie
Punkty cenowe dla pozycji budowlanych — średnia, min/max z kontraktów
Zamówienia publiczne
Programowe składanie ofert na portalach (NEN, E-ZAK, TenderArena)
MCP — dla agentów AI
Połącz Claude Desktop lub własnego agenta LLM przez narzędzia JSON-RPC
Pytania? michal@veritra.io