WisyLink API'si, barındırılan web sitelerini koddan oluşturup güncellemeni sağlar. Referans dosyalarını yükle, POST /chat uç noktasına sade bir dille yazılmış bir mesaj gönder; yapay zeka ajanı siteyi oluşturur ve kendi wisylink.com adresinde yayınlar. Değiştirmek için aynı bağlantı kimliğiyle yeni bir mesaj gönder. API kullanımı, planının 5 saatlik ve haftalık kullanım hakkından düşer.
- Birkaç REST uç noktası tüm yaşam döngüsünü kapsar: dosya yükleme,
POST /chatile site oluşturma ya da sürdürme, durumu sorgulama, siteleri listeleme ve silme. POST /chatuygulamadaki asistanın aynısı olan Wisy ile konuşur; bu yüzden yanıt bir oluşturma yerine bir soru olabilir. Sorgulamaya başlamadan öncestatusalanına bak.- API anahtarları web'de oluşturulur ve her biri, planının pencerelerine ek olarak günlük, haftalık ya da aylık en fazla $10'lık kendi harcama sınırını taşır.
@wisylink/clinpm paketi aynı uç noktaları bir komut satırı aracı ve bir Node istemcisi olarak sunar.- Özel alan adları ve servis anahtarları (Stripe, e-posta) web ya da mobil uygulamadan ayarlanır; herkese açık API bunları kapsamaz.
Neleri otomatikleştirebilirsin?
API, sohbet penceresi olmayan sohbettir. Her POST /chat isteği Wisy'ye giden bir mesajdır; istek netse bir yapay zeka oluşturma ajanı sunucuda işlenen bir web uygulaması yazar ve onu https://<id>.wisylink.com adresinde yayınlar; brif gerektiriyorsa kayıtlı veri, kullanıcı hesapları ya da dosya yükleme de ekler. Şablon, tema ya da sayfa türü parametresi yoktur. Bölümlerden metinlere, özelliklerden stile kadar sitenin her şeyi, bir insanın anlatacağı gibi mesajın içinde yer alır. (Bunun arkasındaki kavramlar için yapay zeka uygulama oluşturucu nedir yazısına bak.)
Temel URL https://api.wisylink.com. Kimlik doğrulama için x-api-key: <key> başlığını ya da Authorization: Bearer <key> kullan. JSON uç noktaları Content-Type: application/json bekler; zaman damgaları epoch milisaniye cinsindendir.
| Uç nokta | Yöntem | Amaç | Önemli alanlar |
|---|---|---|---|
/files | POST | Dosya yüklemesi başlatır | Giden name, dönen id |
/files/chunks | POST | Dosyanın baytlarını istek başına en fazla 4 MB olarak yükler | id ve son parçada last=true; ham ikili gövde |
/files/:id | GET | Dosya bilgilerini okur | content_type, name, size |
/files/:id | DELETE | Bir dosyayı siler | Bağlantıların file_ids listesinden de kaldırılır |
/chat | POST | Site oluşturur (id olmadan) ya da sürdürür (id ile) | message, en fazla 10 file_ids; dönenler: id, url, status, answer |
/links | GET | Sitelerini en yeniden başlayarak listeler | page, limit (1 ile 100 arası); items, total_pages, has_next |
/links/:id | GET | Tek bir siteyi okur | status, url, file_ids |
/links/:id | DELETE | Bir siteyi ve referans dosyalarını siler | {"ok": true} döner |
Herkese açık API'nin yapmadıkları: bir sitenin ödeme ya da e-posta için ihtiyaç duyduğu anahtarları ayarlamak (bunları site sahibi Entegrasyonlar altına yapıştırır), özel alan adı bağlamak, bir sitenin kayıtlı verisini okumak ya da yazmak ve kaynak kodu dışa aktarmak.
API anahtarı al ve anahtar başına harcama sınırı belirle
- wisylink.com'da oturum aç. Anahtarlar mobil uygulamalarda değil, yalnızca web'de oluşturulur.
- Hesap ayarlarında API anahtarları bölümünü aç ve Anahtar oluştur'u seç.
- Anahtara kullanılacağı yerin adını ver, örneğin "acme-tanitim-sayfalari-ci"; böylece iptal ettiğinde neyin bozulacağını bilirsin.
- Pencereyi ve sınırı belirle. Günlük, haftalık ya da aylık bir pencere ve pencere başına en fazla $10 olacak şekilde USD cinsinden bir harcama sınırı seç. Pencereler UTC'ye göre gün, pazartesi başlayan hafta ya da ay olarak işler.
- Anahtarı hemen kopyala. Yalnızca bir kez gösterilir. Gizli anahtar yöneticinde ya da CI gizli değişkenlerinde, örneğin
WISYLINK_API_KEYolarak sakla.
Bu sınır planın değil, bir güvenlik frenidir. Her istek ayrıca hesabının, web ve mobil sohbetin de kullandığı kayan 5 saatlik ve haftalık pencerelerinden düşer; ölçüm, isteğin tetiklediği yapay zeka işine göre yapılır ve referans dosyalarının okunması da buna dahildir. Sınır her istekten önce kontrol edilir, harcama ise istekten sonra kaydedilir; bu yüzden bir penceredeki son istek sınırı biraz aşabilir. Bir anahtarı iptal etmek onu anında siler; onu kullanmaya devam eden her şey 401 alır.
API ücretsiz planda kullanılabilir mi? Evet. Topluluk planında uygulamadaki kurallar geçerlidir: 5 saatlik pencere başına bir oluşturma, siteler ise 30 gün artı silinmek üzere işaretli bir hafta yayında kalır. Bu, bir entegrasyonun prototipini çıkarmaya yeter; müşteri işleri ya da toplu üretim için ücretli bir plan daha fazla kullanım hakkı, paralel oluşturma ve abone olduğun sürece yayında kalan bağlantılar sağlar.
Referans dosyalarını yükle (parçalı yükleme)
Referans dosyaları, ajanın okuması ya da siteye koyması gereken her şeydir: bir marka rehberi, bir logo, ürün fotoğrafları, bir fiyat listesi. Desteklenen formatlar JPEG, PNG, WebP, GIF, HEIC, SVG, MP3, MP4, PDF, XLSX, DOCX, CSV, TXT, JSON ve HTML; her biri 25 MB'a kadar. Gerçek tür baytlardan tespit edilir ve boş dosyalar reddedilir.
Yükleme iki çağrı sürer. Önce dosyayı oluştur ve dönen id değerini sakla:
curl -s -X POST https://api.wisylink.com/files -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"name":"marka-rehberi.pdf"}'
Sonra baytları gönder. 4 MB ya da daha küçük bir dosya, last=true ile tek istekte gider:
curl -s -X POST "https://api.wisylink.com/files/chunks?id=$FILE_ID&last=true" -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/octet-stream" --data-binary @marka-rehberi.pdf
Daha büyük dosyaları böl (split -b 4m marka-rehberi.pdf part_), parçaları sırayla aynı id değerine gönder ve last=true parametresini yalnızca son parçaya ekle; dosyayı tamamlayan ve işleyen çağrı odur. Yükleme 15 dakika içinde bitmelidir, yoksa oturumun süresi dolar. Node'da aşağıda anlatılan istemci parçalama işini senin yerine yapar.
POST /chat ile site oluştur ve canlı URL'yi bekle
Brifi gönder
Yeni bir site başlatmak için id göndermemen yeterli. Mesaj 5.000 karaktere kadar olabilir; bu, düzgün bir brif için yeterli yer demektir: amaç, hedef kitle, bölümler, gerçek metinler, özellikler, stil ve dil. İlk çağrıda oluşturmanın başlama ihtimalini artırmak için mesajı "belirtmediğim her şey için mantıklı varsayılanlar seç" diye bitir. FILE_ID yerine yüklemenden dönen kimliği yaz.
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"message":"Kadıköy merkezli nitelikli kahve kavurucusu Köz Kahve için tek sayfalık bir tanıtım sitesi oluştur. Bölümler: giriş, fiyatlarıyla üç tek kökenli kahve, yönetim alanına kaydedilen toptan satış talep formu, çalışma saatleri, harita bağlantısı. Renkler ve yazı tipleri için ekteki marka rehberini kullan. Belirtmediğim her şey için mantıklı varsayılanlar seç.","file_ids":["FILE_ID"]}'
Aynı çağrı, Node'da fetch ile:
const res = await fetch("https://api.wisylink.com/chat", { method: "POST", headers: { "x-api-key": process.env.WISYLINK_API_KEY, "Content-Type": "application/json" }, body: JSON.stringify({ message: brief, file_ids: [fileId] }) }); let link = await res.json();
Yeni bir site 201 koduyla id, url, status, answer, created_at ve updated_at döndürür. id değerini sakla: siteyi sonradan değiştirmenin, okumanın ya da silmenin yolu budur. Biçimini doğrulamaya çalışma; onu opak bir metin olarak ele al.
Sorgulamaya başlamadan önce durumu oku
POST /chat yanıtındaki status, bir oluşturmanın gerçekten başlayıp başlamadığını söyler:
buildingya daqueued- Bir oluşturma çalışıyor ya da boş bir yer bekliyor (
queuedhenüz başvuru belgesindeki listede yok, ama karşına çıkabilir). Sorgulamaya başla. Yeni bir sitedeurl, ilk oluşturma bitene kadar bir "oluşturuluyor" sayfası gösterir. - Yeni bir sitede
idle - Oluşturma başlamadı. Wisy onun yerine yanıt verdi;
answergenellikle hangi ödeme sağlayıcısının kullanılacağı gibi kısa bir soru içerir. Aynıidile yeni birPOST /chatgöndererek yanıtla. - Takip mesajından hemen sonra
completedya daaborted - Mevcut bir sitede durum, son oluşturmanın sonucunu gösterir. Durum
buildingolarak değişmediyse mesajın bir oluşturma değil, bir yanıt aldı;answeralanını oku.
Oluşturma tamamlanana kadar sorgula
Webhook yok; bu yüzden GET /links/:id uç noktasını düzenli aralıklarla sorgula. Oluşturmalar saniyeler değil dakikalar sürer; 15 ila 30 saniyede bir sorgulamak fazlasıyla yeterli. completed, aborted ya da idle dışındaki her durumu hâlâ çalışıyor say; böylece ileride yeni bir ara durum eklenirse döngün güvende kalır:
const sleep = (ms) => new Promise((r) => setTimeout(r, ms)); while (!["completed", "aborted", "idle"].includes(link.status)) { await sleep(20000); link = await (await fetch(`https://api.wisylink.com/links/${link.id}`, { headers: { "x-api-key": process.env.WISYLINK_API_KEY } })).json(); }
status değeri completed olduğunda url canlı sitendir. aborted, oluşturmanın bitmeden durduğu anlamına gelir; zaten yayında olan bir site önceki sürümünü korur, yeni bir mesaj da yeniden dener. Siteye sonradan özel bir alan adı bağlanırsa url o alan adını döndürür. Sitenin Stripe ya da e-posta anahtarlarını beklediğine dair notlar dahil oluşturmanın tam raporu, web uygulamasında o bağlantının sohbetindedir.
Bağlantıları sürdür, listele ve sil
Bir siteyi değiştirmek için yalnızca yeni talimatı, LINK_ID yerine sitenin id değeriyle gönder; konuşma geçmişini sunucu tutar ve sürdürülen bir site 200 ile yanıt verir:
curl -s -X POST https://api.wisylink.com/chat -H "x-api-key: $WISYLINK_API_KEY" -H "Content-Type: application/json" -d '{"id":"LINK_ID","message":"İkinci bir şube ekle: Moda Caddesi No: 12, her gün 07.00 ile 15.00 arası açık."}'
Ardından aynı şekilde yeniden sorgula. Her değişiklik yeni bir oluşturmadır; başarısız olan son sağlam sürümü yayında bırakır, başarılı olan ise biter bitmez yayına girer. Bu yüzden kontrollerini her değişiklikten sonra yap. Yeni mesaj çalışmakta olan oluşturmayı düzeltmiyorsa, sonraki değişikliği göndermeden önce bir oluşturmanın tamamlanmasını bekle.
Siteleri listelemek için has_next false olana kadar GET /links?page=1&limit=100 ile sayfa sayfa ilerle. Birini kaldırmak için DELETE /links/:id siteyi ve ona ekli referans dosyalarını siler. Sitenin kullandığı özel alan adı hesabında kalır ve başka bir siteye atanmaya hazır olur.
CLI ve Node istemcisi
@wisylink/cli paketi (MIT lisanslı, Node 18.17 ya da üstü) komutları yukarıdaki uç noktalarla birebir eşler; bu da onu WisyLink'i bir kabuktan ya da bir CI işinden betiklemenin en hızlı yolu yapar:
npm i -g @wisylink/cli, ardındanexport WISYLINK_API_KEY=...ya da her komutta--api-key.wisylink files upload ./marka-rehberi.pdfdosyayı otomatik olarak 4 MB'lık parçalarla yükler.wisylink chat --message "Köz Kahve için bir tanıtım sayfası oluştur." --file-id FILE_IDbir site oluşturur.wisylink links list --page 1 --limit 50sitelerini listeler.
Komutlar JSON yazdırır; böylece jq ile id ya da url değerini ayıklayabilirsin. --timeout 1.000 ile 120.000 milisaniye arasında bir değer alır; Wisy'nin yanıtını bekleyen chat komutu için bu değeri yükselt.
Aynı paket bir Node istemcisi de sunar: import { CreateWisyLinkClient } from "@wisylink/cli"; const client = CreateWisyLinkClient({ apiKey: process.env.WISYLINK_API_KEY }); const file = await client.uploadFile("./marka-rehberi.pdf"); const link = await client.chat({ message: brief, fileIds: [file.id] });
npm'deki 0.2.1 sürümüne göre iki not. Birincisi, bağlantı kimliği alan komutlar ve istemci yöntemleri (chat --link-id, links get, links delete; Node'da linkId, getLink, deleteLink) kimlikleri eski bir biçime göre doğrular ve güncel kimlikleri reddeder; bu yüzden siteleri sürdürmek, okumak ve silmek için yukarıdaki HTTP çağrılarını kullan. İkincisi, CLI belgeleri (İngilizce) şimdiden tarayıcıyla giriş (wisylink login), canlı oluşturma ilerlemesi gösteren etkileşimli bir sohbet ve bir --json bayrağı içeren daha yeni bir sürümü anlatıyor; hangisine sahip olduğunu görmek için wisylink --version çalıştır.
Sınırlar, hatalar ve iyi uygulamalar
Hatalar bir error koduyla JSON olarak döner. Açıkça ele almaya değer olanlar:
429 limit_reached- Planının 5 saatlik ya da haftalık penceresi doldu (
reasondeğeri5h_limitya daweekly_limit). Döngü içinde tekrar denemek yerine yeniden denemeyi epoch milisaniye cinsinden verilenreset_atzamanına planla. 429 credit_limit_exceeded- Bu anahtar kendi harcama sınırına ulaştı. Her uç noktada görülebilir;
resets_atzamanını bekle ya da sınırı web'den yükselt (en fazla $10). 429 build_concurrency_limit- Planına göre çok fazla oluşturma aynı anda çalışıyor. Birinin tamamlanmasını bekle, sonra bir sonrakini gönder.
429 rate_limited- Kısa sürede çok fazla istek. Bir süre bekle ve yeniden dene.
400 bad_request- Geçersiz JSON, boş ya da 5.000 karakteri aşan bir mesaj veya var olmayan dosya kimlikleri (
missing_file_idsiçinde listelenir). Yalnızca ilk 10file_idskullanılır; fazlası hata verilmeden düşürülür. 401,404,500 chat_unavailable- Eksik ya da iptal edilmiş bir anahtar; sana ait olmayan bir bağlantı ya da dosya; Wisy'nin kısa süreliğine erişilemez olması (bir aradan sonra bir kez yeniden denemeye değer).
Para ve kafa karışıklığından tasarruf ettiren alışkanlıklar:
- Anahtarları sunucuda tut. Bir anahtarı asla tarayıcı ya da uygulama koduna koyma. Her müşteri ya da iş akışı için ayrı bir anahtar kullan; böylece her birinin kendi sınırı olur ve tek başına iptal edilebilir.
POST /chatisteğini körü körüne yeniden deneme. İdempotent değildir: senin tarafında zaman aşımına uğrayan bir istek yine de bir site oluşturmuş ya da bir oluşturma başlatmış olabilir. Yeniden göndermeden önceGET /linkslistesine (en yenisi başta) bak ve çağrıya bir dakika ya da daha uzun bir istemci zaman aşımı ver.- Toplu işleri kuyruğa al. Planının izin verdiği kadar oluşturmayı aynı anda çalıştır ve
build_concurrency_limityanıtını bekleme işareti olarak gör. - Yayınlamadan önce gözden geçir. Yapay zeka çıktısı hata içerebilir. Bir müşteri ya da ziyaretçiler görmeden önce her siteyi aç, formlarını test et ve metinlerini oku; WisyLink'in kullanım koşullarına göre gözden geçirme ve test sorumluluğu sende.
Kullanım örnekleri: ajanslar, etkinlikler, şirket içi araçlar
Ajans tanıtım sayfaları. Müşterinin adı, teklifi, bölümleri ve tonu için boşlukları olan bir brif şablonu tut, onu CRM'inden doldur ve müşterinin logosunu ve marka rehberini dosya olarak ekle. Her kampanya kendi sitesi olur, müşteri geri bildirimleri takip mesajlarına dönüşür, müşteri başına bir anahtar da harcamaları ayrı tutar. Sayfa onaylandığında müşterinin alan adını (her planda mümkün) Alan adları bölümünden bağla. Sayfanın kendisine dair çalışılmış bir örnek yapay zeka ile bekleme listesi sayfası yapma rehberinde.
Etkinlik başına mikro siteler. Bir tabloda her etkinlik için bir satır (ad, tarih, mekân, kapasite), her dönen id değerini kendi satırının yanına kaydeden bir betikle etkinlik başına bir LCV sitesine dönüşür. Her brife ne yazacağını yapay zeka ile etkinlik kayıt ve LCV sayfası oluşturma rehberi gösteriyor. Etkinlikten sonra siteyi sil ya da ücretli bir planda arşiv olarak tut.
Şirket içi otomasyonlar. Bir betik, stok takibi ya da onay panosu gibi bir şirket içi aracın ilk sürümünü oluşturabilir. Ancak veriyi güncellemek için yeniden oluşturma yapma: Wisy'den, sistemlerinin kayıt gönderebileceği ve Entegrasyonlar altında belirlediğin bir gizli anahtarla korunan bir uç nokta eklemesini iste. Bu yolla yazılan kayıtlar, oluşturma hakkı harcamadan yaklaşık bir dakika içinde ziyaretçilere ulaşır. Bu yöntemin ayrıntıları yapay zeka ile şirket içi uygulama yapma yazısında.
Anahtarını al, ilk siteni koddan oluştur
Ücretsiz bir hesap aç, düşük sınırlı bir API anahtarı oluştur ve ilk brifini yukarıdaki curl çağrısıyla gönder. Alan düzeyindeki ayrıntılar için API başvuru belgesini (İngilizce) açık tut; entegrasyon prototipten üretime geçtiğinde, hacminin gerektirdiği oluşturma hakkını ve paralel oluşturmayı sunan planı fiyatlar bölümünden seç.
S.S.S.
