Webhooks API
Webhooks, yeni bir kişi, bir yanıt, rezerve edilen bir randevu ve daha fazlası gibi bir şey gerçekleştiği anda platformun diğer sistemlerinizi bilgilendirmesini sağlar. Bu API, aboneliklerin kendisini yönetir: hangi URL’lerin hangi olayları alacağını belirler. Uç noktanızın aldığı yükleri (payloads) nasıl alacağınız ve doğrulayacağınız hakkında bilgi için Webhooks bölümüne bakın.
Aşağıdaki tüm yollar, API temel URL’sine göre belirlenmiştir:
https://api.youraiconnector.com/v1
Her isteğin kimliği doğrulanmalıdır. Kabul edilen dört yöntem için Kimlik Doğrulama bölümüne bakın. Buradaki örnekler X-API-Key başlığını (ve cURL için bir sorgu parametresi biçimini) kullanır.
Not: Webhook’lar hesabınız için etkinleştirilmiş olmalıdır. Etkinleştirilmemişlerse, bu uç noktalar bir 403 döndürür.
Abonelikler nasıl adreslenir
Her aboneliğin bir id ve isteğe bağlı bir name değeri vardır. Her ikisi de güncelleme, silme, test, sağlık durumu ve yeniden etkinleştirme yollarında {webhookId} olarak kullanılabilir.
İsmi tercih edin. Abonelik kimlikleri konumsal olduğundan, başka bir abonelik silindikten sonra değişebilirler. Bir abonelik oluştururken sabit bir
nameayarlarsanız, sürprizlerden kaçınmak için ona ismiyle hitap edin.
Abonelikleri listele
GET /webhooks
cURL
curl "https://api.youraiconnector.com/v1/webhooks?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/webhooks",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
Yanıt
{
"success": true,
"webhooks": [
{
"id": "0",
"name": "Order updates hook",
"url": "https://hooks.example.com/incoming",
"subscribed_to": ["Contact Created", "Replies"],
"subscribed_to_tags": [],
"created_at": "2026-06-09T12:00:00.000Z",
"signing_enabled": true,
"signing_secret_created_at": "2026-07-15T09:30:00.000Z",
"retries_enabled": true,
"enabled": true,
"apply_to_sub_accounts": false
}
]
}
signing_enabled ve retries_enabled abonelik bazlı isteğe bağlı özelliklerdir ve siz açmadığınız sürece her ikisi de kapalıdır. Bkz. İmzalı yükler ve Yeniden denemeler.
apply_to_sub_accounts, ajans-mirası katılımıdır — bkz. Tüm müşteri hesapları için tek abonelik. Varsayılan olarak kapalıdır ve müşteri hesabı olmayan hesaplarda etkisizdir.
enabled, aboneliğin açma/kapama anahtarıdır — bkz. Bir aboneliği kapatma. Kapatılan abonelikler burada listelenmeye devam eder.
İmzalama gizli anahtarının kendisi burada asla yer almaz — onu GET /webhooks/{id}/signing-secret adresinden okuyun.
Abone olunabilir olay türlerini listele
subscribed_to içinde kullanabileceğiniz tam dizeleri döndürür. Bunu, olay adlarını kodunuza sabit olarak yazmak yerine geçerli olay adlarını keşfetmek için kullanın.
GET /webhooks/events
cURL
curl "https://api.youraiconnector.com/v1/webhooks/events" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks/events", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/webhooks/events",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
Yanıt
Yanıt {"success": true, "events": [...]} şeklindedir ve events şu anda 22 kesin dizeyi barındırır: Contact Created, Human Alerted, Appointment Booked, Replies, Reads, Deliveries, Credits Spent, Credits Recharged, Low Credit Balance, Contact Paused, Contact Do Not Disturb, Contact Unarchived, New Message, Contact Resumed, Chat Concluded, Task Created, Task Updated, Task Completed, Daily Summary Created, Channel Connected, Broadcast Started ve Broadcast Completed (Channel Connected, subscribed_to içinde kabul edilir ancak şu anda hiçbir şey bunu yaymaz, bu yüzden buna göre geliştirme yapmayın).
Her bir olayın ne anlama geldiği ve yükte (payload) hangi event kodunu gönderdiği hakkında bilgi için bkz. 22 Webhook Olayı. Bu uç nokta her an için yetkili listedir; isimleri kodunuza sabit olarak yazmak yerine canlı olarak okuyun.
Bir abonelik oluştur
POST /webhooks
| Alan | Gerekli | Açıklama |
|---|---|---|
url |
Evet | Etkinlik yüklerini POST aracılığıyla alacak HTTPS URL’si. Herkese açık şekilde erişilebilir olmalıdır. |
subscribed_to |
Evet | Etkinlik adlarından oluşan boş olmayan bir dizi (bkz. /webhooks/events). |
name |
Hayır | Bir görünen ad. Daha sonra {webhookId} olarak da kullanılabilir. Varsayılan olarak zaman damgalı bir ad kullanılır. |
subscribed_to_tags |
Hayır | Hangi etiketlerin konuşma özeti bildirimi oluşturacağını daraltan etiket kimlikleri. Bu, aboneliğin etkinliklerini bu etiketlerle sınırlamaz; belirli bir etiket uygulandığında istek almak için, temsilcinin (veya kampanyanın) Etiketler sekmesindeki etikete bir webhook URL’si ayarlayın. |
retries_enabled |
Hayır | Boole değeri, varsayılan false. Başarısız teslimatların yeniden denenmesi için katılım sağlayın. |
generate_signing_secret |
Hayır | Boole değeri, varsayılan false. Abonelikle birlikte bir HMAC imzalama gizli anahtarı oluşturun. Gizli anahtar, yanıtta üst düzey bir signing_secret olarak bir kez döndürülür. |
enabled |
Hayır | Boole değeri, varsayılan true. Aboneliği kapalı olarak oluşturmak için false değerini iletin. Bkz. Aboneliği kapatma. |
apply_to_sub_accounts |
Hayır | Boole değeri, varsayılan false. Bir ajans hesabında true, bu aboneliğin tüm müşteri hesaplarından da etkinlik almasını sağlar — bkz. Tüm müşteri hesapları için tek abonelik. |
URL kuralları: URL,
https://kullanmalı ve herkese açık şekilde erişilebilir olmalıdır. Düzhttp://,localhost, özel ağ adresleri ve platform içi adresler400ile reddedilir.
cURL
curl -X POST "https://api.youraiconnector.com/v1/webhooks?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example.com/incoming",
"subscribed_to": ["Contact Created", "Replies"],
"name": "Order updates hook"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://hooks.example.com/incoming",
subscribed_to: ["Contact Created", "Replies"],
name: "Order updates hook",
}),
});
const data = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/webhooks",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"url": "https://hooks.example.com/incoming",
"subscribed_to": ["Contact Created", "Replies"],
"name": "Order updates hook",
},
)
data = res.json()
Yanıt
{
"success": true,
"webhook_id": "1",
"webhook": {
"id": "1",
"name": "Order updates hook",
"url": "https://hooks.example.com/incoming",
"subscribed_to": ["Contact Created", "Replies"],
"subscribed_to_tags": [],
"created_at": "2026-06-09T12:00:00.000Z"
}
}
Bir aboneliği güncelle
url, subscribed_to, name, subscribed_to_tags, retries_enabled, enabled veya apply_to_sub_accounts alanlarından en az birini sağlayın. Atlanan alanlar mevcut değerlerini korur. subscribed_to ve subscribed_to_tags birleştirme değil, değiştirme işlemidir.
PUT /webhooks/{webhookId}
Bir aboneliği güncellemek, imzalama gizli anahtarını asla bozmaz — bunu imzalama gizli anahtarı rotaları üzerinden yönetin.
URL değiştiğinde, yeni URL için teslimat otomatik olarak yeniden etkinleştirilir ve daha önce başarısız olan bir uç noktaya temiz bir başlangıç sağlar.
cURL
curl -X PUT "https://api.youraiconnector.com/v1/webhooks/Order%20updates%20hook" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://hooks.example.com/v2/incoming",
"subscribed_to": ["Replies", "Chat Concluded"]
}'
JavaScript
const res = await fetch(
`https://api.youraiconnector.com/v1/webhooks/${encodeURIComponent("Order updates hook")}`,
{
method: "PUT",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://hooks.example.com/v2/incoming",
subscribed_to: ["Replies", "Chat Concluded"],
}),
}
);
const data = await res.json();
Python
import requests
res = requests.put(
"https://api.youraiconnector.com/v1/webhooks/Order updates hook",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"url": "https://hooks.example.com/v2/incoming",
"subscribed_to": ["Replies", "Chat Concluded"],
},
)
data = res.json()
Yanıt
{
"success": true,
"webhook_id": "0",
"webhook": {
"id": "0",
"name": "Order updates hook",
"url": "https://hooks.example.com/v2/incoming",
"subscribed_to": ["Replies", "Chat Concluded"],
"subscribed_to_tags": [],
"created_at": "2026-06-09T12:00:00.000Z"
}
}
Bilinmeyen bir kimlik veya ad, { "success": false, "error": "Webhook not found" } ile birlikte 404 döndürür.
Bir aboneliği sil
Aboneliği kaldırır, böylece URL’si artık yük almaz. Teslimat sağlığı sayaçları sıfırlanır, bu nedenle aynı URL’yi daha sonra tekrar eklemek temiz bir kayıtla başlar.
DELETE /webhooks/{webhookId}
cURL
curl -X DELETE "https://api.youraiconnector.com/v1/webhooks/0" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks/0", {
method: "DELETE",
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.delete(
"https://api.youraiconnector.com/v1/webhooks/0",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
Yanıt
{
"success": true
}
Bir test yükü gönder
Alıcınızı uçtan uca doğrulayabilmeniz için aboneliğin URL’sine örnek bir yük gönderir. Örnekle hangi etkinlik türünün simüle edileceğini kontrol etmek için isteğe bağlı olarak bir event iletin. Test teslimatları, aboneliğin sağlık sayaçlarını asla etkilemez.
POST /webhooks/{webhookId}/test
Yanıt her zaman 200 döndürür ve sonucu bir delivered bayrağıyla bildirir; başarısız bir test hata durumu döndürmez. delivered değeri false olduğunda, yanıt hata ayrıntılarını içerir.
| Alan | Zorunlu | Açıklama |
|---|---|---|
event |
Hayır | Simüle edilecek etkinlik türü (/webhooks/events değerlerinden biri olmalıdır). Varsayılan olarak bir teslimat etkinliğidir. |
cURL
curl -X POST "https://api.youraiconnector.com/v1/webhooks/0/test?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "event": "Contact Created" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks/0/test", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ event: "Contact Created" }),
});
const data = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/webhooks/0/test",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"event": "Contact Created"},
)
data = res.json()
Yanıt (iletildi)
{
"success": true,
"webhook_id": "0",
"delivered": true
}
Yanıt (başarısız)
{
"success": true,
"webhook_id": "0",
"delivered": false,
"failure_type": "permanent",
"status_code": 404,
"error_message": "Request failed with status code 404"
}
failure_type; permanent, temporary, timeout, network veya unknown değerlerinden biridir.
Teslimat durumunu kontrol et
Aboneliğin URL’si için teslimat durumu kaydını döndürür: kaç teslimatın başarılı ve başarısız olduğu, tekrarlanan hatalardan sonra teslimatın şu anda duraklatılıp duraklatılmadığı ve en son hatanın ayrıntıları. Henüz hiçbir teslimat denenmediğinde "health": null döndürür.
GET /webhooks/{webhookId}/health
cURL
curl "https://api.youraiconnector.com/v1/webhooks/0/health" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks/0/health", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/webhooks/0/health",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
Yanıt
{
"success": true,
"webhook_id": "0",
"url": "https://hooks.example.com/incoming",
"health": {
"consecutive_failures": 0,
"total_failures": 2,
"total_successes": 120,
"is_disabled": false,
"disabled_at": null,
"disabled_reason": null,
"last_failure": null,
"last_success_at": "2026-06-09T12:00:00.000Z",
"created_at": "2026-05-01T08:00:00.000Z",
"updated_at": "2026-06-09T12:00:00.000Z"
}
}
is_disabled değeri true olduğunda, URL’ye yapılan teslimat tekrarlanan hatalardan sonra otomatik olarak duraklatılmıştır. Alıcınızı düzeltin ve ardından (aşağıdan) yeniden etkinleştirin.
Teslimatı yeniden etkinleştir
URL’si tekrarlanan hatalardan sonra otomatik olarak duraklatılan bir webhook için teslimatı sürdürür. Bu işlem, duraklatma bayrağını ve hata sayaçlarını sıfırlar ancak bir teslimat denemesi yapmaz; alıcınızın tekrar sağlıklı olduğunu doğrulamak için sonrasında test uç noktasını kullanın.
POST /webhooks/{webhookId}/reenable
cURL
curl -X POST "https://api.youraiconnector.com/v1/webhooks/0/reenable?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/webhooks/0/reenable", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/webhooks/0/reenable",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
Yanıt
{
"success": true,
"webhook_id": "0"
}
Bir aboneliği kapatma
enabled, aboneliğin kendi açma/kapama anahtarıdır. Kapatılması, URL’yi, etkinlik listesini ve imzalama gizli anahtarını korurken teslimatları durdurur.
# Off
curl -X PUT "https://api.youraiconnector.com/v1/webhooks/0?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled": false}'
# Back on
curl -X PUT "https://api.youraiconnector.com/v1/webhooks/0?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"enabled": true}'
- Belirtilmemesi açık olduğu anlamına gelir. Bu alan mevcut olmadan önce oluşturulan bir aboneliğin kayıtlı
enableddeğeri yoktur ve normal şekilde teslimat yapar.GET /webhooksher zaman somut bir boole değeri bildirir. - Kapatılan abonelikler
GET /webhookstarafından listelenmeye devam eder — onları tekrar açmak için bu şekilde bulursunuz. - Kapatma işleminden önce kuyruğa alınan bir yeniden deneme devam etmez: yeniden deneme, gönderim sırasında aboneliği tekrar okur ve kapalıysa işlemi bırakır.
- Kapalıyken engellenen hiçbir şey, tekrar açtığınızda yeniden oynatılmaz.
Tekrarlanan başarısızlıklar sonrasında gerçekleşen otomatik devre dışı bırakma işleminden farklıdır; bu durum
GET /webhooks/{id}/healthtarafındanis_disabledolarak bildirilir vePOST /webhooks/{id}/reenableile temizlenir.enabledhesabın anahtarıdır;is_disabledise bizimkidir. Hiçbiri diğerini geçersiz kılmaz; bir aboneliğin teslimat yapabilmesi için hem açık olması hem de otomatik olarak devre dışı bırakılmamış olması gerekir.
Tüm müşteri hesapları için tek abonelik (ajanslar)
Bir ajans hesabında, bir abonelikte (oluşturma sırasında veya PUT aracılığıyla) apply_to_sub_accounts: true ayarını yapın; böylece abonelik, ajansın tüm müşteri hesaplarında gerçekleşen olayları da alır — her müşteri hesabında aboneliği yeniden oluşturmak yerine, tüm ajansı kapsayan tek bir uç nokta yeterlidir.
curl -X PUT "https://api.youraiconnector.com/v1/webhooks/0?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"apply_to_sub_accounts": true}'
Nasıl çalışır:
userbloğu hesapları birbirinden ayırır. Her yükünuserbloğu, olayın gerçekten hangi hesapta gerçekleştiğini tanımlar, böylece alıcınız müşteri bazlı yönlendirme yapabilir.- Ajans aboneliğinin kendi ayarları her yerde geçerlidir. Olay listesi, imzalama gizli anahtarı ve yeniden deneme katılımı, devralınan teslimatlar için de kullanılır.
- Müşteri hesabının aynı URL’ye olan kendi aboneliği önceliklidir. Bir müşteri hesabının aynı URL’yi işaret eden kendi aboneliği varsa, o hesabın olayları için bu abonelik kullanılır; aynı olay bir uç noktaya asla iki kez teslim edilmez.
- Müşteri hesapları bunu görmez. Devralınan abonelikler, müşteri hesabının kendi webhook listesinde görünmez ve müşteri bunları kapatamaz; yalnızca ajans bunları yönetir.
- Teslimat sağlığı müşteri hesabı bazında izlenir. Sürekli başarısız olan bir uç nokta, tüm ajans için değil, yalnızca teslimatları başarısız olan hesap için otomatik olarak devre dışı bırakılır.
subscribed_to_tagsdevralınmaz. Etiket listesi, müşteri hesaplarında bulunmayan ajansın kendi etiketlerine referans verir; konuşma özeti daraltma yalnızca ajansın kendi olayları için geçerlidir.- Başka yerlerde etkisizdir. Müşteri hesabı olmayan bir hesapta bayrak düzgün bir şekilde saklanır ancak hiçbir işlev görmez.
Her teslimatta bulunan başlıklar
Bu üç başlık, aboneliğin imzalı olup olmadığına bakılmaksızın her teslimatta gönderilir:
| Başlık | Anlamı |
|---|---|
X-Webhook-Delivery |
Mantıksal olay için kararlı kimlik. Yeniden denemeler boyunca aynıdır; bunun üzerinden tekilleştirme yapın. |
X-Webhook-Attempt |
1 tabanlı deneme numarası. |
X-Webhook-Event |
Olay adı. |
İmzalı yükler
İmzalama isteğe bağlıdır, varsayılan olarak kapalıdır ve abonelik başına ayarlanır. Bir aboneliğin imzalama gizli anahtarı olduğunda, her teslimat, her teslimatta gönderilen üç başlığa (X-Webhook-Delivery, X-Webhook-Attempt ve X-Webhook-Event) ek olarak iki başlık daha taşır:
| Başlık | Anlamı |
|---|---|
X-Webhook-Signature |
v1=<hex> — GET/POST/DELETE /v1/webhooks/{webhookId}/signing-secret adresinde oluşturduğunuz ve döndürdüğünüz webhook başına imzalama gizli anahtarı ile anahtarlanmış, "<timestamp>.<raw request body>" dizesinin HMAC-SHA256 değeri. |
X-Webhook-Timestamp |
Gönderim zamanı, Unix saniyeleri. İmzaya dahil edilmiştir, bu nedenle bağımsız olarak değiştirilemez. |
Doğrulamak için, ham gövde üzerinde gizli anahtarınızla HMAC-SHA256’yı yeniden hesaplayın ve başlıkla karşılaştırın. Ham istek gövdesine göre doğrulama yapın. Ayrıştırılmış JSON’u yeniden serileştirmek baytları değiştirir ve karşılaştırmayı bozar. Tekrar saldırılarını (replay) önlemek için zaman damgası bir tazelik penceresinin (300 saniye makul bir varsayılandır) dışında olan teslimatları reddedin ve zamanlama açısından güvenli bir fonksiyonla karşılaştırın.
Tam Node ve Python doğrulama örnekleri için İmzalı Yükler bölümüne bakın.
İmzalama, API kimlik doğrulaması ile aynı şey değildir. REST API’nin kendisi OAuth yerine API anahtarlarıyla kimlik doğrulaması yapar (bot araçları olarak kaydettiğiniz MCP sunucuları için OAuth 2.1 mevcuttur) ve henüz resmi bir npm veya PyPI SDK paketi yoktur; uç noktaları herhangi bir HTTP istemcisiyle çağırın.
İmzalama gizli anahtarını okuyun
GET /webhooks/{id}/signing-secret
curl "https://api.youraiconnector.com/v1/webhooks/0/signing-secret?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"webhook_id": "0",
"signing_enabled": true,
"signing_secret": "whsec_1a2b3c...",
"signing_secret_created_at": "2026-07-15T09:30:00.000Z"
}
İmzalama kapalı olduğunda, signing_enabled değeri false ve signing_secret değeri null olur.
İmzalama gizli anahtarını oluşturun veya döndürün
POST /webhooks/{id}/signing-secret
Bir gizli anahtar oluşturur (imzalamayı açar) veya mevcut olanı değiştirir. Yeni gizli anahtarı döndürür.
curl -X POST "https://api.youraiconnector.com/v1/webhooks/0/signing-secret?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"webhook_id": "0",
"signing_enabled": true,
"signing_secret": "whsec_9f8e7d...",
"signing_secret_created_at": "2026-07-15T10:00:00.000Z"
}
Döndürme işlemi hemen geçerli olur; bir sonraki teslimat yalnızca yeni gizli anahtarla imzalanır. Değişikliği canlı bir uç noktaya yayarken her iki gizli anahtarı da kısa bir süreliğine kabul edin.
POST /webhooks öğesine "generate_signing_secret": true değerini geçirerek oluşturma sırasında bir gizli anahtar da oluşturabilirsiniz; yanıt daha sonra üst düzey bir signing_secret alanı içerir.
İmzalamayı kapatma
DELETE /webhooks/{id}/signing-secret
curl -X DELETE "https://api.youraiconnector.com/v1/webhooks/0/signing-secret?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"webhook_id": "0",
"signing_enabled": false
}
Her üç imzalama gizli anahtarı rotası da
GETdahil olmak üzere Entegrasyonlar düzenleme izni gerektirir; gizli anahtar, teslimatları taklit edebilen bir kimlik bilgisi olduğundan salt okunur rollere gösterilmez.
Yeniden denemeler
İsteğe bağlıdır, varsayılan olarak kapalıdır ve POST /webhooks veya PUT /webhooks/{id} üzerindeki retries_enabled boole değeri aracılığıyla abonelik başına ayarlanır.
curl -X PUT "https://api.youraiconnector.com/v1/webhooks/0?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"retries_enabled": true}'
Etkinleştirildiğinde, başarısız bir teslimat ilk denemeden sonra 1dk, 5dk, 30dk ve 2sa aralıklarla yeniden denenir (yaklaşık 2 saat 40 dakikalık bir kapsama alanı).
- Yeniden denenenler: 5xx yanıtları, zaman aşımları ve bağlantı hataları.
- Yeniden denenmeyenler: herhangi bir 4xx. Alıcı isteğin kendisini reddediyorsa, isteği değiştirmeden tekrar oynatmak yalnızca reddi tekrarlar.
Yeniden denemeler mükerrer teslimatı mümkün kılar — bir olayı işleyen ancak yanıt vermeden önce zaman aşımına uğrayan bir uç nokta, olayı tekrar görecektir. Denemeler boyunca sabit kalan X-Webhook-Delivery üzerinden tekilleştirme yapın. Yeniden denemelerin isteğe bağlı olmasının nedeni budur.
delivery-health sayaçları her denemeyi değil, tüm teslimatı sayar: bir hata yalnızca tüm yeniden denemeler tükendiğinde bir kez kaydedilir, bu nedenle yeniden denemeleri etkinleştirmek otomatik devre dışı bırakma tetikleyicisinin daha erken çalışmasına neden olmaz.
Hatalar
Tüm hatalar standart zarfı kullanır:
{
"success": false,
"error": "Webhook not found"
}
Yaygın durumlar: izin verilmeyen bir URL, boş/geçersiz bir subscribed_to veya eksik alanlar 400 döndürür; bilinmeyen bir kimlik veya ad 404 döndürür; ve 403, hesabınız için webhook’ların etkinleştirilmediği anlamına gelir. Tam liste için Hatalar bölümüne bakın.
Sonraki adımlar
- Web kancaları (yükleri alma) — alıcınızı ayarlayın ve yük biçimini anlayın.
- Kimlik Doğrulama — bir isteğin kimliğini doğrulamanın dört yolu.
- Hatalar ve Hız Sınırları — durum kodları ve 300 istek/dakika sınırı.