Temsilci etkinlikleri için Webhook'ları ayarlama
Bir temsilcinin işi bittiğinde veya başarısız olduğunda, bir temsilci onay beklediğinde ya da bir doküman sitesi yayınlandığında kendi https uç noktanızda imzalı bir POST isteği alın. Etkinlikler, yükler, imza doğrulama, yeniden denemeler ve otomatik devre dışı bırakma.
Bir webhook, bir temsilcinin işinin bitmesi veya bir temsilcinin onay beklemesi gibi bir durum gerçekleştiği anda kendi uç noktanıza imzalı bir POST gönderir, böylece sistemlerinizin sürekli sorgulama yapmasına gerek kalmaz. Bu makale; bir uç nokta eklemeyi, etkinlikleri, yükü, imza doğrulamayı ve teslimatlar başarısız olduğunda neler yaşandığını kapsar.
Başlamadan önce
- Webhook'lar Pro, Business ve Custom planlarında mevcuttur ("Webhook'lar Pro ve üzeri planlarda mevcuttur.").
- Webhook'ları yalnızca çalışma alanı sahibi ve yöneticileri yönetebilir. Diğer üyeler "Webhook'ları yalnızca sahipler ve yöneticiler yönetebilir" uyarısını görür.
- 10 saniye içinde
2xxdurumuyla yanıt veren herkese açık bir https adresine ihtiyacınız vardır. - Bir çalışma alanında en fazla 10 webhook bulunabilir.
Webhook ekleme
Webhook'lar sekmesini açma
Çalışma alanı menüsünü açın, AI agents & API seçeneğini belirleyin ve ardından Webhooks kısmına girin. Yeni webhook düğmesine tıklayın.

Her webhook; aldığı etkinlikleri, en son ne zaman gönderim yaptığını ve gizli anahtarının son kısmını gösterir. Uç noktayı girme
- Endpoint URL: "Herkese açık bir HTTPS adresi." Örneğin
https://example.com/clevera/webhooks. - Açıklama: isteğe bağlı, en fazla 200 karakter, örneğin "Slack aktarıcısı".
- Endpoint URL: "Herkese açık bir HTTPS adresi." Örneğin
Etkinlikleri seçme
Almak istediğiniz etkinlikleri işaretleyin veya Yeni etkinlikler dahil tüm etkinlikler seçeneğini belirleyin. Yakında olarak işaretlenen etkinlikler kabul edilir ancak "Henüz bu etkinliği gönderen bir şey yok."

Yakında olarak işaretlenen etkinlikler kabul edilir ancak henüz gönderilmez. Oluşturma ve gizli anahtarı kaydetme
Create webhook düğmesine tıklayın. Signing secret (
whsec_ile başlar) yalnızca bir kez gösterilir: "Şimdi kopyalayın: tekrar göremezsiniz. Clevera-Signature başlığını kontrol etmek için kullanın." Bir parola gibi saklayın ve ardından Kaydettim düğmesine tıklayın.Test etkinliği gönderme
Webhook'un ⋯ menüsünü açın ve Test etkinliği gönder seçeneğini belirleyin. Clevera bir kez imzalı
pingetkinliği gönderir (yeniden deneme yapılmaz). "Test etkinliği gönderildi" ifadesi, etkinliğin Clevera'dan çıktığı anlamına gelir; uç noktanızın yanıtı için Teslimatlar kısmını kontrol edin.
Etkinlikler
| Etkinlik | Ne zaman gönderilir |
|---|---|
job.started |
Bir temsilcinin başlattığı iş çalışmaya başladığında. |
job.needs_input |
Bir iş bir kişiyi beklediğinde, örneğin bir onay. Bağlantıyı ve isteğin ne zaman sona ereceğini içerir. |
job.succeeded |
İş tamamlandığında. |
job.failed |
İş başarısız olduğunda. Hata kodunu içerir. |
job.canceled |
İş iptal edildiğinde veya onayı reddedildiğinde ya da süresi dolduğunda. |
approval.requested |
Bir temsilci Temsilci istekleri üzerinden onay istediğinde. |
approval.decided |
Birisi isteği onayladığında veya reddettiğinde ya da istek süresi dolduğunda. |
site.published |
Bir doküman sitesi yayınlandığında. |
site.build_failed |
Bir doküman sitesi yayını başarısız olduğunda. |
ping |
Test etkinliği gönder düğmesine tıkladığınızda. Abonelik gerektirmez. |
Bu etkinlikler Yakında olarak listelenmiştir ve henüz gönderilmemektedir: job.progress, video.ready, article.ready, research.completed, insights.weekly.
İş etkinlikleri, insanların uygulamada başlattığı videoları değil, temsilcilerin (bir API anahtarı veya bağlı bir uygulama aracılığıyla) başlattığı işleri kapsar.
Clevera'nın gönderdikleri
Her teslimat, JSON gövdesine ve şu başlıklara sahip bir POST'dır:
| Başlık | Değer |
|---|---|
Content-Type |
application/json |
User-Agent |
Clevera-Webhooks/1.0 |
Clevera-Event |
job.succeeded gibi etkinlik adı |
Clevera-Delivery |
Teslimatın benzersiz kimliği. Yeniden teslimat aynı kimliği tekrarlar, bu yüzden kopyaları yoksaymak için kullanın. |
Clevera-Signature |
t=<unix time>,v1=<signature> |
Yükler; kimlikleri, bağlantıları, durumları ve sayıları taşır, içeriğin kendisini asla taşımaz. Tamamlanmış bir videoyu veya makaleyi okumak için bir belirteçle API'yi çağırın.
{
"id": "6f1c2d3e-4b5a-4c6d-8e9f-0a1b2c3d4e5f",
"event": "job.succeeded",
"created_at": "2026-10-20T14:03:11Z",
"data": {
"job": {
"id": "job_8k2m4n6p8r0t2v4x",
"kind": "video.create",
"status": "succeeded",
"error_code": null,
"subject": { "type": "video", "id": "vid_example" },
"credits_spent": 64
},
"needs_input": null,
"workspace": { "id": "tm_example" }
}
}
{
"id": "0b9a8c7d-6e5f-4a3b-9c2d-1e0f9a8b7c6d",
"event": "approval.requested",
"created_at": "2026-10-20T14:01:02Z",
"data": {
"approval": {
"id": "apr_example",
"kind": "spend",
"status": "pending",
"credits_high": 80,
"expires_at": "2026-10-21T14:01:02Z",
"decided_at": null,
"url": "https://app.clevera.ai/agents?tab=requests&team=tm_example"
},
"job": { "id": "job_8k2m4n6p8r0t2v4x", "kind": "video.create" },
"workspace": { "id": "tm_example" }
}
}
İmzayı doğrulama
Güvenmeden önce her teslimatı kontrol edin. İmza, imzalama gizli anahtarınızla anahtarlanmış bir HMAC-SHA256'dır; zaman damgası, bir nokta ve ham istek gövdesinden oluşur: <t>.<body>.
Clevera-Signaturebaşlığındantvev1değerlerini okuyun.HMAC-SHA256(secret, t + "." + rawBody)değerini onaltılık (hex) olarak hesaplayın.- Bunu sabit sürede
v1ile karşılaştırın. - Yakalanan bir isteğin tekrar oynatılmaması için
tdeğeri 5 dakikadan eski olan teslimatları reddedin.
import crypto from 'node:crypto';
export function verifyClevera(rawBody, header, secret, toleranceSeconds = 300) {
const parts = Object.fromEntries(header.split(',').map((p) => p.trim().split('=')));
const t = Number(parts.t);
if (!parts.v1 || !Number.isInteger(t)) return false;
if (Math.abs(Date.now() / 1000 - t) > toleranceSeconds) return false;
const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
return expected.length === parts.v1.length &&
crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(parts.v1));
}
import hashlib, hmac, time
def verify_clevera(raw_body: bytes, header: str, secret: str, tolerance: int = 300) -> bool:
parts = dict(p.strip().split("=", 1) for p in header.split(","))
t, v1 = parts.get("t", ""), parts.get("v1", "")
if not t.isdigit() or not v1 or abs(time.time() - int(t)) > tolerance:
return False
expected = hmac.new(secret.encode(), f"{t}.".encode() + raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, v1)
function verifyClevera(string $rawBody, string $header, string $secret, int $tolerance = 300): bool
{
parse_str(str_replace(',', '&', $header), $parts);
$t = $parts['t'] ?? '';
$v1 = $parts['v1'] ?? '';
if (! ctype_digit($t) || $v1 === '' || abs(time() - (int) $t) > $tolerance) {
return false;
}
return hash_equals(hash_hmac('sha256', $t.'.'.$rawBody, $secret), $v1);
}
Gövdeyi tam olarak alındığı gibi kullanın. JSON'ı önce ayrıştırıp yeniden kodlamak baytları değiştirir ve imza eşleşmez.
Yeniden denemeler ve hatalar
Bir teslimat, uç noktanız 2xx durumuyla yanıt verdiğinde teslim edilmiş sayılır. Başka herhangi bir durum denemeyi başarısız kılar:
- yönlendirmeler dahil diğer tüm durumlar (
3xxtakip edilmez); - 10 saniye içinde yanıt gelmemesi (bağlanmak için 5 saniye);
- artık genel internete çözümlenmeyen bir adres.
Clevera başarısız bir teslimatı 1 dakika, 5 dakika, 30 dakika, 2 saat ve 6 saat sonra olmak üzere 5 kez yeniden dener. Uç noktanızın yanıt gövdesi asla okunmaz.
Arka arkaya 15 teslimat başarısız olduğunda, webhook kapatılır: "Arka arkaya 15 başarısız teslimattan sonra kapatıldı. Uç noktayı düzeltin ve ardından açın." Sahip ve yöneticiler "host için webhook kapatıldı" şeklinde bir bildirim alır: "Teslimatları başarısız olmaya devam etti. Uç noktayı düzeltin ve ardından tekrar açın." Kapalıyken gerçekleşen etkinlikler gönderilmez. Test etkinlikleri bu sayıya dahil edilmez.
Webhook yönetimi
Günlüğünü görmek için bir webhook üzerindeki Teslimatlar seçeneğine tıklayın veya geri kalanı için ⋯ menüsünü açın:
| Seçenek | Ne işe yarar |
|---|---|
| Düzenle | URL'yi, etkinlikleri veya açıklamayı değiştirin. |
| Teslimatlar | Durumları (Teslim edildi, Başarısız, Gönderiliyor), Denemeler ve HTTP kodu ile son 100 teslimat. Yeniden teslim et birini tekrar gönderir. Teslimatlar 30 gün boyunca saklanır. |
| Test etkinliği gönder | İmzalı bir ping gönderir. |
| Gizli anahtarı yeniden oluştur | "Teslimatlar hemen yeni gizli anahtarla imzalanır. Uç noktanızı bunu kontrol edecek şekilde güncelleyin." Çakışma yoktur, bu yüzden uç noktanızı hemen ardından güncelleyin. |
| Kapat / Aç | Teslimatları duraklatın ve devam ettirin. |
| Sil | "Ona etkinlik göndermeyi durdururuz ve teslimat günlüğünü sileriz. Bu işlem geri alınamaz." |
Çalışma alanı Pro planından ayrılırsa
Webhook'lar listelenmeye devam eder ve düzenlenip silinebilir, ancak hiçbir şey gönderilmez. Yeniden deneme bekleyen teslimatlar plan_locked ile başarısız olarak sonuçlanır ve Test etkinliği gönder ile Yeniden teslim et seçenekleri "Webhook'lar planınızda mevcut değil" uyarısını verir. Tekrar Pro'ya yükseltmek gönderimi başlatır; hiçbir şey silinmez.
Sorun giderme
| İleti | Neden | Çözüm |
|---|---|---|
| "Webhook'lar planınızda mevcut değil." | Çalışma alanı Pro, Business veya Custom planında değil. | Pro'ya yükseltin. |
| "https:// adresi kullanın." | URL http:// ile başlıyor. |
Uç noktayı HTTPS üzerinden sunun. |
| "IP adresi değil, ana bilgisayar adı kullanın." | URL bir IP adresi kullanıyor. | Bir alan adı kullanın. |
| "Bu adres genel internette erişilebilir değil." | Ana bilgisayar özel veya yerel bir adrese çözümleniyor. | Genel bir uç nokta veya aktarıcı kullanın. |
| "Adresten kullanıcı adını ve parolayı kaldırın." | URL user:password@ içeriyor. |
Bunları kaldırın; bunun yerine imzayı kontrol edin. |
| "Geçerli bir web adresi girin." | URL geçerli değil. | Yazım hatalarını kontrol edin. |
| "En az bir etkinlik seçin." | Hiçbir etkinlik işaretlenmemiş. | En az bir etkinlik işaretleyin. |
| "Bu çalışma alanında zaten 10 webhook var." | Çalışma alanı sınırı. | Kullanmadığınız birini silin. |
| "Önce webhook'u tekrar açın." | Kapalı bir webhook'ta yeniden teslimat yapmaya çalıştınız. | Açın ve ardından yeniden teslim edin. |
| "Bu teslimat hala gönderiliyor." | Teslimat hala yeniden deneniyor. | Bitmesini bekleyin. |
| Teslimatlar HTTP koduyla başarısız oluyor | Uç noktanız bir hatayla yanıt verdi. | Uç noktanızın günlüklerini kontrol edin ve 2xx değerini hızlıca döndürdüğünden emin olun; yavaş işlemleri yanıt verdikten sonra yapın. |
| İmzalar asla eşleşmiyor | Gövde kontrol edilmeden önce değiştirildi veya gizli anahtar eski. | Ham gövdeye karşı doğrulayın; emin değilseniz gizli anahtarı yeniden oluşturun. |