Rejestry API
Jedno API do siedmiu polskich rejestrów publicznych. Jedna koperta odpowiedzi, jedno uwierzytelnianie, jeden sposób obsługi błędów — zamiast siedmiu integracji, siedmiu formatów dat i siedmiu sposobów mówienia „nie wiem”.
| Rejestr | Co daje | Endpoint | Stan |
|---|---|---|---|
| KRS | odpis aktualny i pełny, reprezentacja, kapitał | /v1/krs/{identifier} |
GA |
| Biała lista VAT | status VAT, rachunki, weryfikacja przelewu | /v1/vat/{nip} |
GA |
| REGON / GUS | tożsamość, adres, PKD (fallback CEIDG) | /v1/regon/{identifier} |
GA |
| CRBR | beneficjenci rzeczywiści | /v1/crbr/{nip} |
GA |
| BZP | zamówienia publiczne (wykonawca i zamawiający) | /v1/bzp/{nip} |
GA |
| SUDOP | pomoc publiczna i de minimis | /v1/sudop/{nip} |
GA |
| Agregat | tożsamość + VAT + KRS jednym zapytaniem | /v1/subjects/{identifier} |
GA |
Pierwsze zapytanie w 5 minut
1. Klucz
Klucz wydajemy ręcznie — złóż wniosek w sekcji
Uzyskaj dostęp (albo napisz na
kontakt@debtstrike.eu).
Dostajesz dwa: ds_test_… (piaskownica, nie rusza
rejestrów, nie zużywa kwoty) i ds_live_… (dane
produkcyjne). Sekret pokazujemy raz — u nas w bazie
jest tylko jego skrót.
2. Zapytanie
curl -s https://api.debtstrike.eu/v1/vat/5252344078 \
-H "Authorization: Bearer ds_live_TWOJ_KLUCZ"
3. Odpowiedź
{
"apiVersion": "v1",
"requestId": "01KYFPKKTXD5ENZ1Q69TYC6PDK",
"status": "found",
"subject": {
"nip": "5252344078", "regon": "140182840", "krs": "0000240611",
"countryCode": "PL", "resolvedVia": "direct"
},
"source": {
"id": "vat", "name": "Wykaz podatników VAT (biała lista)",
"authority": "Ministerstwo Finansów", "official": true,
"endpoint": "https://wl-api.mf.gov.pl/api", "availability": "ga"
},
"data": {
"nip": "5252344078",
"name": "GOOGLE POLAND SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"statusVat": "Czynny",
"regon": "140182840",
"krs": "0000240611",
"accountNumbers": ["61109000040000000143936780"],
"registrationLegalDate": "2005-10-06"
},
"meta": {
"cache": { "hit": true, "storedAt": "2026-07-26T16:25:17.000Z",
"expiresAt": "2026-07-27T16:25:17.000Z" },
"stale": false,
"billed": 1,
"attribution": "Źródło: Wykaz podatników VAT (biała lista) (Ministerstwo Finansów), stan na 2026-07-26, …"
},
"timestamps": {
"requestedAt": "2026-07-26T17:12:19.552Z",
"sourceFetchedAt": "2026-07-26T16:25:17.000Z",
"validAsOf": "2026-07-26"
},
"warnings": []
}
4. Trzy rzeczy, które warto zrozumieć od razu
Czytaj status, nie kod HTTP
HTTP 200 mówi tylko, że zapytanie zostało obsłużone.
O danych mówi status w kopercie.
Szczegóły.
Zapisz requestId
Jest w każdej odpowiedzi, także w błędzie. Po nim odtworzymy Twoje zapytanie z audytu — to jedyna rzecz, o którą poprosimy przy reklamacji.
Użyj validAsOf, nie czasu pobrania
Rejestry mają własny stan na dzień.
timestamps.validAsOf mówi, na kiedy dane są ważne w
rejestrze — a nie kiedy je pobraliśmy.
Publikujesz dane? Weź attribution
Gotowa nota o źródle. Ustawa o otwartych danych wymaga jej przy ponownym wykorzystaniu — składamy ją za Ciebie.
Uwierzytelnianie
Klucz w nagłówku Authorization, schemat Bearer:
Authorization: Bearer ds_live_eH9vE1TxL6IrfAqU9Xh8Ja0U
| Cecha | Zachowanie |
|---|---|
| Prefiks |
ds_live_ — dane z rejestrów ·
ds_test_ — piaskownica
|
| Przechowywanie |
W bazie tylko sha256(pieprz + sekret). Zgubionego
sekretu nie odzyskamy — wydajemy nowy.
|
| Zakresy |
Klucz ma listę źródeł. Zapytanie o źródło spoza listy →
403 source_not_in_plan.
|
| Allowlista IP |
Opcjonalna, per klucz. Spoza listy →
403 ip_not_allowed.
|
| Odwołanie |
Natychmiastowe, bez restartu usługi. Odwołany klucz →
401 key_revoked.
|
| Rotacja | Wydajemy drugi klucz, przepinasz ruch, dopiero potem odwołujemy pierwszy — bez okna niedostępności. |
Piaskownica. Klucz ds_test_ zwraca
dane przykładowe o tym samym kształcie co produkcja i
nigdy nie dotyka rejestrów. Integrację możesz
napisać i przetestować, nie zużywając ani jednostki kwoty i nie
obciążając limitów rejestru.
Koperta odpowiedzi
Każde źródło odpowiada tą samą strukturą. Zmienia się wyłącznie
zawartość data. Dzięki temu obsługę błędów, cache i
audytu piszesz raz, a nie siedem razy.
| Pole | Znaczenie |
|---|---|
apiVersion |
Zawsze "v1" w tej wersji. |
requestId |
ULID zapytania. Do reklamacji i korelacji z Twoimi logami. |
status |
found · not_found ·
unavailable · forbidden ·
invalid_input
|
subject |
Znormalizowana tożsamość: nip, regon,
krs plus resolvedVia — czym dotarliśmy
do podmiotu (direct, mf_whitelist,
gus_bir).
|
source |
Który rejestr odpowiedział, jaki organ go prowadzi, czy jest oficjalny. |
data |
Dane źródła.
null zawsze, gdy status ≠
found
— nie ma stanów pośrednich.
|
meta.cache |
hit, storedAt, expiresAt.
|
meta.stale |
true = rejestr milczał, oddaliśmy ostatnie znane
dane. Patrz niżej.
|
meta.billed |
Ile jednostek pakietu zdjęła ta odpowiedź: 1 albo
0. Nigdy więcej — patrz
Jak liczymy zapytania.
|
meta.attribution |
Gotowa nota o źródle (wymóg ustawy o otwartych danych). |
timestamps.validAsOf |
Stan danych w rejestrze — to jest data, którą pokazujesz użytkownikowi. |
timestamps.sourceFetchedAt |
Kiedy my pobraliśmy. Przy trafieniu w cache starsze niż
requestedAt.
|
warnings[] |
Lista {code, message}. Nie błędy — zastrzeżenia do
interpretacji. Czytaj je.
|
not_found kontra unavailable
To jest miejsce, w którym różnimy się od proxy na rejestry — i jedyna rzecz z tej dokumentacji, którą naprawdę warto przeczytać uważnie.
not_found |
unavailable |
|
|---|---|---|
| Co się stało | Rejestr odpowiedział: nie mam takiego podmiotu | Rejestr nie odpowiedział (awaria, timeout, limit) |
| Co wiesz | Fakt. Wiedza negatywna, potwierdzona przez organ | Nic. Brak wiedzy |
| Wolno oprzeć decyzję? | Tak | Nie — ponów później |
| HTTP | 200 |
200 |
data |
null |
null albo dane z cache, gdy
meta.stale = true
|
Najczęstszy błąd integracji. Potraktowanie obu
przypadków jako „brak danych” i pokazanie użytkownikowi „firma nie
istnieje”. Przy unavailable to jest
nieprawda — to my nie wiemy. Zwykłe proxy nie robi tego
rozróżnienia, bo zwraca pustkę i zostawia Cię z pytaniem, co ona
znaczy.
Tryb degradacji
Gdy rejestr milczy, a mamy dane w cache, zwracamy je z
meta.stale = true i meta.degraded.reason. To
świadoma decyzja: lepiej oddać wczorajszy odpis z etykietą
„wczorajszy”, niż nie oddać nic.
Nie udajemy jednak, że są świeże —
timestamps.sourceFetchedAt mówi prawdę.
Limit rejestru nigdy nie przecieka na Ciebie. Biała
lista MF blokuje IP po 100 zapytaniach wyszukujących na dobę. Gdy
zbliżamy się do progu, dostajesz stale albo
unavailable — nie 429.
Kod 429 oznacza wyłącznie Twój własny limit.
Jak liczymy zapytania
Jedno zapytanie = jedna jednostka pakietu. Nie ma
mnożników: ani za źródło, ani za świeżość, ani za certyfikat. Nie
musisz nic przeliczać, żeby wiedzieć, ile Ci zostało —
meta.billed w każdej odpowiedzi mówi to wprost.
Zasada, z której wynika cała reszta: płacisz za odpowiedź z rejestru, nie za próbę.
| Sytuacja | Liczy się | Dlaczego |
|---|---|---|
Odpowiedź ok — dane zwrócone |
1 | Oczywiste. |
Odpowiedź not_found |
1 | To odpowiedź, nie błąd. Kosztowała odpytanie rejestru i ma wartość informacyjną: wiedza negatywna potwierdzona przez organ. |
Odpowiedź z cache (bez fresh) |
1 | Dostałeś wynik. Skąd go wzięliśmy, to nasza sprawa — i nasza oszczędność. |
unavailable — rejestr milczy |
0 | Nie obciążamy za cudzą awarię. |
Błąd 5xx po naszej stronie |
0 | Nie obciążamy za własną awarię. |
Błąd 400 — walidacja |
0 | Integracja musi być tania w nauce. |
Błąd 401 / 403 |
0 | — |
Błąd 429 — limit |
0 | Kara już jest, nie podwajamy jej. |
| Zapytanie o N źródeł (agregat) | N | Każde źródło to osobne odpytanie rejestru. |
| Paczka N podmiotów | N | Każdy podmiot to osobna odpowiedź, którą dostajesz i na której możesz oprzeć decyzję. |
| Certyfikat do zapytania | 0 | Nie jest osobnym zapytaniem — patrz Certyfikaty. |
Zapytanie kluczem ds_test_ |
0 | Klucze testowe nie zużywają pakietu i mają osobny limit dzienny. Patrz niżej. |
Klucze testowe (piaskownica)
Klucze testowe nie zużywają pakietu i mają osobny limit
dzienny.
Klucz ds_test_ zwraca stałe dane z próbki, nie rusza
rejestrów i nie zdejmuje ani jednej jednostki — w kopercie zobaczysz
"billed": 0. Obowiązuje go za to własny sufit:
500 zapytań na dobę (do północy UTC) i
2 zapytania na sekundę. Stan sufitu niosą nagłówki
RateLimit-Sandbox-Limit i
RateLimit-Sandbox-Remaining; po jego przekroczeniu
dostajesz 429 quota_exceeded.
Cel jest prosty: integracja ma być darmowa w nauce, ale na kluczu testowym nie da się pracować produkcyjnie — dane w piaskownicy są zamrożone i nieprawdziwe.
Sprawdź to sam. Sto zapytań o CRBR z
fresh=true i certyfikatem zdejmie z pakietu dokładnie
100, nie 3000. Ta liczba jest pilnowana testem
akceptacyjnym, nie deklaracją w cenniku.
Limity i świeżość
Trzy niezależne warstwy. Dwie pierwsze mogą zakończyć się kodem
429. Trzecia — nigdy.
| Warstwa | Nagłówki | Co znaczy wyczerpanie | Co robić |
|---|---|---|---|
| Limit chwilowy token bucket |
RateLimit-LimitRateLimit-RemainingRateLimit-Reset
|
Za dużo zapytań na sekundę |
Poczekaj RateLimit-Reset sekund. Wiadro napełnia
się samo.
|
| Pakiet miesięczny |
RateLimit-Quota-LimitRateLimit-Quota-UsedRateLimit-Quota-RemainingRateLimit-Quota-Reset
|
Pakiet wyczerpany. W planach z nadwyżką API pracuje dalej — do twardego sufitu 3× pakiet, po którym blokuje. | Czekanie nie pomoże: pakiet odnawia się w nowym okresie (miesiąc UTC). |
| Udział świeżych pobrań |
RateLimit-Fresh-LimitRateLimit-Fresh-RemainingX-DS-Freshness
|
Wyczerpany udział fresh=true w pakiecie |
Nic. Odpowiedzi lecą dalej, tylko z cache. |
RateLimit-Limit: 20
RateLimit-Remaining: 18
RateLimit-Reset: 4
RateLimit-Quota-Limit: 4000
RateLimit-Quota-Used: 1182
RateLimit-Quota-Remaining: 2818
RateLimit-Quota-Reset: 388800
RateLimit-Fresh-Limit: 800
RateLimit-Fresh-Remaining: 611
Twardy sufit nadwyżki
Po przekroczeniu pakietu zapytania idą na nadwyżkę, rozliczaną z dołu — ale nie w nieskończoność. Sufit to 3× pakiet, po nim API blokuje i wysyła alert. Blokada jest celowa: chroni Cię przed rachunkiem bez dna po błędzie w pętli. Ostrzegamy wcześniej — przy 80% i 100% pakietu, potem przy 200% i 300%.
Świeżość: ?fresh=true
fresh=true pomija cache i idzie do rejestru.
Nie kosztuje więcej — ma za to własny udział w
pakiecie. Po jego wyczerpaniu zapytanie nie jest odrzucane:
obsługujemy je z cache i mówimy o tym wprost.
HTTP/1.1 200 OK
X-DS-Freshness: degraded
RateLimit-Fresh-Remaining: 0
{
"status": "found",
"meta": { "billed": 1, "cache": { "hit": true } },
"timestamps": { "validAsOf": "2026-07-26" },
"warnings": [
{ "code": "fresh_degraded",
"message": "Wyczerpany udział świeżych pobrań w pakiecie — odpowiedź pochodzi z cache." }
]
}
Dlaczego degradujemy, a nie blokujemy. To
ograniczenie chroni rejestry publiczne przed przeciążeniem, a nie
nasz portfel. Odcięcie Cię od danych byłoby karą wymierzoną nie tam,
gdzie jest problem. Dane dostajesz zawsze —
timestamps.validAsOf mówi, jak świeże są naprawdę.
Błędy
Błędy transportu i autoryzacji zwracamy w formacie
RFC 9457 (application/problem+json).
Brak danych w rejestrze nie jest błędem — to
200 z status: not_found.
HTTP/1.1 401 Unauthorized
Content-Type: application/problem+json
{
"type": "https://api.debtstrike.eu/errors/invalid-key",
"title": "Nieprawidłowy lub odwołany klucz API",
"status": 401,
"code": "invalid_key",
"detail": "Nieprawidłowy format klucza API.",
"requestId": "01KYFPM6DWBAY31GYT46C8FNEF"
}
| HTTP | code |
Znaczenie |
|---|---|---|
| 400 | invalid_identifier |
To nie jest NIP, KRS ani REGON. |
| 401 | invalid_key |
Brak nagłówka, zły format lub nieznany klucz. |
| 401 | key_revoked |
Klucz odwołany. |
| 403 | ip_not_allowed |
Adres spoza allowlisty klucza. |
| 403 | source_not_in_plan |
Źródło spoza zakresów klucza. |
| 404 | unknown_endpoint |
Nie ma takiego zasobu. |
| 413 | payload_too_large |
Przekroczony limit pozycji w zapytaniu zbiorczym. |
| 422 | index_does_not_cover_date |
Indeks pliku płaskiego nie obejmuje wskazanego dnia. |
| 429 | rate_limited |
Limit chwilowy — ponów za RateLimit-Reset s. |
| 429 | quota_exceeded |
Wyczerpana kwota miesięczna. |
| 500 | internal_error |
Nasz błąd. Zgłoś z requestId. |
Awaria rejestru nigdy nie jest kodem 5xx. Gdy
źródło padnie, dostajesz 200 ze
status: unavailable albo dane stale. Kod
500 oznacza wyłącznie błąd po naszej stronie i jest
zawsze błędem do zgłoszenia.
Wersjonowanie
Wersja siedzi w ścieżce: /v1/…. W obrębie
v1 zobowiązujemy się, że:
-
możemy dodać pole w
data, nową wartość wwarnings[].code, nowe źródło i nowy endpoint; - nie usuniemy istniejącego pola ani nie zmienimy jego znaczenia;
-
nie zmienimy wartości
statusani kodów błędówcode.
Zmiana łamiąca kontrakt oznacza /v2 wystawione
obok /v1, nie podmianę. Twój parser ma
ignorować nieznane pola — to jedyne założenie, o które prosimy.
KRS API
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: KRS API.
API białej listy VAT
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: API białej listy VAT.
API REGON / GUS
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: API REGON / GUS.
CRBR API
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: CRBR API.
BZP API
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: BZP API.
SUDOP API
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: SUDOP API.
Agregat podmiotu
Pełna dokumentacja tego źródła — parametry, przykłady odpowiedzi, limity i semantyka — jest na osobnej stronie: Agregat podmiotu.
Zapytania zbiorcze
Status VAT dla wielu NIP-ów
curl -s https://api.debtstrike.eu/v1/batch/vat \
-H "Authorization: Bearer ds_live_TWOJ_KLUCZ" \
-H "Content-Type: application/json" \
-d '{"nips":["5252344078","7740001454"],"date":"2026-07-26"}'
Maksimum 30 NIP-ów. MF liczy to jako jedno zapytanie
i my też — koszt 1 jednostki niezależnie od liczby podmiotów. Powyżej
30 pozycji: 413.
Weryfikacja wielu rachunków
{
"pairs": [
{ "nip": "5252344078", "account": "61109000040000000143936780" }
],
"date": "2026-07-26"
}
Maksimum 200 par. Odpowiada wyłącznie z naszego indeksu pliku płaskiego, więc nie zużywa limitów MF — koszt 1 jednostki.
Wynik not_confirmed to nie to samo co „rachunek nie
należy”.
Oznacza brak potwierdzenia w pliku (np. rachunek wirtualny opisany
maską). Po odpowiedź definitywną użyj pojedynczego
GET /v1/vat/{nip}/bank-account/{account}, który
dopytuje API MF. Ta różnica jest w odpowiedzi powtórzona jako
ostrzeżenie.
Rozliczenie paczki. Każde sprawdzenie to jedna
jednostka —
paczka 50 NIP-ów = 50 zapytań, niezależnie od wyniku
sprawdzenia. „Niepotwierdzone" liczy się tak samo jak „potwierdzone", bo jedno
i drugie jest odpowiedzią. Zero kosztują wyłącznie pozycje odrzucone
na walidacji (invalid_input) — tak samo jak
400 na pojedynczym zapytaniu.
Gdy indeks nie obejmuje wskazanego dnia, dostajesz
422 index_does_not_cover_date zamiast cichego zgadywania.
Aktualny dzień indeksu sprawdzisz w
katalogu źródeł.
Certyfikaty zapytań
Dodaj ?certificate=true do dowolnego zapytania, a
zamrozimy odpowiedź i policzymy jej odcisk HMAC. Dostajesz
identyfikator, adres i sam odcisk w meta.certificate.
Do czego to służy: dowód, że o tej godzinie rejestr odpowiedział dokładnie tak. Przydaje się w audycie, w sporze z kontrahentem i wszędzie tam, gdzie trzeba wykazać należytą staranność — np. że w dniu przelewu rachunek widniał na białej liście.
Bez dopłaty, w każdym pakiecie. Certyfikat nie jest osobnym zapytaniem i nie zużywa dodatkowej jednostki — to ten sam, już rozliczony fakt z rejestru, tylko zamrożony i podpisany. Liczba certyfikatów jest z natury ograniczona liczbą zapytań w pakiecie, więc nie potrzebuje osobnego limitu.
Certyfikat wystawiamy wyłącznie dla odpowiedzi ze statusem
found; przy not_found dostajesz ostrzeżenie
certificate_skipped. Wymagany jest zakres
certificate przy kluczu.
Jak długo żyją
Certyfikaty są poza retencją, która po 90 dniach czyści cache, a po 400 dniach audyt — w trakcie trwania umowy nie usuwa ich nic. Po jej rozwiązaniu pozostają dostępne do pobrania przez 12 miesięcy, a potem są usuwane. To celowy kompromis: „na zawsze” nie miałoby podstawy prawnej ani końca, a skasowanie ich z dnia na dzień zniszczyłoby dowody, na których klient oparł swój audyt.
Katalog źródeł
Lista źródeł z ich dostępnością, organem prowadzącym, stanem indeksów (m.in. na jaki dzień mamy plik płaski VAT i jaki zakres pokrywa indeks BZP). Pytaj o to zamiast zaszywać stałe w kodzie — dodanie źródła zobaczysz tu pierwszy.
Stan usługi
Pierwszy to liveness. Drugi mówi, na jaki dzień mamy indeks pliku
płaskiego i ile wpisów zawiera — 503 oznacza brak
indeksu, czyli że weryfikacja rachunków idzie przez API MF (wolniej i
za budżetem, ale działa).
Kontrakt OpenAPI
Pełny kontrakt w OpenAPI 3.1, dostępny bez uwierzytelniania — bo klient ma móc wygenerować sobie SDK, nie pytając nas o nic. Przykłady w kontrakcie pochodzą z prawdziwych odpowiedzi produkcji, nie z wyobraźni.
# klient TypeScript
npx openapi-typescript https://api.debtstrike.eu/v1/openapi.json -o registry-api.d.ts
# klient dowolny (Java, C#, Go, Python…)
openapi-generator-cli generate -i https://api.debtstrike.eu/v1/openapi.json \
-g java -o ./registry-api-client
Cennik
Ceny netto miesięcznie. Wszystkie źródła są w każdym pakiecie — różnicujemy wolumenem, limitem na sekundę i udziałem świeżych pobrań, nigdy dostępem do danych.
| FREE | STARTER | PRO | ENTERPRISE | |
|---|---|---|---|---|
| Cena/mies. netto | 0 zł | 199 zł | 499 zł | indywidualnie |
| Zapytania w pakiecie | 250 | 4 000 | 15 000 | negocjowane |
| Nadwyżka za zapytanie | — (hard stop) | 0,08 zł | 0,06 zł | od 0,05 zł |
| Źródła | wszystkie 7 | wszystkie 7 | wszystkie 7 | wszystkie 7 |
| Limit zapytań/s | 2 | 5 | 20 | negocjowany |
Świeże pobrania (fresh) |
10% pakietu | 20% pakietu | 30% pakietu | negocjowane |
| Certyfikaty zapytań | ✅ bez dopłaty | ✅ bez dopłaty | ✅ bez dopłaty | ✅ bez dopłaty |
| Redystrybucja danych | ❌ tylko ewaluacja | ✅ dozwolona | ✅ dozwolona | ✅ dozwolona |
| Cache po stronie klienta | ✅ | ✅ bez ograniczeń | ✅ bez ograniczeń | ✅ bez ograniczeń |
| Wsparcie | dokumentacja | priorytetowe | dedykowane + SLA | |
| White-label | — | — | — | ✅ opcja |
| Rabat roczny (rok z góry) | — | −15% | −15% | negocjowany |
Źródła w każdym pakiecie: KRS, biała lista VAT, REGON/GUS, CEIDG, CRBR, BZP, SUDOP.
Cena roczna z rabatem: Starter 2 030 zł/rok (zamiast 2 388) · Pro 5 090 zł/rok (zamiast 5 988).
Zasady rozliczeń
Pełne brzmienie warunków: regulamin usługi.
Certyfikaty zapytań — bez dopłaty, w granicach pakietu
Każdy pakiet obejmuje certyfikaty z odciskiem HMAC — kryptograficzny dowód, że w danym momencie odpytano rejestr i otrzymano taką odpowiedź. Wartość: audyt, compliance, dowód w sporze.
Certyfikat może zostać wystawiony do każdego rozliczonego zapytania. Nie jest osobno płatny i nie zużywa dodatkowej jednostki. Liczba certyfikatów jest z natury ograniczona liczbą zapytań.
Retencja: certyfikaty są poza standardową retencją (90 dni cache, 400 dni audyt). Po rozwiązaniu umowy pozostają dostępne do pobrania przez 12 miesięcy, potem są usuwane — inaczej baza rośnie bez końca i bez podstawy prawnej.
Świeże pobrania — limit udziałowy, nie mnożnik
fresh=true omija cache i odpytuje rejestr źródłowy. To
jedyne miejsce, gdzie klient realnie zużywa cudzy limit.
- Udział w pakiecie: FREE 10%, Starter 20%, Pro 30%.
-
Po przekroczeniu udziału zapytania z
freshsą degradowane do cache z nagłówkiemX-DS-Freshness: degraded— nie odrzucane. Klient dostaje dane, tylko nie najświeższe. - Enterprise: udział negocjowany; przy wyższych progach wymagany kontakt techniczny po stronie klienta.
Ograniczenie chroni rejestry publiczne przed przeciążeniem, nie nasz portfel. Dlatego degradujemy, a nie blokujemy.
Nadwyżka — z dołu, z twardym sufitem
- Przekroczenie pakietu → nadwyżka naliczana i fakturowana z dołu, miesięcznie.
- Twardy sufit: 3× pakiet. Po osiągnięciu API blokuje zapytania i wysyła alert do klienta i do nas.
- Alerty progowe: 80% i 100% pakietu, potem 200% i 300% (sufit).
- FREE: brak nadwyżki, twardy stop na 250 zapytaniach.
Rabat roczny — −15% za płatność z góry
Płatność za rok z góry obniża cenę pakietu o 15%.
Wszystkie źródła w każdym pakiecie
Różnicujemy wolumenem, limitem na sekundę i udziałem świeżych pobrań — nigdy dostępem do danych. Dzielenie źródeł na pakiety zmusza klienta do kalkulacji i zaciera przekaz.
Redystrybucja — dozwolona od Startera
Klient może udostępniać dane swoim klientom (np. producent ERP w kartotece kontrahenta). FREE jest wyłączone: to pakiet ewaluacyjny.
Piaskownica — darmowa, ale z własnym sufitem
Klucze testowe nie zużywają pakietu i mają osobny limit
dzienny.
Klucz ds_test_* zwraca zamrożone dane z próbki, nie
odpytuje rejestrów i nie zdejmuje jednostek (meta.billed: 0). Obowiązują go własne limity:
500 zapytań na dobę (reset o północy UTC, po
przekroczeniu 429 quota_exceeded) i
2 zapytania na sekundę. Stan sufitu w nagłówkach
RateLimit-Sandbox-Limit /
RateLimit-Sandbox-Remaining.
Integrator ma się uczyć za darmo (tak samo jak darmowe są błędy 400), ale bez sufitu dałoby się na kluczu testowym mieszkać produkcyjnie.
Uzyskaj dostęp
Klucze wydajemy ręcznie, po rozmowie — ten formularz
nie zakłada konta i nie zwraca klucza. Zbieramy z niego dokładnie to,
co i tak musielibyśmy dopytać mailem: kto pyta, do czego i w jakiej
skali. Dostaniesz parę ds_test_… (piaskownica, darmowa) i
ds_live_… (dane produkcyjne).
Składając wniosek, potwierdzasz zapoznanie się z regulaminem usługi i cennikiem. Warunki wiążące ustala umowa zawierana przy wydaniu klucza produkcyjnego.
Wolisz mailem? kontakt@debtstrike.eu — napisz to samo własnymi słowami.
Nie potrzebujesz API? Sprawdź firmę w przeglądarce
Te same rejestry — KRS, biała lista VAT, REGON, CRBR, KRZ — w jednym raporcie o kontrahencie na debtstrike.eu. Bez klucza, bez integracji, pierwsza odpowiedź bez opłat i bez konta.