İçeriğe Geç

Yaptırım Tarama

POST /api/v1/sanctions/screen

Yaptırım Tarama

Bir kişiyi, kuruluşu, gemiyi ya da uçağı Regvion'un resmî kaynaklardan topladığı yaptırım listelerinde tarar. Müşteri kabulü, kredi başvurusu ya da ödeme gibi akışlarınızdan bu ucu çağırabilirsiniz.

Yanıt bir karar değildir. Bir isabetin gerçekten aynı kişi olup olmadığına uyum biriminiz karar verir; yanıt bu kararı verecek bilgiyi taşır.

İstek

Gövde JSON'dur. Ad ya da kimlik numarasından en az biri zorunludur; öteki alanlar sonucu daraltır ve puanı etkiler.

{
  "name": "Ali Veli",
  "kind": "person",
  "identifiers": [
    { "type": "tckn", "value": "10000000146" }
  ],
  "birthDate": "1975-03-21",
  "motherName": "Ayşe",
  "fatherName": "Mehmet",
  "nationality": "TR",
  "country": "TR",
  "city": "Ankara",
  "address": "Atatürk Bulvarı No: 1",
  "extended": false
}
  • name — taranacak ad; en çok 300 karakter. Büyük/küçük harf, Türkçe karakter ve noktalama fark etmez.
  • kind — person, organization, vessel ya da aircraft. Biliyorsanız gönderin: başka türdeki kayıt gizlenmez, puanı düşer.
  • identifiers[] — kimlik numaraları, en çok 10 öğe:
    • type — tckn, ykn, vkn, passport, nationalId, tradeRegistry, mersis, foreignTaxId, imo, aircraftRegistration, cryptoWallet, swift, mkkRegistry, mmsi ya da other
    • value — numara; boşluk ve ayraçlar fark etmez, en çok 128 karakter
    • issuingCountry — veren ülke (isteğe bağlı)
  • birthDate — yyyy, yyyy-MM ya da yyyy-MM-dd.
  • motherName, fatherName — Türkiye'deki malvarlığı dondurma kayıtlarında aynı adlı iki kişiyi ayırmanın en iyi yolu budur. Biliyorsanız gönderin.
  • nationality, country — iki harfli ülke kodu ya da ülke adı. Tanınmayan değer yok sayılır ve uyarı döner.
  • city, address — şehir ve adres. Adres tek başına zayıf bir kanıttır.
  • extended — true ise düşük sınıflı sonuçlar da döner (aşağıda).

Kimlik bilgilerini yalnız gövdede gönderin. Bu uç adres satırında hiçbir kişisel veri almaz; adres satırları sunucu günlüklerine yazılır.

Yanıt

{
  "screeningId": "0e8c7c7a-...",
  "outcome": "hits",
  "coverage": "full",
  "engineVersion": "1.1.0",
  "listSequence": 184220,
  "lists": [
    {
      "code": "TR-MASAK-7",
      "name": "6415 md. 7 Listesi (iç dondurma kararları)",
      "legalNature": "bindingInTurkey",
      "legalNatureLabel": "TÜRKİYE'DE BAĞLAYICI",
      "screened": true,
      "covered": true,
      "versionNumber": 12,
      "sourceVersion": "2026-11-01",
      "sourcePublishedAt": "2026-11-01T00:00:00Z",
      "publishedAt": "2026-11-01T09:14:02Z",
      "lastConfirmedAt": "2026-11-05T08:30:11Z",
      "freshness": "fresh",
      "entryCount": 1204,
      "activeEntryCount": 1187,
      "fingerprint": "a3f1..."
    }
  ],
  "hits": [
    {
      "entryId": "7b1d2f3e-...",
      "revision": 3,
      "listCode": "TR-MASAK-7",
      "listName": "6415 md. 7 Listesi (iç dondurma kararları)",
      "legalNature": "bindingInTurkey",
      "legalNatureLabel": "TÜRKİYE'DE BAĞLAYICI",
      "sourceRecordId": "12345",
      "kind": "person",
      "status": "active",
      "score": 92,
      "class": "high",
      "matchedName": "ALI VELI",
      "matchedNameKind": "primary",
      "matchedNameQuality": "unspecified",
      "reasons": [
        { "code": "nameBase", "detail": null, "scoreDelta": 100 },
        { "code": "wordVariant", "detail": "veli ~ velli", "scoreDelta": -8 }
      ]
    }
  ],
  "warnings": [
    { "code": "invalidTckn", "message": "T.C. kimlik numarasının denetim haneleri tutmuyor; numara yine de arandı." }
  ]
}
  • outcome — taramanın sonucu: hits, noMatch ya da incomplete. Akışınızı bu alana bağlayın: temiz sonuç yalnız noMatch'tir (aşağıda).
  • coverage — sonucun hangi listelere dayandığı: full, listNotCovered ya da bindingListNotCovered (aşağıda).
  • screeningId — bu taramanın kimliği. Kendi kaydınızda saklayın: taramanın yapıldığını Regvion'a bununla kanıtlarsınız. Kimlik yalnız tarama kaydı kalıcı olarak yazıldıktan sonra döner.
  • engineVersion — taramayı yapan motorun sürümü. Eski bir sonuç, kendi sürümünün kurallarıyla açıklanır.
  • listSequence — taramanın koştuğu liste durumunun sıra numarası. Sayı büyüdükçe veri yenidir.
  • lists[] — tarama sırasında listelerin durumu:
    • screened — false ise bu liste taranmadı, çünkü henüz kaydı yok.
    • covered — false ise sonuç bu listeye dayanamaz: liste taranmadı ya da taransa da güncellik sınırını aştı. coverage bundan hesaplanır.
    • legalNature, legalNatureLabel — listenin Türkiye'deki hukuki niteliği (aşağıda)
    • versionNumber, sourceVersion, sourcePublishedAt, publishedAt — listenin yayımdaki sürümü ve tarihleri
    • lastConfirmedAt — kaynağın en son doğrulandığı an
    • freshness — güncellik durumu (aşağıda)
    • entryCount, activeEntryCount — taranan kayıt sayısı ve bunların etkin olanları
    • fingerprint — taranan kayıtların özeti; raporda sürüm kanıtı olarak kullanılabilir
  • hits[] — isabetler, en güçlüsü başta. Boş dizi tek başına temiz sonuç değildir: yalnız taranan listelerde eşleşme bulunmadığını söyler, outcome alanına bakın.
    • entryId, revision — liste kaydı ve sürümü. Ayrıntı için Yaptırım Kaydı Detayı. Kayıt değişirse revision artar: önceki değerlendirmeniz artık bu kaydın son hâline bakmıyordur
    • status — tarama yalnız etkin kayıtlarda yapılır, bu yüzden burada active görürsünüz. Listeden çıkmış ya da süresi geçmiş kayıt dönmez; süresi geçmiş bir kısıt, kayıt henüz güncellenmemiş olsa da dönmez
    • score — 0 ile 100 arası puan. reasons[] içindeki scoreDelta değerlerinin toplamıdır
    • class — isabet sınıfı (aşağıda)
    • matchedName, matchedNameKind, matchedNameQuality — eşleşmenin dayandığı ad kaynağın yayımladığı hâliyle; ad türü (primary, alias, former) ve kalitesi (unspecified, strong, weak)
    • reasons[] — puanın nasıl oluştuğu: code, detail (karşılaştırılan sözcükler ya da değerler) ve scoreDelta
  • warnings[] — code ve Türkçe message. Uyarı reddetmez; sonucu nasıl okuyacağınızı söyler.

Sonuç ve kapsam

outcome Anlamı Ne yapmalı
hits En az bir isabet var Uyum biriminiz değerlendirir
noMatch Kapsamdaki her liste tarandı ve hiçbirinde eşleşme yok Temiz sonuç olarak işleyebilirsiniz
incomplete Eşleşme çıkmadı, ama kapsamdaki bir liste taranmadı ya da güvenilemez durumda Temiz sonuç değildir. coverage ve lists[].covered eksiği söyler
coverage Anlamı
full Kapsamdaki her liste kapsandı
listNotCovered Türkiye'de bağlayıcı olmayan bir liste kapsanmadı. Örneğin hizmete yeni alınmış ve henüz yüklenmemiş bir yabancı liste
bindingListNotCovered Türkiye'de bağlayıcı bir liste kapsanmadı: kapatılmış ya da güncellik sınırını aşmış. Uyarı olarak bindingListOverLimit de döner

Kapsam isabetten bağımsızdır: outcome: hits yanıtında da coverage eksik olabilir, çünkü bir isabet taranmayan listeler hakkında bir şey söylemez.

Kapsamda her etkin liste, dizinde kaydı bulunan her liste ve kapalı olsa da Türkiye'de bağlayıcı her liste vardır. Kararlardan oluşan ve henüz kaydı olmayan liste (TR-RG) kapsanmış sayılır: boş olması henüz karar verilmediği anlamına gelir.

Kapalı, kaydı olmayan ve Türkiye'de bağlayıcı olmayan liste kapsamda değildir: taranmaz, lists[] alanında görünmez ve full onu içermez. Bir taramanın hangi listelere baktığını lists[] söyler. AB Finansal Yaptırımlar Listesi (EU-FSF) şu anda sağlanmıyor: noMatch bu listede arama yapıldığı anlamına gelmez. Durumunu Yaptırım Listeleri ucundan izleyin; liste hizmete alınıp ilk dosyası yüklenene kadar yanıtlar listNotCovered okur.

Sınıflar

class Anlamı Puan
exact Kimlik numarası eşleşti. Ad ne derse desin ilk sırada gelir 100
high Güçlü eşleşme 90 ve üzeri
medium İncelenmesi gereken eşleşme 75 ile 89 arası
low Zayıf eşleşme. Yalnız extended: true ile döner 60 ile 74 arası

Eşikler sabittir, isteğe göre değişmez.

Hukuki nitelik

legalNature legalNatureLabel Anlamı
bindingInTurkey TÜRKİYE'DE BAĞLAYICI BM Güvenlik Konseyi ve MASAK dondurma listeleri (6415, 7262)
internationalRiskBased ULUSLARARASI — RİSK BAZLI OFAC, AB, Birleşik Krallık gibi yabancı listeler
sectoralRestriction SEKTÖREL KISIT SPK işlem yasakları, kamu ihale yasakları
riskInformation RİSK BİLGİSİ Yaptırım listesi olmayan, kamuya açık risk bilgisi

Güncellik

freshness Anlamı
fresh Kaynak hedef süre içinde doğrulandı
overTarget Hedef süre geçti, üst sınıra gelinmedi
overLimit Üst sınır geçti: kaynak uzun süredir doğrulanamıyor
neverConfirmed Kaynağa henüz başarıyla bakılmadı
backfilling İlk yükleme sürüyor: liste henüz kaynağın yayımladığının tamamını taşımıyor
notApplicable Liste kaynaktan okunmuyor ya da kapalı; güncellik bir şey söylemez

Türkiye'de bağlayıcı bir liste overLimit olduğunda kapsanmış sayılmaz: yanıt yine 200 döner, sonuç incomplete olur ve bindingListOverLimit uyarısı gelir. Bağlayıcı olmayan listede overLimit kapsamı değiştirmez, yalnız yaşını gösterir.

Tarama yanıtındaki freshness kaynağın yaşıyla birlikte taramanın dayandığı dizini de hesaba katar. Yeni bir yayım dizine henüz yansımadıysa fresh okunmaz: liste overTarget görünür. Kaynaktan okunmayan TR-RG de bu sürede notApplicable yerine overTarget görünür. Yayımdan sonra kısa süre overTarget görmek olağandır; 15 dakikayı geçerse indexLagging uyarısı döner.

Uyarılar

code Anlamı
invalidTckn, invalidYkn, invalidVkn, invalidMersis, invalidImo Numaranın denetim hanesi tutmuyor. Numara yine de arandı: listede de yanlış basılmış olabilir
maskedIdentifier Numara maskeli olduğu için aranmadı
emptyIdentifier Numaradan geriye bir şey kalmadı, aranmadı
tooShort Ad iki anlamlı karakterden kısa, aranmadı
singleToken Ad tek sözcük; doğum tarihi ya da uyruk ekleyin
commonName Ad yaygın, çok sonuç beklenir; doğum tarihi ya da uyruk ekleyin
unresolvedCountry Ülke tanınmadı, yok sayıldı
truncated Sonuçların tamamı dönmedi, en güçlü 200 tanesi listelendi
noCriteria Aranabilir bir ölçüt yok. Tek başına kaldığında tarama yapılmaz
bindingListOverLimit Türkiye'de bağlayıcı bir liste güncellik sınırını aştı. Liste kapsanmış sayılmadı, sonuç temiz sonuç olarak işlenmemelidir
indexLagging Tarama dizini yayımlanan son listelerin gerisinde kaldı; en yeni kayıtlar bu sonuçta olmayabilir. Sürerse tarama 503 ile durur

Gerekçe kodları

code Anlamı
identifierExact Kimlik numarası tam eşleşti
identifierIssuerDiffers Numara eşleşti, veren ülkeler farklı
identifierTypeDiffers Numara başka türde bir kimlikle eşleşti
nameBase Ad karşılaştırması tam uyumdan başlar; sonraki gerekçeler eksik olanı söyler
wordVariant İki sözcük uyuyor, ama harfi harfine değil
queryWordUnmatched Gönderdiğiniz bir sözcük kayıtta yok; aleyhte güçlü kanıt
listedWordUnmatched Kayıttaki bir sözcük gönderdiğinizde yok; olağan, listelerde daha çok ad bulunur
wordOrderDiffers Sözcükler başka sırada uyuyor
businessDiffers Her iki şirket adı da ötekinde olmayan bir faaliyet alanı söylüyor: ortak sözcük iki ayrı firmanın rastlantısı olabilir
weakAlias Eşleşme zayıf bir takma ada dayanıyor
insufficientEvidence Eşleşen sözcükler tek başına ayırt edici değil
incompleteName Bir taraftaki ayırt edici sözcüğün karşılığı yok
birthDateExact, birthMonthMatch, birthYearMatch, birthDateNear Doğum tarihi uyuyor (tam, ay, yıl, yakın)
birthDateConflict Doğum tarihleri çelişiyor
nationalityMatch, nationalityConflict Uyruk uyuyor ya da çelişiyor
countryMatch, countryConflict Ülke uyuyor ya da çelişiyor
cityMatch Şehir uyuyor
addressSimilar Adres benziyor; tek başına zayıf bilgi
kindConflict Kayıt başka türde
motherNameMatch, motherNameConflict Anne adı uyuyor ya da açıkça farklı
fatherNameMatch, fatherNameConflict Baba adı uyuyor ya da açıkça farklı
attributeBonusCapped, attributePenaltyCapped Ek bilgilerin katkısı üst sınıra takıldı
scoreCapped Puan 100'ü geçecekti
demotionFloor Çelişki kaydı düşürür ama gizlemez; kayıt görünür kaldı
recordInactive Kayıt listeden çıkmış ya da süresi dolmuş

Yeni kod eklenebilir. Tanımadığınız kodu yok sayın; puanı score alanından okuyun.

Hata yanıtları

503 SANCTIONS_NOT_READY — sonuç verilmedi. Bu yanıt "eşleşme yok" demek değildir ve yanıtta data yoktur. Retry-After kadar bekleyip yeniden deneyin. Akışınız bu yanıtı temiz sonuç gibi işlememelidir. Dört durumda döner:

  • Listeler bu sunucuda henüz yüklenmedi; örneğin sunucu yeni başladı.
  • Etkin ve Türkiye'de bağlayıcı bir liste henüz taramaya girmedi.
  • Tarama dizini yayımlanan listelerin gerisinde bir saatten uzun süredir duruyor, ya da liste deposuna bir saatten uzun süredir ulaşılamıyor.
  • Tarama kaydı yazılamadı. Kaydı olmayan taramanın kimliği verilmez; bu durumda tarama sonucu da verilmez.

400 VALIDATION_ERROR — tarama yapılmadı. error.message nedeni Türkçe söyler; gönderdiğiniz değeri tekrar etmez. Üç durum vardır:

  • Ad da kimlik numarası da yok.
  • Biçim imkânsız: 11 rakamdan oluşmayan T.C. kimlik ya da yabancı kimlik numarası, 10 rakamdan oluşmayan vergi numarası, okunamayan tarih, bilinmeyen type.
  • Aranabilir bir şey kalmadı: ad tek harf, numara maskeli.

Denetim hanesi tutmayan ama biçimi doğru numara reddedilmez, uyarıyla aranır.

429 kodları için Oran Sınırları, öteki hatalar için Hatalar sayfasına bakın.

Listeler ne zaman güncellenir

Yeni bir liste sürümü yayımlandıktan sonra taramalara genellikle bir dakika içinde yansır. Yansıyana kadar liste fresh okunmaz; bir saat içinde yansımazsa tarama durur. Yanıttaki listSequence ve versionNumber hangi veriyle tarandığını her zaman söyler. Tarama yalnız bugünkü listelere bakar; geçmiş bir tarihteki durumu sorgulayamazsınız, ama bir kaydın geçmişini Yaptırım Kaydı Detayı ile görebilirsiniz.

Gizlilik

Gönderdiğiniz ad ve kimlik numaraları saklanmaz, günlüklere ve denetim kayıtlarına yazılmaz, yanıt önbelleğe alınmaz (Cache-Control: no-store). Regvion'da her tarama için yalnız şunlar kalır: screeningId, istek kimliği, müşteri, anahtar, zaman, sınıf başına isabet sayısı, listSequence, engineVersion ve sorgunun geri çevrilemeyen bir özeti (HMAC).

Bu özet API anahtarınızdan türetilen bir anahtarla üretilir ve Regvion'da saklanmaz. Aynı anahtarla yapılan aynı sorgu aynı özeti verir; farklı müşterilerin özetleri birbiriyle eşleşmez. Anahtarınızı yenilediğinizde özet de değişir.

Yanıttaki reasons[].detail, karşılaştırılan sözcükleri içerebilir. Yanıtı kendi günlüklerinize yazıyorsanız bunu göz önünde bulundurun.

Yetki ve kullanım

Api.Sanctions.Screen iznini gerektirir. Bu izin katmanlara kendiliğinden verilmez; açtırmak için Regvion ile görüşün. İzin anahtar bazında da açılıp kapatılabilir.

Her çağrı aylık kotanızdan bir tarama düşer. 503 ve 429 yanıtları sayılmaz; 400 yanıtları öteki uçlardaki gibi sayılır. Bu izni taşımayan anahtar gönderdiği gövde ne olursa olsun 403 alır; bu çağrı, aynı müşterinin izinli anahtarlarının kotasından ve dakikalık sınırından düşmez.

Parametreler

İsimKonumTipZorunluAçıklama
name Body string Hayır Taranacak ad. Ad ya da kimlik numarasından en az biri zorunludur. En çok 300 karakter.
identifiers Body array Hayır Kimlik numaraları: type, value, issuingCountry. En çok 10 öğe.
kind Body string Hayır person, organization, vessel ya da aircraft.
birthDate Body string Hayır yyyy, yyyy-MM ya da yyyy-MM-dd.
motherName Body string Hayır Anne adı. Aynı adlı kişileri ayırmanın en iyi yolu.
fatherName Body string Hayır Baba adı.
nationality Body string Hayır Uyruk: iki harfli ülke kodu ya da ülke adı.
country Body string Hayır Ülke: iki harfli ülke kodu ya da ülke adı.
city Body string Hayır Şehir.
address Body string Hayır Adres. Tek başına zayıf bir kanıttır.
extended Body boolean Hayır true ise düşük sınıflı (low) sonuçlar da döner.

Yanıtlar

200 — Tarama yapıldı: screeningId, outcome (hits, noMatch ya da incomplete; temiz sonuç yalnız noMatch), coverage (full, listNotCovered ya da bindingListNotCovered), engineVersion, listSequence, lists[] (taranan listeler, sürümleri, kapsamları ve güncellik durumları), hits[] ve warnings[].

400 — Ad ya da kimlik numarası yok, biçim imkânsız (11 haneli olmayan T.C. kimlik numarası gibi) ya da aranabilir bir ölçüt kalmadı (VALIDATION_ERROR). Tarama yapılmamıştır.

503 — Sonuç verilmedi (SANCTIONS_NOT_READY): listeler yüklenmedi, bağlayıcı bir liste eksik, dizin bir saatten uzun süredir geride ya da tarama kaydı yazılamadı. Bu yanıt 'eşleşme yok' anlamına gelmez. Retry-After kadar bekleyip yeniden deneyin.