Mevzuat Değişiklikleri API
Mevzuat takibini otomatikleştirin, değişen maddeyi görün
Genel bakış
Mevzuat Değişiklikleri API; kanun, KHK, cumhurbaşkanlığı kararnamesi, yönetmelik, tebliğ ve genelgelerde yapılan değişiklikleri yapılandırılmış biçimde sunar. Her kayıtta değişen mevzuatın adı, numarası, değişiklik türü (ekleme/değişiklik/yürürlükten kaldırma), etkilenen madde numaraları, yürürlük tarihi ve maddenin eski/yeni metni yer alır. Konu etiketleri (vergi, iş hukuku, KVKK, imar…) ile filtreleyip webhook aboneliği kurabilirsiniz.
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 |
|---|---|---|---|
| start / end | date | opsiyonel | Yayım tarihi aralığı |
| type | string | opsiyonel | kanun, yonetmelik, teblig, genelge |
| topic | string | opsiyonel | Konu etiketi. Örn: vergi, is-hukuku |
| institution | string | opsiyonel | Yayımlayan kurum. Örn: hazine-maliye |
| q | string | opsiyonel | Tam metin arama sorgusu |
Örnek istek
curl --request GET \
--url "https://api.apibir.com/v1/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig" \
--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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig", 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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig',
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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig",
{ 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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig"))
.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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig",
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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig")
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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig");
Console.WriteLine(json);import Foundation
var request = URLRequest(url: URL(string: "https://api.apibir.com/v1/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig")!)
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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig" 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/legislation/changes?start=2026-07-01&end=2026-07-31&type=teblig");
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,
"total": 2,
"data": [
{
"id": "mvz-2026-08-05-14",
"publishedAt": "2026-08-05",
"effectiveDate": "2026-09-01",
"type": "teblig",
"title": "Katma Değer Vergisi Genel Uygulama Tebliğinde Değişiklik Yapılmasına Dair Tebliğ (Seri No: 58)",
"parentLaw": { "name": "KDV Genel Uygulama Tebliği", "number": "-" },
"institution": "Hazine ve Maliye Bakanlığı",
"topics": ["vergi", "kdv"],
"changeType": "degisiklik",
"affectedArticles": ["III/B-3.1", "IV/A-1.5"],
"summary": "İndirimli orana tabi işlemlerde iade taleplerinde asgari tutar 2026 yılı için 90.800 TL olarak güncellendi.",
"diff": {
"before": "...iade talep edilebilecek asgari tutar 65.600 TL'dir.",
"after": "...iade talep edilebilecek asgari tutar 90.800 TL'dir."
},
"gazetteNumber": 33021,
"sourceUrl": "https://www.resmigazete.gov.tr/eskiler/2026/08/20260805-14.htm"
}
]
}Yanıt alanları
| Alan | Tip | Açıklama |
|---|---|---|
| changeType | string | ekleme · degisiklik · yururlukten-kaldirma |
| affectedArticles | array | Değişen madde/bent numaraları |
| diff.before / after | string | Maddenin eski ve yeni metni |
| effectiveDate | date | Yürürlüğe giriş tarihi |
| topics | array | Konu etiketleri |
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?
Hukuk bürosu takip panelleri
Müvekkil sektörüne göre etiket filtresi kurup günlük değişiklik özeti gönderin.
Uyum (compliance) yazılımları
İç prosedürlerinizi ilgili mevzuat maddesine bağlayıp değişince görev açın.
Mali müşavir portalları
Vergi tebliğ değişikliklerini müşteri bazında bültenleştirin.
Kurumsal risk yönetimi
Yürürlük tarihine göre hazırlık takvimi oluşturun.
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
Özet Resmi Gazete
Mevzuat & KamuHer günkü Resmi Gazete'nin yapay zeka destekli maddeli özeti, kategori ve etki analiziyle.
Resmi Tatiller & İş Günü
Türkiye VerileriResmi ve dini tatiller, arife günleri, iş günü hesaplama ve vade tarihi bulma.
Sıfır Araç Fiyatları
Türkiye VerileriMarka, model ve donanım bazında güncel sıfır araç liste fiyatları, ÖTV/KDV kırılımı ve kampanyalar.
Ü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 Gazete Özetlerini Slack / Teams Bültenine Dönüştürme — çalışan kod örnekleriyle adım adım entegrasyon.