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

GET /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

ParametrTypWymaganyOpis
datestringTakData w formacie YYYY-MM-DD

Pola odpowiedzi

ParametrTypOpis
datestringDate in YYYY-MM-DD format
laisvadienisbooleantrue if non-working day (weekend or red holiday)
reasonstring|null"saturday", "sunday", "public_holiday", or null
holiday_namestring|nullLithuanian holiday name when reason is "public_holiday", otherwise null
shorter_workdaybooleantrue, 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
}
GET /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

ParametrTypWymaganyOpis
fromstringTakStart date in YYYY-MM-DD format (inclusive)
tostringTakEnd date in YYYY-MM-DD format (inclusive). Must not be earlier than from.

Pola odpowiedzi

ParametrTypOpis
fromstringEchoes the from parameter
tostringEchoes the to parameter
countintegerNumber of days in the response
days[].datestringDate in YYYY-MM-DD format
days[].laisvadienisbooleantrue if non-working day (weekend or red public holiday)
days[].holiday_namestring|nullLithuanian name of the red public holiday, or null
days[].shorter_workdaybooleantrue, 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

HTTPKod błęduOpis
400missing_paramBoth from and to are required
400invalid_dateEither date is not a valid YYYY-MM-DD value
400invalid_rangefrom is later than to
400range_too_largeRange exceeds 366 days — split into smaller requests
429rate_limit_minute20 requests/minute exceeded
429rate_limit_month2 000 requests/month exceeded
GET /api/v1/holidays

Zwraca litewskie święta dla podanej daty lub całego roku.

Parametry

ParametrTypWymaganyOpis
datestringTak*Data w formacie YYYY-MM-DD — returns holidays for that specific date
yearintegerTak*Year (1583–2100) — returns all holidays for the entire year
langstringNieJęzyk: lt, en, pl, ru (domyślnie: lt)

Provide either date or year — not both.

Pola odpowiedzi

ParametrTypOpis
date / yearstring / integerEchoes the query parameter
countintegerNumber of holidays returned
holidays[].datestringDate in YYYY-MM-DD
holidays[].namestringName in requested language
holidays[].name_lt/en/pl/rustringNames in all four languages
holidays[].typestringpublic, traditional, religious, school, other
holidays[].is_redbooleantrue 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
    }
  ]
}
GET /api/v1/name-days

Zwraca imieniny obchodzone w danym dniu.

Parametry

ParametrTypWymaganyOpis
datestringTakData w formacie YYYY-MM-DD
langstringNieJę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" }
  ]
}
GET /api/v1/day

Zwraca pełne dane dnia: święta i imieniny łącznie.

Parametry

ParametrTypWymaganyOpis
datestringTakData w formacie YYYY-MM-DD
langstringNieJęzyk: lt, en, pl, ru (domyślnie: lt)

Pola odpowiedzi

ParametrTypOpis
datestringDate in YYYY-MM-DD
langstringLanguage used for names
day_of_weekinteger0 = Sunday, 1 = Monday … 6 = Saturday
is_weekendbooleantrue for Saturday or Sunday
week_numberintegerISO 8601 week number
holidays[].namestringHoliday name in requested language
holidays[].name_lt/enstringNames in Lithuanian and English
holidays[].datestringHoliday date (YYYY-MM-DD)
holidays[].typestringHoliday category
holidays[].is_redbooleantrue if non-working day (laisvadienis)
name_days[].namestringName-day name
name_days[].genderstring"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:

HolidayDateComputed
Naujųjų metų dienaJan 1
Lietuvos valstybės atkūrimo dienaFeb 16
Lietuvos nepriklausomybės atkūrimo dienaMar 11
Šv. Velykos (Easter Sunday)VariableYes
Antroji Velykų diena (Easter Monday)VariableYes
Tarptautinė darbo dienaMay 1
Motinos diena (Mother's Day)1st Sunday of MayYes
Rasos ir Joninių dienaJun 24
Valstybės (Mindaugo karūnavimo) dienaJul 6
ŽolinėAug 15
Visų Šventųjų dienaNov 1
Mirusiųjų atminimo (Vėlinių) dienaNov 2
Kūčių dienaDec 24
Šventosios Kalėdos (pirma diena)Dec 25
Šventosios Kalėdos (antra diena)Dec 26
Tėvo diena (Father's Day)1st Sunday of JuneYes

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 wSkró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

HTTPKod błęduOpis
401missing_keyNie podano klucza API.
401invalid_keyKlucz API jest nieprawidłowy lub nieaktywny.
401expired_keyKlucz API wygasł.
429rate_limit_minutePrzekroczono limit żądań na minutę.
429rate_limit_dayPrzekroczono dzienny limit żądań.
400invalid_dateNieprawidłowy format daty. Użyj YYYY-MM-DD.
400missing_paramBrakuje wymaganego parametru.
400invalid_yearYear 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.

EndpointAuth requiredRate limit
/api/v1/laisvadienisNo60 req/min · 10 000 req/month (IP-based)
/api/v1/holidaysYesPer API key plan
/api/v1/name-daysYesPer API key plan
/api/v1/dayYesPer API key plan

Uzyskaj dostęp do API

Aby uzyskać klucz API, skontaktuj się z nami przez e-mail.

Skontaktuj się