Dokumentacja API
REST API Calendar.lt zapewnia dostęp do litewskich świąt państwowych, imienin i informacji o konkretnych dniach. Wszystkie odpowiedzi są zwracane w formacie JSON.
Base URL: https://calendar.lt/api/v1
Uwierzytelnianie
Każde żądanie musi zawierać ważny klucz API. Klucz można przekazać na trzy sposoby:
Nagłówek X-API-Key (zalecane)
GET /api/v1/name-days?date=2026-03-19 HTTP/1.1 Host: calendar.lt X-API-Key: clt_your_api_key_here
Nagłówek Authorization: Bearer
Authorization: Bearer clt_your_api_key_here
Parametr zapytania (tylko do testów)
GET /api/v1/name-days?date=2026-03-19&api_key=clt_your_api_key_here
Zalecamy używanie nagłówka X-API-Key. Nigdy nie ujawniaj klucza publicznie.
Punkty końcowe
/api/v1/laisvadienis
Publiczny
Publiczny punkt końcowy — klucz API nie jest wymagany. Zwraca true, jeśli podana data jest dniem wolnym od pracy na Litwie (niedziela lub święto państwowe), lub false w przeciwnym razie.
Zwraca również pole shorter_workday — zgodnie z art. 113 litewskiego Kodeksu pracy dzień roboczy bezpośrednio przed świętem państwowym jest skrócony o jedną godzinę. Dotyczy to nawet wtedy, gdy święto wypada w sobotę.
Limit: 60 żądań na minutę i 10 000 żądań miesięcznie, śledzony po adresie IP.
Parametry
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
date | string | Tak | Data w formacie YYYY-MM-DD |
Pola odpowiedzi
| Parametr | Typ | Opis |
|---|---|---|
date | string | Date in YYYY-MM-DD format |
laisvadienis | boolean | true if non-working day (weekend or red holiday) |
reason | string|null | "saturday", "sunday", "public_holiday", or null |
holiday_name | string|null | Lithuanian holiday name when reason is "public_holiday", otherwise null |
shorter_workday | boolean | true, gdy jest to dzień roboczy (laisvadienis: false) i następny dzień kalendarzowy jest czerwonym świętem państwowym — dzień roboczy skrócony o 1 godz. zgodnie z art. 113 KP. Zawsze false w dni wolne. |
Przykładowe żądanie
curl "https://calendar.lt/api/v1/laisvadienis?date=2026-06-23"
Przykładowa odpowiedź
// Tuesday before Rasos ir Joninių diena (Jun 24) — workday is shortened:
{
"date": "2026-06-23",
"laisvadienis": false,
"reason": null,
"holiday_name": null,
"shorter_workday": true
}
// The red holiday itself:
{
"date": "2026-06-24",
"laisvadienis": true,
"reason": "public_holiday",
"holiday_name": "Rasos ir Joninių diena",
"shorter_workday": false
}
// Regular working day:
{
"date": "2026-06-22",
"laisvadienis": false,
"reason": null,
"holiday_name": null,
"shorter_workday": false
}
// Saturday (holiday falls on Saturday — Friday would be shorter_workday: true):
{
"date": "2026-01-03",
"laisvadienis": true,
"reason": "saturday",
"holiday_name": null,
"shorter_workday": false
}
/api/v1/days
Publiczny
Returns laisvadienis and shorter_workday status for every day in a date range — a batch version of /api/v1/laisvadienis. No API key required.
Rate limits (IP-based): 20 requests/min · 2 000 requests/month. Maximum range: 366 days per request.
Parametry
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
from | string | Tak | Start date in YYYY-MM-DD format (inclusive) |
to | string | Tak | End date in YYYY-MM-DD format (inclusive). Must not be earlier than from. |
Pola odpowiedzi
| Parametr | Typ | Opis |
|---|---|---|
from | string | Echoes the from parameter |
to | string | Echoes the to parameter |
count | integer | Number of days in the response |
days[].date | string | Date in YYYY-MM-DD format |
days[].laisvadienis | boolean | true if non-working day (weekend or red public holiday) |
days[].holiday_name | string|null | Lithuanian name of the red public holiday, or null |
days[].shorter_workday | boolean | true, gdy jest to dzień roboczy (laisvadienis: false) i następny dzień kalendarzowy jest czerwonym świętem państwowym — dzień roboczy skrócony o 1 godz. zgodnie z art. 113 KP. Zawsze false w dni wolne. |
Przykładowe żądanie
curl "https://calendar.lt/api/v1/days?from=2026-05-01&to=2026-05-31"
Przykładowa odpowiedź
{
"from": "2026-05-01",
"to": "2026-05-31",
"count": 31,
"days": [
{
"date": "2026-05-01",
"laisvadienis": true,
"holiday_name": "Tarptautinė darbo diena",
"shorter_workday": false
},
{
"date": "2026-05-02",
"laisvadienis": false,
"holiday_name": null,
"shorter_workday": false
},
{
"date": "2026-05-03",
"laisvadienis": true,
"holiday_name": "Motinos diena",
"shorter_workday": false
},
{
"date": "2026-05-04",
"laisvadienis": false,
"holiday_name": null,
"shorter_workday": false
}
]
}
Error responses
| HTTP | Kod błędu | Opis |
|---|---|---|
| 400 | missing_param | Both from and to are required |
| 400 | invalid_date | Either date is not a valid YYYY-MM-DD value |
| 400 | invalid_range | from is later than to |
| 400 | range_too_large | Range exceeds 366 days — split into smaller requests |
| 429 | rate_limit_minute | 20 requests/minute exceeded |
| 429 | rate_limit_month | 2 000 requests/month exceeded |
/api/v1/holidays
Zwraca litewskie święta dla podanej daty lub całego roku.
Parametry
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
date | string | Tak* | Data w formacie YYYY-MM-DD — returns holidays for that specific date |
year | integer | Tak* | Year (1583–2100) — returns all holidays for the entire year |
lang | string | Nie | Język: lt, en, pl, ru (domyślnie: lt) |
Provide either date or year — not both.
Pola odpowiedzi
| Parametr | Typ | Opis |
|---|---|---|
date / year | string / integer | Echoes the query parameter |
count | integer | Number of holidays returned |
holidays[].date | string | Date in YYYY-MM-DD |
holidays[].name | string | Name in requested language |
holidays[].name_lt/en/pl/ru | string | Names in all four languages |
holidays[].type | string | public, traditional, religious, school, other |
holidays[].is_red | boolean | true if this is a non-working day (laisvadienis) per DK 123 str. |
Przykładowe żądanie
// By date: curl "https://calendar.lt/api/v1/holidays?date=2026-04-05&lang=en" \ -H "X-API-Key: clt_your_api_key_here" // Full year: curl "https://calendar.lt/api/v1/holidays?year=2026&lang=lt" \ -H "X-API-Key: clt_your_api_key_here"
Przykładowa odpowiedź
{
"date": "2026-04-05",
"count": 1,
"holidays": [
{
"date": "2026-04-05",
"name": "Easter Sunday",
"name_lt": "Šv. Velykos",
"name_en": "Easter Sunday",
"name_pl": "Niedziela Wielkanocna",
"name_ru": "Пасха",
"type": "public",
"is_red": true
}
]
}
/api/v1/name-days
Zwraca imieniny obchodzone w danym dniu.
Parametry
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
date | string | Tak | Data w formacie YYYY-MM-DD |
lang | string | Nie | Język: lt, en, pl, ru (domyślnie: lt) |
Przykładowe żądanie
curl "https://calendar.lt/api/v1/name-days?date=2026-03-19&lang=lt" \ -H "X-API-Key: clt_your_api_key_here"
Przykładowa odpowiedź
{
"date": "2026-03-19",
"lang": "lt",
"count": 3,
"name_days": [
{ "name": "Juozapas", "gender": "m" },
{ "name": "Juozas", "gender": "m" },
{ "name": "Juzė", "gender": "f" }
]
}
/api/v1/day
Zwraca pełne dane dnia: święta i imieniny łącznie.
Parametry
| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
date | string | Tak | Data w formacie YYYY-MM-DD |
lang | string | Nie | Język: lt, en, pl, ru (domyślnie: lt) |
Pola odpowiedzi
| Parametr | Typ | Opis |
|---|---|---|
date | string | Date in YYYY-MM-DD |
lang | string | Language used for names |
day_of_week | integer | 0 = Sunday, 1 = Monday … 6 = Saturday |
is_weekend | boolean | true for Saturday or Sunday |
week_number | integer | ISO 8601 week number |
holidays[].name | string | Holiday name in requested language |
holidays[].name_lt/en | string | Names in Lithuanian and English |
holidays[].date | string | Holiday date (YYYY-MM-DD) |
holidays[].type | string | Holiday category |
holidays[].is_red | boolean | true if non-working day (laisvadienis) |
name_days[].name | string | Name-day name |
name_days[].gender | string | "m" or "f" |
Przykładowe żądanie
curl "https://calendar.lt/api/v1/day?date=2026-05-03&lang=en" \ -H "X-API-Key: clt_your_api_key_here"
Przykładowa odpowiedź
{
"date": "2026-05-03",
"lang": "en",
"day_of_week": 0,
"is_weekend": true,
"week_number": 18,
"holidays": [
{
"name": "Mother's Day",
"name_lt": "Motinos diena",
"name_en": "Mother's Day",
"date": "2026-05-03",
"type": "traditional",
"is_red": true
}
],
"name_days": [
{ "name": "Irma", "gender": "f" }
]
}
The is_red flag
The is_red field marks a holiday as a non-working day
(laisvadienis) per the Lithuanian Labour Code (DK 123 str.).
It is managed entirely in the database — no hardcoded lists in the application code.
The following holidays carry is_red: true:
| Holiday | Date | Computed |
|---|---|---|
| Naujųjų metų diena | Jan 1 | |
| Lietuvos valstybės atkūrimo diena | Feb 16 | |
| Lietuvos nepriklausomybės atkūrimo diena | Mar 11 | |
| Šv. Velykos (Easter Sunday) | Variable | Yes |
| Antroji Velykų diena (Easter Monday) | Variable | Yes |
| Tarptautinė darbo diena | May 1 | |
| Motinos diena (Mother's Day) | 1st Sunday of May | Yes |
| Rasos ir Joninių diena | Jun 24 | |
| Valstybės (Mindaugo karūnavimo) diena | Jul 6 | |
| Žolinė | Aug 15 | |
| Visų Šventųjų diena | Nov 1 | |
| Mirusiųjų atminimo (Vėlinių) diena | Nov 2 | |
| Kūčių diena | Dec 24 | |
| Šventosios Kalėdos (pirma diena) | Dec 25 | |
| Šventosios Kalėdos (antra diena) | Dec 26 | |
| Tėvo diena (Father's Day) | 1st Sunday of June | Yes |
Note: type reflects the holiday's cultural category (public,
traditional, religious, etc.) and is independent of
is_red. For example, Motinos diena has type: "traditional"
but is_red: true. Always use is_red (not type)
to determine whether a day is non-working.
Flaga shorter_workday
Litewski Kodeks pracy (art. 113) wymaga, aby dzień roboczy bezpośrednio przed świętem państwowym (šventinių dienų išvakarės) był skrócony o jedną godzinę. Dotyczy wszystkich pracowników niezależnie od wymiaru czasu pracy.
Reguła działa na dzień kalendarzowy bezpośrednio przed świętem — nie na ostatni dzień roboczy tygodnia. Możliwe przypadki:
| Święto wypada w | Skrócony dzień roboczy |
|---|---|
| Wtorek → poniedziałek jest skrócony | |
| Środę → wtorek jest skrócony | |
| Sobotę → piątek jest skrócony | |
| Niedzielę → sobota już jest dniem wolnym, żaden dzień nie jest skrócony | |
| Poniedziałek → niedziela już jest dniem wolnym, żaden dzień nie jest skrócony | |
Ważne: shorter_workday jest zawsze false, gdy laisvadienis: true. Dzień wolny nie może jednocześnie być skróconym dniem roboczym.
Praktyczne zastosowanie
Użyj tej flagi do automatyzacji systemów kadrowych i płacowych — bez konieczności prowadzenia własnego kalendarza skróconych dni. Odpytaj dowolną datę i reaguj na shorter_workday: true:
const res = await fetch("https://calendar.lt/api/v1/laisvadienis?date=2026-06-23");
const { laisvadienis, shorter_workday } = await res.json();
if (laisvadienis) return "Day off";
if (shorter_workday) return "Work until 16:00 today (1 hour shorter)";
return "Normal working day";
Kody błędów
| HTTP | Kod błędu | Opis |
|---|---|---|
| 401 | missing_key | Nie podano klucza API. |
| 401 | invalid_key | Klucz API jest nieprawidłowy lub nieaktywny. |
| 401 | expired_key | Klucz API wygasł. |
| 429 | rate_limit_minute | Przekroczono limit żądań na minutę. |
| 429 | rate_limit_day | Przekroczono dzienny limit żądań. |
| 400 | invalid_date | Nieprawidłowy format daty. Użyj YYYY-MM-DD. |
| 400 | missing_param | Brakuje wymaganego parametru. |
| 400 | invalid_year | Year is outside the supported range (1583–2100) |
Limity żądań
Każdy klucz API podlega dwóm limitom: żądań na minutę i żądań na dobę. Gdy limit zostanie przekroczony, odpowiedź 429 wskaże, który limit został osiągnięty.
| Endpoint | Auth required | Rate limit |
|---|---|---|
/api/v1/laisvadienis | No | 60 req/min · 10 000 req/month (IP-based) |
/api/v1/holidays | Yes | Per API key plan |
/api/v1/name-days | Yes | Per API key plan |
/api/v1/day | Yes | Per API key plan |