API dla deweloperów
Uwierzytelnione REST API do danych o kolejkach SOR, katalogu placówek medycznych, oddziałach szpitali i świadczeniach NFZ. Wymaga konta i klucza API. Anonimowe zapytania są odrzucane. Istniejące endpointy SOR (/hospitals, /regions, /analytics) oraz wcześniejsze katalogowe (/facilities, /medical-sites, /catalog) zachowują dotychczasowy kształt odpowiedzi — nowe pola (np. org_units) są wyłącznie addytywne. Pełna dokumentacja z testerem na żywo: /developer.
Autoryzacja
Każde zapytanie musi zawierać dwa nagłówki: X-Api-Key (publiczny identyfikator) i X-Api-Secret (sekret utworzony razem z kluczem). Sekret pokazujemy tylko raz — przy generowaniu. Przechowuj go po stronie serwera (nie w kodzie frontendu, nie w repozytorium).
X-Api-Key: sor_live_XXXXXXXX
X-Api-Secret: <sekret z panelu>curl -H "X-Api-Key: $KEY" \
-H "X-Api-Secret: $SECRET" \
https://kolejkisor.pl/api/public/hospitalsawait fetch("https://kolejkisor.pl/api/public/hospitals", {
headers: {
"X-Api-Key": process.env.SOR_KEY,
"X-Api-Secret": process.env.SOR_SECRET,
},
}).then(r => r.json());import requests, os
r = requests.get(
"https://kolejkisor.pl/api/public/hospitals",
headers={
"X-Api-Key": os.environ["SOR_KEY"],
"X-Api-Secret": os.environ["SOR_SECRET"],
})
r.raise_for_status()
print(r.json())Limity i plany
Limity są wymuszane serwerowo. Po każdym zapytaniu odpowiedź zawiera nagłówki informacyjne:
X-RateLimit-Limit— max zapytań na minutęX-RateLimit-Remaining— pozostałe w bieżącej minucieX-RateLimit-Reset— timestamp unix, kiedy okno się odnowiX-Daily-Limit/X-Daily-Used— kwota dzienna i zużycieRetry-After— sekund do ponownej próby (przy 429)
| Plan | Cena | Requesty / dzień | Req / min | Klucze | Historia |
|---|---|---|---|---|---|
| Starter | 0 zł | 50 | 10 | 1 | — |
| Analityk | 9,99 zł / mies. | 2000 | 60 | 3 | 30 dni |
| Instytucja | 29,99 zł / mies. | 20 000 | 300 | 10 | 365 dni |
Endpointy
/api/public/hospitalsStarterLista aktywnych SOR-ów (jednostki kolejkowe). Parametr: ?voivodeship=
/api/public/hospitals/nearest?lat=&lon=&limit=StarterNajbliższe SOR-y względem współrzędnych WGS84.
/api/public/hospitals/{id}/currentStarterAktualne kolejki dla SOR-u (per priorytet triage).
/api/public/hospitals/{id}/history?from=&to=Analityk+Historia pomiarów w oknie ISO. Wymaga planu Analityk+.
/api/public/facilitiesInstytucja+Katalog kanonicznych szpitali (nie mylić z /hospitals). Parametry: ?q=&city=&voivodeship=&hasSor=yes|no&hasNfz=yes|no&page=. Wymaga planu Instytucja.
/api/public/facilities/{id}Instytucja+Szczegóły szpitala: ścieżka publiczna, powiązane SOR-y, lista świadczeń NFZ, oddziały/jednostki medyczne (org_units). Wymaga planu Instytucja.
/api/public/facilities/{id}/org-unitsInstytucja+Same oddziały i jednostki medyczne szpitala (RPWDL + powiązania NFZ). Wymaga planu Instytucja.
/api/public/medical-sitesInstytucja+Katalog placówek niebędących szpitalami (POZ/AOS itd.). Parametry: ?q=&city=&voivodeship=&capability=&hasNfz=yes|no&page=. Wymaga planu Instytucja.
/api/public/medical-sites/{id}Instytucja+Szczegóły placówki: kompetencje, świadczenia NFZ (eligible). Wymaga planu Instytucja.
/api/public/catalogInstytucja+Zunifikowany katalog (szpitale + placówki). Parametry: ?q=&city=&voivodeship=&type=hospital|site&hasSor=yes|no&capability=&benefit=&page=. Wymaga planu Instytucja.
/api/public/benefitsInstytucja+Katalog świadczeń NFZ. Parametry: ?q=&category=&voivodeship=&city=&featuredOnly=1&sort=&page=. Wymaga planu Instytucja.
/api/public/benefits/{slug}Instytucja+Szczegóły świadczenia + oferty (czasy oczekiwania, lat/lon). Parametry: ?voivodeship=&city=&lat=&lon=&radiusKm=&sort=wait|distance&limit=. Wymaga planu Instytucja.
/api/public/regionsStarterAgregaty per województwo (mediana, średnia, trend 3h).
/api/public/regions/{voivodeship}StarterRanking SOR-ów w województwie wraz z indeksem obciążenia.
/api/public/citiesStarterAgregaty obciążenia SOR-ów per miasto.
/api/public/analytics/heatmap?voivodeship=&city=Instytucja+Heatmapa 7×24 obciążenia. Wymaga planu Instytucja.
/api/public/analytics/rankingsInstytucja+Ranking krajowy z metrykami. Wymaga planu Instytucja.
Kody błędów
| HTTP | Kod | Znaczenie |
|---|---|---|
| 401 | unauthorized | Brakuje nagłówków X-Api-Key / X-Api-Secret. |
| 401 | invalid_key | Klucz nie istnieje w systemie. |
| 401 | invalid_secret | Sekret nie pasuje do klucza. |
| 401 | revoked_key | Klucz został unieważniony w panelu. |
| 403 | plan_upgrade_required | Twój plan nie obejmuje tego endpointu. |
| 429 | rate_limited | Przekroczono limit minutowy — spróbuj później. |
| 429 | daily_quota_exceeded | Przekroczono dzienny limit planu. |
| 500 | server_error | Wewnętrzny błąd — zgłoś na support. |
Struktura odpowiedzi błędu: {"error":{"code":"...","message":"..."}}