Geliştirici REST API & Entegrasyon Kılavuzu
Bu dokümantasyonu doğrudan yazılımcınıza iletebilir, CRM, ERP, e-ticaret ve kayıt formlarınızla dakikalar içinde entegre edebilirsiniz.
POST
https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify
Tek bir e-posta adresini RFC sözdizimi, MX, canlı SMTP mailbox ping, SPF, DMARC, DKIM, PTR ve kurumsal ESP seviyesinde tam analiz eder.
İstek Gövdesi (JSON Body):
{
"email": "destek@sirketadi.com",
"smtp_check": true,
"catch_all_check": true
}
| Parametre |
Tip |
Zorunlu? |
Varsayılan |
Açıklama |
email |
string |
Evet |
- |
Doğrulanacak hedef e-posta adresi. |
smtp_check |
boolean |
Hayır |
true |
Alıcı posta kutusuna canlı soket pingi atılsın mı? |
catch_all_check |
boolean |
Hayır |
true |
Rastgele posta kutusuyla catch-all testi yapılsın mı? |
Başarılı Yanıt Modeli (HTTP 200 OK):
{
"success": true,
"data": {
"email": "destek@sirketadi.com",
"normalized_email": "destek@sirketadi.com",
"status": "deliverable",
"score": 90,
"syntax": {
"valid": true,
"user": "destek",
"domain": "sirketadi.com",
"domain_puny": "sirketadi.com",
"is_utf8": false,
"reason": null
},
"domain_info": {
"valid_domain": true,
"has_mx": true,
"mx_records": [
{ "host": "sirketadi-com.mail.protection.outlook.com", "priority": 10 }
],
"primary_mx": "sirketadi-com.mail.protection.outlook.com",
"mx_ip": "104.47.54.36",
"ptr_record": "mail-eop.protection.outlook.com",
"ptr_valid": true,
"esp": {
"name": "Microsoft 365 (Exchange Online)",
"tier": "Kurumsal / Ücretli SaaS"
},
"security": {
"has_spf": true,
"spf_raw": "v=spf1 include:spf.protection.outlook.com -all",
"has_dmarc": true,
"dmarc_policy": "REJECT",
"dmarc_raw": "v=DMARC1; p=reject; rua=mailto:dmarc@sirketadi.com",
"has_dkim": true,
"dkim_selector": "selector1",
"dkim_raw": "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3...",
"has_bimi": false,
"has_mta_sts": true
},
"is_disposable": false,
"is_free": false
},
"account_info": {
"is_role_based": true,
"role": "destek"
},
"smtp": {
"checked": true,
"connected": false,
"mailbox_exists": false,
"is_catch_all": false,
"auth_required": false,
"firewall_shield": true,
"response_code": 250,
"response_message": "Kurumsal Microsoft 365 Güvenlik Kalkanı devrede.",
"log": [
"[C] sirketadi-com.mail.protection.outlook.com:25 bağlantısı deneniyor...",
"[i] Microsoft 365 Inbound Gateway devrede.",
"[i] Alan adı MX, SPF ve DMARC kayıtlarıyla kurumsal olarak onaylandı."
]
},
"suggestion": null,
"execution_time_ms": 340.52
}
}
POST
https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify-batch
Tek bir HTTP isteği ile 20 adede kadar e-postayı toplu olarak hızlıca doğrulamak için kullanılır.
İstek Gövdesi (JSON):
{
"emails": [
"musteri1@sirketadi.com",
"ahmet@gmail.com",
"sahte@mailinator.com"
],
"smtp_check": true
}
4. Hazır Entegrasyon Kodları
Projenize göre dilediğiniz dili seçip kodu anında kopyalayarak entegrasyonu tamamlayabilirsiniz:
curl -X POST "https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify" \
-H "Content-Type: application/json" \
-H "X-Api-Key: fe_live_ORNEK_API_ANAHTARI" \
-d '{
"email": "destek@sirketadi.com",
"smtp_check": true,
"catch_all_check": true
}'
<?php
/**
* E-posta Doğrulama REST API Entegrasyonu
*/
$apiUrl = 'https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify';
$apiKey = 'fe_live_ORNEK_API_ANAHTARI';
$targetEmail = 'destek@sirketadi.com';
$payload = json_encode([
'email' => $targetEmail,
'smtp_check' => true,
'catch_all_check' => true
]);
$ch = curl_init($apiUrl);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-Api-Key: ' . $apiKey
],
CURLOPT_POSTFIELDS => $payload,
CURLOPT_TIMEOUT => 12
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode === 200) {
$result = json_decode($response, true);
$status = $result['data']['status']; // 'deliverable', 'risky', 'undeliverable'
$score = $result['data']['score']; // 0 - 100
if ($status === 'deliverable') {
echo "✓ E-posta güvenli, kayıt tamamlandı! (Skor: {$score})";
} elseif ($status === 'risky') {
echo "⚠ E-posta riskli kabul edilebilir (Skor: {$score})";
} else {
echo "✕ Geçersiz e-posta adresi! Gönderim reddedildi.";
}
} elseif ($httpCode === 429) {
echo "Hata: Günlük istek kotası doldu!";
} else {
echo "API Hatası: HTTP " . $httpCode;
}
import requests
API_URL = "https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify"
API_KEY = "fe_live_ORNEK_API_ANAHTARI"
headers = {
"Content-Type": "application/json",
"X-Api-Key": API_KEY
}
payload = {
"email": "destek@sirketadi.com",
"smtp_check": True,
"catch_all_check": True
}
try:
response = requests.post(API_URL, json=payload, headers=headers, timeout=12)
if response.status_code == 200:
data = response.json().get("data", {})
print(f"Durum: {data.get('status')} | Skor: {data.get('score')}")
print(f"ESP Sağlayıcı: {data.get('domain_info', {}).get('esp', {}).get('name')}")
elif response.status_code == 429:
print("Hata: Günlük istek kotası doldu!")
else:
print("Hata Kodu:", response.status_code, response.text)
except requests.exceptions.RequestException as e:
print("Bağlantı hatası:", e)
// JavaScript (Modern Fetch API / Node.js 18+)
async function verifyEmail(email) {
const url = "https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify";
const apiKey = "fe_live_ORNEK_API_ANAHTARI";
try {
const res = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-Api-Key": apiKey
},
body: JSON.stringify({
email: email,
smtp_check: true,
catch_all_check: true
})
});
if (res.status === 429) {
throw new Error("Günlük istek kotası doldu (HTTP 429)!");
}
const json = await res.json();
if (json.success) {
const { status, score, domain_info } = json.data;
console.log(`Durum: ${status}, Skor: ${score}/100`);
console.log(`Sağlayıcı: ${domain_info.esp.name}`);
return json.data;
}
} catch (err) {
console.error("Doğrulama hatası:", err.message);
}
}
verifyEmail("destek@sirketadi.com");
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var url = "https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify";
var apiKey = "fe_live_ORNEK_API_ANAHTARI";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Api-Key", apiKey);
var payload = new {
email = "destek@sirketadi.com",
smtp_check = true,
catch_all_check = true
};
var content = new StringContent(JsonSerializer.Serialize(payload), Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
if (response.IsSuccessStatusCode) {
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine("Sonuç: " + body);
} else {
Console.WriteLine("Hata: " + response.StatusCode);
}
}
}
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"time"
)
func main() {
apiUrl := "https://www.fastexpress.com.tr/wp-json/fastmail/v1/verify"
apiKey := "fe_live_ORNEK_API_ANAHTARI"
payload := map[string]interface{}{
"email": "destek@sirketadi.com",
"smtp_check": true,
"catch_all_check": true,
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", apiUrl, bytes.NewBuffer(jsonData))
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-Api-Key", apiKey)
client := &http.Client{Timeout: 12 * time.Second}
resp, err := client.Do(req)
if err != nil {
fmt.Println("Hata:", err)
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
fmt.Println("HTTP Kodu:", resp.StatusCode)
fmt.Println("Yanıt:", string(body))
}
4. Tek Satır JavaScript Doğrulama Widget'ı
Embeddable Widget
Herhangi bir web sitesi, kayıt formu, bülten aboneliği veya ödeme sayfasına yalnızca tek satır <script> etiketi ekleyerek gerçek zamanlı canlı e-posta doğrulaması, yazım hatası (typo) düzeltme rozetleri ve sahte hesap engelleme özelliğini aktif edebilirsiniz.
<!-- HTML formunuzun hemen altına veya <body> sonuna ekleyin -->
<script
src="https://www.fastexpress.com.tr/wp-content/themes/hosteva/verify-mail/fe-verify-widget.js"
data-api-key="fe_live_ORNEK_API_ANAHTARI"
data-target="#email"
data-quality="extreme"
defer>
</script>
Widget Konfigürasyon Parametreleri (Data Attributes)
| Parametre |
Varsayılan |
Açıklama |
data-api-key |
Zorunlu |
Fast Express tarafından panelden tahsis edilen kurumsal API anahtarınız. |
data-target |
input[type="email"] |
Doğrulanacak input öğesinin CSS seçicisi (Örn: #email, .user-email). |
data-quality |
extreme |
Doğrulama derinliği: extreme (varsayılan), high veya standard. |
data-debounce |
800 |
Kullanıcı yazmayı bıraktıktan sonra API isteği göndermek için beklenecek milisaniye. |
data-api-url |
Otomatik |
Özel reverse proxy veya endpoint kullanmak isterseniz belirtebilirsiniz. |
JavaScript Özel Event Dinleme (feEmailVerified)
Doğrulama tamamlandığında input öğesi üzerinde tetiklenen custom event ile form submit butonunu pasif/aktif yapabilirsiniz:
// Doğrulama sonucunu JavaScript ile yakalama
document.querySelector('#email').addEventListener('feEmailVerified', function(e) {
const result = e.detail;
console.log('Durum:', result.status); // deliverable | risky | undeliverable
console.log('Alt Durum:', result.sub_status); // MailboxExists, MailExchangerIsParked vb.
console.log('Skor:', result.score); // 0 - 100
// Örnek: Geçersiz adreslerde kayıt butonunu kilitleme
const submitBtn = document.querySelector('#registerBtn');
if (submitBtn) {
submitBtn.disabled = (result.status === 'undeliverable');
}
});
5. Durum ve Alt Durum (Sub-Status) Kod Referansı
Sistemimiz uluslararası e-posta doğrulama standartlarına uygun olarak 4 ana durum (status) ve granüler alt durum kodları (sub_status) üretir. Bu kodlar sayesinde kararlarınızı matematiksel netlikte verebilirsiniz.
| Ana Durum |
Alt Durum (sub_status) |
Tipik Skor |
Açıklama ve Aksiyon Tavsiyesi |
| deliverable |
MailboxExists |
90 - 100 |
Hedef sunucu e-postayı ve posta kutusunu onayladı (250 OK). Güvenle gönderim yapılabilir. |
| risky |
MailboxIsCatchAll |
65 - 75 |
Domain genel alıcı (catch-all) modunda, her gelen postayı kabul ediyor; spesifik kutu garantisi yok. |
| risky |
RoleBasedAccount |
60 - 70 |
Şirket departman veya rol hesabı (info@, satis@, admin@). Toplu pazarlamada şikayet riski yüksektir. |
| risky |
FirewallProtected |
75 - 85 |
Kurumsal güvenlik kalkanı (Microsoft 365, Proofpoint vb.) pingi filtreledi; SPF/DMARC ve MX sağlıklı. |
| risky |
ServerTemporaryUnavailable |
50 - 65 |
Hedef sunucu geçici koruma / greylisting uyguladı (451/421). Daha sonra tekrar denenmelidir. |
| undeliverable |
MailboxDoesNotExist |
0 - 20 |
Hedef posta sunucusu kullanıcıyı kesin olarak reddetti (550 User Unknown / Invalid Recipient). |
| undeliverable |
MailExchangerIsParked |
0 |
Alan adı satılık veya park hizmetinde (Sedo, Bodis, Dan.com vb.). Aktif posta kutusu barındırmaz. |
| undeliverable |
MailExchangerIsWellKnownDea |
0 - 10 |
Tek kullanımlık geçici posta servisi (Mailinator, Temp-Mail vb.). Kayıtlar engellenmelidir. |
| undeliverable |
DnsblBlacklisted |
0 - 30 |
Gönderici veya hedef sunucu IP/domaini Spamhaus ZEN / RBL kara listesinde listelenmiş. |
| undeliverable |
DomainDoesNotExist |
0 |
Domain adı kayıtlı değil veya aktif DNS / MX ağ geçidi bulunmuyor. |
| undeliverable |
SyntaxError |
0 |
E-posta formatı RFC 5322 kurallarına aykırı (hatalı karakterler veya eksik yapı). |
| unknown |
ServerIsTarpit |
40 - 50 |
Hedef sunucu bilinçli olarak bağlantıyı donduruyor (tarpitting). Sistem koruması tetiklendi. |
| unknown |
SmtpConnectionTimeout |
40 - 50 |
Hedef sunucuya ayrılan süre zarfında yanıt alınamadı. |
6. Kalite Seviyeleri (Quality Levels)
Sistemimizde doğrulama hassasiyetini ve teslim edilebilirlik oranını maksimize etmek için varsayılan tarama modu extreme (ekstrem derinlik) olarak ayarlanmıştır:
extreme (Ekstrem Derinlik)
VARSAYILAN
10 Saniye + Anti-Tarpit + 2 Geçiş Greylist
Genişletilmiş soket zaman aşımı, derin anti-tarpit koruması ve en yüksek doğruluk sağlar. Milyonluk e-posta bültenleri öncesi temizlik ve kesin doğruluk için standarttır.
high (Yüksek Kalite)
2 Geçişli + Greylist Bypass (3 - 5 saniye)
Sunucu 451/421 greylisting ertelemesi verirse otomatik olarak bekler ve ikinci denemeyi gerçekleştirir. CRM ve pazarlama listeleri için önerilir.
standard (Standart Hızlı)
Hızlı Tek Geçiş (1 - 2 saniye)
Kullanıcı kayıt formları ve anlık widget için tek geçişli hızlı kontrol.