Resmi Tatiller & İş Günü API
Tatil takvimi + iş günü aritmetiği tek serviste
Genel bakış
Resmi Tatiller & İş Günü API; Türkiye'nin resmi ve dini bayram günlerini, yarım gün çalışılan arife günlerini ve idari izin günlerini listeler. Ayrıca iş günü aritmetiği yapar: iki tarih arasındaki iş günü sayısını hesaplar, bir tarihe N iş günü ekleyerek vade/termin tarihi bulur ve verilen bir günün iş günü olup olmadığını söyler. Hafta sonu tanımı ve özel şirket tatilleri parametreyle özelleştirilebilir.
Uç noktalar
Temel adres: https://api.apibir.com/v1
Kimlik doğrulama
Tüm isteklerde API anahtarınızı Authorization başlığında gönderin:
Authorization: apikey APIBIR-8f2c4b7e9a1d3c5f7b2e9d41
Accept: application/jsonSorgu parametreleri
| Parametre | Tip | Durum | Açıklama |
|---|---|---|---|
| year | integer | opsiyonel | Takvim yılı. Varsayılan: içinde bulunulan yıl |
| country | string | opsiyonel | ISO ülke kodu. Varsayılan TR |
| start / end | date | opsiyonel | İş günü hesabı için tarih aralığı |
| days | integer | opsiyonel | /business-days/add için eklenecek iş günü |
| weekend | string | opsiyonel | Hafta sonu tanımı. Örn: sat,sun veya sun |
| halfDayCounts | boolean | opsiyonel | Arife günleri tam gün sayılsın mı? Varsayılan false |
Örnek istek
curl --request GET \
--url "https://api.apibir.com/v1/holidays?year=2026&country=TR" \
--header "authorization: apikey APIBIR-8f2c...9d41" \
--header "content-type: application/json"package main
import (
"fmt"
"io"
"net/http"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.apibir.com/v1/holidays?year=2026&country=TR", nil)
req.Header.Add("authorization", "apikey APIBIR-8f2c...9d41")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}const https = require('https');
const options = {
hostname: 'api.apibir.com',
path: '/v1/holidays?year=2026&country=TR',
method: 'GET',
headers: { 'authorization': 'apikey APIBIR-8f2c...9d41' }
};
https.get(options, (res) => {
let data = '';
res.on('data', (chunk) => data += chunk);
res.on('end', () => console.log(JSON.parse(data)));
});const res = await fetch(
"https://api.apibir.com/v1/holidays?year=2026&country=TR",
{ headers: { authorization: "apikey APIBIR-8f2c...9d41" } }
);
const { data } = await res.json();
console.log(data);import java.net.http.*;
import java.net.URI;
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.apibir.com/v1/holidays?year=2026&country=TR"))
.header("authorization", "apikey APIBIR-8f2c...9d41")
.GET().build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());import requests
r = requests.get(
"https://api.apibir.com/v1/holidays?year=2026&country=TR",
headers={"authorization": "apikey APIBIR-8f2c...9d41"},
timeout=10,
)
print(r.json()["data"])require 'net/http'
require 'uri'
uri = URI.parse("https://api.apibir.com/v1/holidays?year=2026&country=TR")
request = Net::HTTP::Get.new(uri)
request["authorization"] = "apikey APIBIR-8f2c...9d41"
response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
http.request(request)
end
puts response.bodyusing var client = new HttpClient();
client.DefaultRequestHeaders.Add("authorization", "apikey APIBIR-8f2c...9d41");
var json = await client.GetStringAsync("https://api.apibir.com/v1/holidays?year=2026&country=TR");
Console.WriteLine(json);import Foundation
var request = URLRequest(url: URL(string: "https://api.apibir.com/v1/holidays?year=2026&country=TR")!)
request.addValue("apikey APIBIR-8f2c...9d41", forHTTPHeaderField: "authorization")
let task = URLSession.shared.dataTask(with: request) { data, _, _ in
if let data = data, let str = String(data: data, encoding: .utf8) {
print(str)
}
}
task.resume()open Cohttp_lwt_unix
open Lwt
let uri = Uri.of_string "https://api.apibir.com/v1/holidays?year=2026&country=TR" in
let headers = Header.init_with "authorization" "apikey APIBIR-8f2c...9d41" in
Client.get ~headers uri >>= fun (resp, body) ->
Cohttp_lwt.Body.to_string body >>= fun body_str ->
Lwt_io.printl body_str<?php
$ch = curl_init("https://api.apibir.com/v1/holidays?year=2026&country=TR");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["authorization: apikey APIBIR-8f2c...9d41"]);
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data["data"]);Örnek yanıt
{
"success": true,
"creditsUsed": 1,
"country": "TR",
"year": 2026,
"data": [
{
"date": "2026-01-01",
"name": "Yılbaşı",
"type": "resmi",
"isPublicHoliday": true,
"halfDay": false,
"weekday": "Perşembe"
},
{
"date": "2026-03-19",
"name": "Ramazan Bayramı Arifesi",
"type": "dini",
"isPublicHoliday": true,
"halfDay": true,
"startTime": "13:00",
"weekday": "Perşembe"
},
{
"date": "2026-04-23",
"name": "Ulusal Egemenlik ve Çocuk Bayramı",
"type": "resmi",
"isPublicHoliday": true,
"halfDay": false,
"weekday": "Perşembe"
}
],
"summary": {
"totalHolidays": 15,
"workDaysInYear": 248,
"nextHoliday": { "date": "2026-08-30", "name": "Zafer Bayramı", "daysLeft": 23 }
}
}Yanıt alanları
| Alan | Tip | Açıklama |
|---|---|---|
| type | string | resmi · dini · idari |
| halfDay | boolean | Yarım gün (arife) bilgisi |
| startTime | time | Yarım günlerde tatilin başlangıç saati |
| summary.workDaysInYear | number | Yıl içindeki toplam iş günü |
| summary.nextHoliday | object | Bir sonraki tatil ve kalan gün sayısı |
Kredi tüketimi: Bu servis her başarılı istek için 1 kredi harcar.
Hatalı istekler (4xx) kredi düşürmez. Kalan krediniz her yanıtın creditsRemaining alanında döner.
Olası hatalar
| Kod | HTTP | Anlamı |
|---|---|---|
| invalid_api_key | 401 | Anahtar geçersiz veya başlık eksik. |
| insufficient_credits | 402 | Aylık kredi limitiniz doldu. |
| invalid_parameter | 422 | Parametre değeri beklenen formatta değil. |
| rate_limited | 429 | Saniyelik istek limiti aşıldı. |
| no_data | 404 | Sorgu kriterlerine uyan kayıt bulunamadı. |
Bu API ile neler yapabilirsiniz?
İK ve bordro sistemleri
İzin bakiyesi, fazla mesai ve tatil çalışması ücretlerini doğru hesaplayın.
Kargo ve teslimat sözü
Sipariş anında gerçekçi teslim tarihi (SLA) gösterin.
Finans ve tahsilat
Çek/senet vade tarihlerini iş gününe ötelemeyi otomatikleştirin.
Randevu sistemleri
Tatil günlerini takvimden otomatik kapatın.
AI ile hızlı başlangıç. Bu API'yi Claude'a tanıtıp tek promptla pano kurmak için AI & Dashboard rehberine bakın. Hazır prompt şablonu ve çalışan dashboard örneği orada.
İlgili API'ler
Ekonomik Takvim
Finans & PiyasaEnflasyon, faiz kararı, istihdam gibi veri açıklamaları; beklenti, önceki ve gerçekleşen değerler.
Özet Resmi Gazete
Mevzuat & KamuHer günkü Resmi Gazete'nin yapay zeka destekli maddeli özeti, kategori ve etki analiziyle.
Mevzuat Değişiklikleri
Mevzuat & KamuKanun, yönetmelik, tebliğ ve genelgelerdeki değişiklikleri madde bazında takip edin.
Ücretsiz API anahtarınızı 30 saniyede alın
Kredi kartı istemiyoruz. Ücretsiz plan tüm API'leri kapsar; yalnızca aylık kredi limiti farklıdır.
Uygulamalı rehber
Resmi Tatiller ve İş Günü Aritmetiği API'si Nasıl Çalışır? — çalışan kod örnekleriyle adım adım entegrasyon.