Vebhuklar generativ proses tamamlandıqda asinxron bildirişlər almağa imkan verir. Yeniləmələri yoxlamaq üçün /api/v1/status/{id} son nöqtəsini əl ilə sorğulamaq əvəzinə, sistemimiz iş tamamlanan kimi son yükləməni birbaşa serverinizə göndərir.
Vebhuklardan Necə İstifadə Etmək Olar
API-mizlə vebhuklardan istifadə etmək üçün sadəcə webhook_url parametrini /run sorğunuza əlavə edin:
https://fititon.app/api/v1/run?webhook_url=https://your-server.com/webhookGenerativ proses tamamlandıqda (ya uğurla, ya da icra zamanı xəta ilə qarşılaşdıqda), dispetçerimiz tam status yükləməsini ehtiva edən POST sorğusunu təyin etdiyiniz vebhuk URL-nizə göndərəcək.
Təhlükəsizlik Tələbləri
Təhlükəsizlik məqsədləri üçün (SSRF mühafizəsi), webhook_url HTTPS (https://) istifadə etməlidir. Daxili və ya özəl IP ünvanları (məsələn, localhost, 127.0.0.1 və ya 192.168.x.x) qəti şəkildə bloklanır. Əgər yerli olaraq inkişaf etdirirsinizsə, lütfən, Ngrok və ya Cloudflare Tunnels kimi təhlükəsiz tunel xidmətindən istifadə edin.
Nümunə: /run Son Nöqtəsi ilə Vebhuklardan İstifadə
fetch("https://fititon.app/api/v1/run?webhook_url=https://your-server.com/webhook", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
body: JSON.stringify({
model_name: "product-to-model",
inputs: {
image: "http://example.com/path/to/garment.jpg",
// ... other inputs
}
}),
});Vebhuk Yükləmələri
Vebhuk URL-nizə çatdırılan yükləmə /v1/status/{id} son nöqtəsi tərəfindən qaytarılan yükləmə ilə eynidir. O, işin son vəziyyətini ehtiva edir.
Uğurlu Yükləmə
Proses uğurla tamamlandıqda, vebhuk URL-niz status "success" olaraq təyin edilmiş və nəticələri output massivində olan bir POST sorğusu alacaq:
{
"id": "123a87r9-4129-4bb3-be18-9c9fb5bd7fc1",
"status": "success",
"output": [
"https://cdn.fititon.app/users/123/results/output_0.png"
],
"error": null,
"created_at": "2026-07-24T17:30:00.000Z",
"updated_at": "2026-07-24T17:31:15.000Z"
}Xəta Yükləməsi
Əgər proses icra zamanı xəta səbəbindən uğursuz olarsa (məsələn, tanınmayan geyim, sərt moderasiya filtrləri), vebhuk URL-niz dəqiq xəta sətirini alacaq.
{
"id": "123a87r9-4129-4bb3-be18-9c9fb5bd7fc1",
"status": "failed",
"output": null,
"error": {
"name": "InputValidationError",
"message": "The provided garment image could not be processed due to poor lighting."
},
"created_at": "2026-07-24T17:30:00.000Z",
"updated_at": "2026-07-24T17:30:12.000Z"
}Vebhuk Təhlükəsizliyi
Aldığınız vebhukların həqiqətən Fit It On-dan gəldiyinə və zərərli üçüncü tərəf tərəfindən saxtalaşdırılmadığına əmin olmaq üçün yoxlama mexanizmi tətbiq etməlisiniz.
Vebhuklarınızı təmin etməyin ən sadə yolu, /v1/run sorğunuzda təqdim etdiyiniz webhook_url-ə gizli token əlavə etməkdir.
Nümunə: Gizli Tokendən İstifadə
Generativ prosesə başladığınız zaman, URL sorğu parametrlərinizə yüksək dərəcədə təsadüfi bir sətir əlavə edin:
// Make sure to URL-encode the webhook URL if it contains query parameters!
const myWebhookUrl = encodeURIComponent("https://your-server.com/webhook?token=a8f9c2d1e5b47...");
fetch(`https://fititon.app/api/v1/run?webhook_url=${myWebhookUrl}`, {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
},
// ...
body: JSON.stringify({
model_name: "product-to-model",
inputs: {
image: "http://example.com/path/to/garment.jpg",
}
}),
});Serveriniz vebhuk POST sorğusunu qəbul etdikdə, JSON yükləməsini emal etməzdən əvvəl sadəcə token sorğu parametrinin gizli sətirinizlə uyğun gəldiyini yoxlayın.
Zəmanətli Çatdırılma və Yenidən Cəhdlər
Sistemimiz, serveriniz müvəqqəti olaraq işləməsə belə, vebhuk çatdırılmasını heç vaxt qaçırmayacağınızdan əmin olmaq üçün müəssisə səviyyəli yenidən cəhd mexanizmi tətbiq edir.
- Vaxt Aşımı: Dispetçerimiz ciddi 15 saniyəlik vaxt aşımı tətbiq edir. Serveriniz 15 saniyə ərzində
2xxHTTP status kodu ilə vebhuku təsdiq etməlidir. Əgər ağır emal (şəkli yükləmək kimi) aparmaq lazımdırsa, əvvəlcə vebhuka cavab verməli və məlumatları asinxron şəkildə emal etməlisiniz. - Uğursuzluqlar: Əgər serveriniz
2xxolmayan bir status kodu (məsələn,500 Internal Server Error) qaytararsa və ya 15 saniyə ərzində cavab verməzsə, çatdırılmanı uğursuz hesab edirik. - Eksponensial Gecikmə: Sistem eksponensial gecikmədən istifadə edərək (məsələn, 5 dəqiqə, 15 dəqiqə, 45 dəqiqə və s. sonra yenidən cəhd edərək) 5 dəfəyə qədər yenidən cəhd edəcək.
Serverinizə hansı yenidən cəhdin hazırda çatdığını bilmək istəyirsinizsə, hər vebhuk sorğusuna daxil olan x-fititon-retry-count başlığını yoxlaya bilərsiniz.
Ən Yaxşı Təcrübələr
- İdempotentliyi Tətbiq Edin: Şəbəkə şəraiti və yenidən cəhd mexanizmimiz səbəbindən serverinizin eyni vebhuku birdən çox dəfə alması texniki cəhətdən mümkündür. Hadisəni artıq emal edib-etmədiyinizi yoxlamaq üçün
idsahəsindən istifadə etməlisiniz. - Tez Cavab Verin: Şəkilləri yükləməzdən və ya verilənlər bazalarını yeniləməzdən əvvəl həmişə dərhal
200 OKstatusu qaytarın. - Vebhukları Həmişə Yoxlayın: Vebhukların xidmətimizdən gəldiyinə əmin olmaq və zərərli aktyorların yükləmələri saxtalaşdırmasının qarşısını almaq üçün yoxlama mexanizmi (yuxarıda qeyd olunan gizli URL tokeni kimi) tətbiq etməyi düşünün.
