Bu sayfada
Başlarken
Genel bakış
API'nin sürümü yolunda yer alır: /api/v1. Her uç nokta JSON gövdeli bir POST alır ve hatalar dahil JSON ile yanıt verir.
Temel URL https://blurwrite.com
- POST /api/v1/detectBir metni analiz et
- POST /api/v1/detect/batchBirden fazla metni analiz et
- POST /api/v1/humanizeBir metni insanlaştır
- POST /api/v1/paraphraseBir metni yeniden ifade et
- POST /api/v1/summarizeBir metni özetle
- POST /api/v1/grammarDil bilgisini kontrol et
Yalnızca sitede, API'de değil: kelime sayacı, karakter sayacı, intihal denetleyicisi ve humanizer'ın "Daha fazla zaman tanı" seçeneği.
OpenAPI belgesinden oluşturulduğu için API tarafından kabul edilen uç noktaları ve alanları tam olarak listeler. OpenAPI belgesi
İlk çağrın
Bir metin en az 50 kelime içermelidir.
Önce "calibrated" alanına bak: false olduğunda dil için henüz uyarlanmış bir eğri yoktur, dolayısıyla puan sonuç olarak kullanılmamalıdır.
Her değer, türüyle gösterilir. Gerçek bir yanıt, metninin analiz sonucunu içerir.
curl -X POST https://blurwrite.com/api/v1/detect \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/detect', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null",
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}Kimlik doğrulama
Anahtarını Authorization başlığında bearer token olarak gönder. URL içinde gönderilen anahtar reddedilir.
Bir anahtar şu kapsamları taşır: detect, rewrite, summarize ve grammar. Anahtar, uç noktanın kapsamını taşımıyorsa uç nokta 403 out_of_scope yanıtını verir.
Authorization: Bearer YOUR_API_KEYUç noktalar
POST /api/v1/detect
Bir metni analiz et. Bir metnin dedektör analizi: 0 ile 100 arasında bir puan, puanın çevresindeki aralık, her cümle için analiz ve dilin kalibre edilip edilmediği bilgisi.
Anahtar kapsamı: detect
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| language | string | hayır | "en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır. |
| contentType | string | hayır | Analizde o metin türünün eğrisi kullanılacaksa "essay" veya "email" gibi metin türü. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| figure | number | 0 ile 100 arasında analiz puanı: metnin makine tarafından yazılmış olma olasılığı. |
| low | number | Puanın çevresindeki aralığın alt sınırı. |
| high | number | Puanın çevresindeki aralığın üst sınırı. |
| uncertainty | number | Aralığın genişliğinin yarısı, puan olarak. |
| verdict | string | Puanın yer aldığı bant; yalnızca bir banttır, metni kimin yazdığına dair bir tespit değildir. Şunlardan biri: human, uncertain, ai. |
| confidence | string | Analiz sonucuna ne kadar güvenilebileceği. Şunlardan biri: low, medium, high. |
| sentences | dizisiSentenceScore | Her cümle için bir analiz. |
| words | integer | Analiz edilen kelimeler. |
| language | string | Metnin analiz edildiği dil. |
| model | string | Analiz sonucunu üreten model. |
| calibrated | boolean | Dil için uyarlanmış bir eğri olup olmadığı. false olduğunda puan sonuç olarak kullanılmamalıdır. |
| bandHumanFlagRate | number | null | Ölçümlerimizde bu banttaki insan yazımı metinlerin ne sıklıkta makine yazımı olarak değerlendirildiği veya null. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | no_text | Gövdede "text" yok. |
| 422 | too_short | Metin minimum uzunluğun altında. |
| 413 | text_too_long | Metin, motorun tek çağrıda analiz edebileceğinden uzun. Metni böl. Kullanım sayılmadı. |
| 422 | not_calibrated | Bu dil henüz analiz edilemiyor. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 503 | engine_starting | Motor başlatılıyor ve zamanında hazır olmadı. Kullanım sayılmadı. Bir dakika sonra tekrar dene. |
| 503 | engine_busy | Motor meşguldü ve analiz zamanında başlayamadı; sitenin Pro analiz kullanıcılarına API çağrılarından önce hizmet verilir. Kullanım sayılmadı. Biraz sonra tekrar dene. |
| 504 | engine_timeout | Motor metni zamanında tamamlayamadı. Kullanım sayılmadı. Tekrar dene veya daha kısa bir metin gönder. |
| 429 | concurrency_limited | Bu anahtarla bu türden izin verilen en fazla sayıda çağrı zaten çalışıyor. Birinin tamamlanmasını veya Retry-After içinde belirtilen süreyi bekle. |
curl -X POST https://blurwrite.com/api/v1/detect \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/detect', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null",
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}POST /api/v1/detect/batch
Birden fazla metni analiz et. Tek çağrıda toplu işlem sınırına kadar metin. Çağrı başlamadan önce, analiz edebileceği her metnin (50 kelime veya üzeri) kelimeleri için yeterli kota gerekir; analiz sonucu dönmeyen metinlerin kelimeleri sonradan iade edilir. Bir metnin başarısız olması toplu işlemi başarısız kılmaz.
Anahtar kapsamı: detect
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| items | object dizisi | evet | Her biri kendi "text" alanına ve isteğe bağlı "id", "language" ve "contentType" alanlarına sahip metinler. |
| items[].id | string | hayır | Öğe için belirlediğin, sonucuyla birlikte döndürülen kimlik. Belirtilmezse öğenin sırası kullanılır. |
| items[].text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| items[].language | string | hayır | "en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır. |
| items[].contentType | string | hayır | Analizde o metin türünün eğrisi kullanılacaksa "essay" veya "email" gibi metin türü. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| results | dizisiBatchResult | Gönderildikleri sırayla, her öğe için bir sonuç. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | batch_empty | Gövdede "items" yok veya liste boş. |
| 413 | batch_too_large | Toplu işlemde sınırın üzerinde öğe var. |
| 429 | concurrency_limited | Bu anahtarla bu türden izin verilen en fazla sayıda çağrı zaten çalışıyor. Birinin tamamlanmasını veya Retry-After içinde belirtilen süreyi bekle. |
curl -X POST https://blurwrite.com/api/v1/detect/batch \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"id":"1","text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."},{"id":"2","text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}]}'const res = await fetch('https://blurwrite.com/api/v1/detect/batch', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"items": [
{
"id": "1",
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
},
{
"id": "2",
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}
]
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect/batch",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"items": [
{
"id": "1",
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
{
"id": "2",
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
],
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"results": [
{
"id": "string",
"detection": {
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"error": {
"code": "string",
"message": "string"
}
}
],
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}POST /api/v1/humanize
Bir metni insanlaştır. Doğruluk kontrolleriyle birlikte insanlaştırıcı: sayılar, adlar ve alıntılar korunur; bir bilgiyi değiştiren yeniden yazım düzeltilir veya bildirilir. "custom" modu (Pro), yazı örneğinden öğrenilen kendi üslubunla yazar.
API üzerinden humanizer standart yeniden yazımını yapar. "Daha fazla zaman tanı" yalnızca sitede vardır.
Anahtar kapsamı: rewrite
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| mode | string | hayır | Yeniden yazım modu. Şunlardan biri: natural, formal, simple, academic, creative, shorten, expand, custom. Varsayılan: natural. |
| style_sample | string | hayır | "custom" moduyla: sunucuda okunan, 150 ile 2.000 kelime arasında kendi yazı örneğin. Belirtilmezse hesabına kaydedilen örnek kullanılır. |
| tab | string | hayır | Metni insanlaştırma sekmesi: yeniden yazılan metnin üslubunu belirler. Standart, özgün metnin üslubunu korur. Şunlardan biri: standard, academic, professional, casual. Varsayılan: standard. |
| strength | string | hayır | Normal, içeriği ve üslubu korur. Agresif, metnin sırasını değiştirebilir ve ayrıntıları çıkarabilir; tüm ana noktaları korur, ancak bazı bölümler alışılmadık gelebilir. Şunlardan biri: regular, aggressive. Varsayılan: regular. |
| ownTouch | string | hayır | Kendi sözlerinle yazdığın, en fazla 400 karakterlik bir ayrıntı, örnek veya görüş. Yeniden yazılan metne dahil edilir. |
| language | string | hayır | "en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılmış metin. |
| before | Detection | Metninin dedektör analizi veya analiz yoksa null. |
| after | Detection | Yeniden yazılmış metnin dedektör analizi veya null. |
| passes | integer | Bu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği. |
| facts | object | Doğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni. |
| late | boolean | Yeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | no_text | Gövdede "text" yok. |
| 422 | too_short | Metin minimum uzunluğun altında. |
| 400 | unknown_mode | Bu uç nokta bu modu sunmuyor. |
| 400 | unknown_option | Sekme veya düzey, bu uç noktanın sunduğu seçeneklerden biri değil. |
| 402 | plan_required | Mod, sekme, yoğunluk veya kişisel dokunuş, hesabın sahip olmadığı bir plan gerektiriyor; "custom" modu Pro gerektirir. Kullanım sayılmadı. |
| 400 | no_sample | "custom" modu, gönderilmiş veya hesaba kaydedilmiş bir yazı örneği gerektirir. |
| 400 | sample_too_short | Yazı örneği minimum uzunluğun altında. |
| 400 | sample_too_long | Yazı örneği maksimum uzunluğun üzerinde. |
| 429 | concurrency_limited | Bu anahtarla bu türden izin verilen en fazla sayıda çağrı zaten çalışıyor. Birinin tamamlanmasını veya Retry-After içinde belirtilen süreyi bekle. |
| 422 | no_rewrite | Motor yanıt verdi, ancak hiçbir taslak kontrolleri geçemedi (boş, ret veya metnin kopyası). Kullanım sayılmadı. |
| 503 | timeout | Yeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
curl -X POST https://blurwrite.com/api/v1/humanize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/humanize', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/humanize",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"text": "string",
"before": {
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"after": {
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"passes": "integer",
"facts": "object",
"late": "boolean",
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}POST /api/v1/paraphrase
Bir metni yeniden ifade et. Yeniden ifade aracıyla aynı mod listesini kullanan yeniden ifade hizmeti.
Anahtar kapsamı: rewrite
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| mode | string | hayır | Yeniden yazım modu. Şunlardan biri: standard, fluency, formal, academic, simple, creative, expand, shorten. Varsayılan: standard. |
| strength | string | hayır | Yeniden yazımın özgün metinden ne kadar uzaklaşabileceği. Şunlardan biri: readable, balanced, strong. Varsayılan: balanced. |
| readability | string | hayır | Kullanılacak anlatım düzeyi. Şunlardan biri: casual, professional, academic, creative. Varsayılan: professional. |
| purpose | string | hayır | Metnin amacı. Şunlardan biri: general, essay, article, email, marketing, report, story. Varsayılan: general. |
| synonyms | string | hayır | Kelimelerin ne ölçüde serbestçe değiştirilebileceği. Şunlardan biri: few, some, many. Varsayılan: some. |
| freezeWords | string dizisi | hayır | Aynen yazıldığı gibi korunması gereken kelime ve ifadeler: en fazla 25 adet, her biri en fazla 60 karakter. İçerdikleri kelimeler çağrının kelime sayısına dahil edilir. |
| customInstruction | string | hayır | Yeniden yazım için en fazla 500 karakterlik kendi kısa talimatın. İçerdiği kelimeler çağrının kelime sayısına dahil edilir. |
| language | string | hayır | "en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır. |
| closedLoop | boolean | hayır | Kapalı döngüyü atlamak için false olarak ayarla. Varsayılan: true. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılmış metin. |
| before | Detection | Metninin dedektör analizi veya analiz yoksa null. |
| after | Detection | Yeniden yazılmış metnin dedektör analizi veya null. |
| passes | integer | Bu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği. |
| facts | object | Doğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni. |
| late | boolean | Yeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | no_text | Gövdede "text" yok. |
| 422 | too_short | Metin minimum uzunluğun altında. |
| 400 | unknown_mode | Bu uç nokta bu modu sunmuyor. |
| 400 | option_invalid | freezeWords, kelimelerden veya ifadelerden oluşan bir liste değil. Kullanımından hiçbir şey düşülmedi. |
| 400 | option_too_long | freezeWords veya customInstruction sınırını aşıyor. Kullanımından hiçbir şey düşülmedi. |
| 429 | concurrency_limited | Bu anahtarla bu türden izin verilen en fazla sayıda çağrı zaten çalışıyor. Birinin tamamlanmasını veya Retry-After içinde belirtilen süreyi bekle. |
| 422 | no_rewrite | Motor yanıt verdi, ancak hiçbir taslak kontrolleri geçemedi (boş, ret veya metnin kopyası). Kullanım sayılmadı. |
| 503 | timeout | Yeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
curl -X POST https://blurwrite.com/api/v1/paraphrase \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/paraphrase', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/paraphrase",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"text": "string",
"before": {
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"after": {
"figure": "number, 0 ile 100 arası",
"low": "number, 0 ile 100 arası",
"high": "number, 0 ile 100 arası",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 ile 1 arası",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"passes": "integer",
"facts": "object",
"late": "boolean",
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}POST /api/v1/summarize
Bir metni özetle. Anahtar cümleler, bir paragraf veya maddeler halinde özetleyici.
Anahtar kapsamı: summarize
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| mode | string | hayır | Özetin biçimi. Şunlardan biri: key-sentences, paragraph, bullets. Varsayılan: key-sentences. |
| length | string | hayır | Özetin uzunluğu. Şunlardan biri: short, medium, long. Varsayılan: medium. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Özet. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | no_text | Gövdede "text" yok. |
| 422 | too_short | Metin minimum uzunluğun altında. |
| 429 | concurrency_limited | Bu anahtarla bu türden izin verilen en fazla sayıda çağrı zaten çalışıyor. Birinin tamamlanmasını veya Retry-After içinde belirtilen süreyi bekle. |
| 503 | timeout | Yeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
curl -X POST https://blurwrite.com/api/v1/summarize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/summarize', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/summarize",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"text": "string",
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}POST /api/v1/grammar
Dil bilgisini kontrol et. Dil bilgisi, yazım, noktalama ve üslup sorunları; her birinin metindeki konumu ve önerilen düzeltmeleriyle birlikte.
Anahtar kapsamı: grammar
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Analiz edilecek veya yeniden yazılacak metin. |
| language | string | hayır | "en-US" veya "de-DE" gibi kontrol için kullanılacak dil kodu. Varsayılan: en-US. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| issues | dizisiGrammarIssue | Bulunan sorunlar, metinde göründükleri sırayla. |
| usage | Usage | Bu çağrıda sayılan kullanım. |
Bu uç noktaya özgü hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 400 | no_text | Gövdede "text" yok. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kullanım sayılmadı. |
| 503 | engine_starting | Motor başlatılıyor ve zamanında hazır olmadı. Kullanım sayılmadı. Bir dakika sonra tekrar dene. |
| 504 | engine_timeout | Motor metni zamanında tamamlayamadı. Kullanım sayılmadı. Tekrar dene veya daha kısa bir metin gönder. |
curl -X POST https://blurwrite.com/api/v1/grammar \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."}'const res = await fetch('https://blurwrite.com/api/v1/grammar', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/grammar",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite, yeni kütüphanenin planını değerlendirmek için salı günü toplandı. Üyeler, okuma salonunun hafta içi daha geç saatlere kadar açık kalması gerektiği konusunda anlaştı ve personelden ek saatler için bir bütçe hazırlamasını istedi. Bir sonraki toplantıda maliyetler, tahmini ziyaretçi sayısı ve binanın geri kalanı üzerindeki etkiler ele alınacak.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"issues": [
{
"offset": "integer",
"length": "integer",
"message": "string",
"shortMessage": "string",
"category": "grammar | spelling | punctuation | style | typography",
"replacements": [
"string"
],
"context": "string"
}
],
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}Başvuru
Hatalar
Bir hata, HTTP durumu ve bu biçimde bir gövdeyle yanıt verir. Koda göre hareket et; mesaj neyin yanlış gittiğini ve sonra ne yapacağını söyler.
Her uç noktanın döndürebileceği hatalar
| Durum | Kod | Anlam |
|---|---|---|
| 401 | key_in_url | Anahtar URL içinde gönderildi. Authorization başlığında gönder. |
| 401 | no_key | Anahtar gönderilmedi. |
| 401 | bad_key | Anahtar geçersiz veya iptal edilmiş. |
| 403 | out_of_scope | Anahtar, bu uç noktanın gerektirdiği kapsamı taşımıyor. |
| 429 | rate_limited | Bu anahtar için çok fazla istek gönderildi. Retry-After içinde belirtilen süre kadar bekle. |
| 403 | plan_lapsed | Hesabın planı artık API erişimi içermiyor. |
| 413 | too_large | İstek çok büyük. |
| 400 | bad_body | Gövde bir JSON nesnesi değil. |
| 413 | too_many_words | Çağrı, tek bir çağrının alabileceğinden daha fazla kelime içeriyor. Böl. Kullanımından hiçbir şey düşülmedi. |
| 402 | quota_exhausted | Planın bu faturalandırma dönemi için API kelime kotası tükendi ve ek bakiye boş. Kullanım sayılmadı. |
| 402 | quota_short | Çağrı, planın kalan API kelime kotası ile bakiyenin toplamından daha fazla kelime gerektiriyor. Kullanım sayılmadı. |
| 402 | monthly_ceiling | Hesap, bakiyeden bağımsız olarak uygulanan bu faturalandırma dönemi API üst sınırına ulaştı. Kullanım sayılmadı. |
| 503 | store_unavailable | Anahtar, hesabın kelime sayısı veya kaydedilmiş yazı örneği şu anda okunamadı ya da bu dağıtımda hesap veri deposu yok. Hiçbir işlem çalıştırılmadı ve kullanım sayılmadı. |
Bir çağrı, çalışmadan önce kullanacağı kelimeleri ayırır ve başarısız olursa bunları iade eder. O anda kelime sayısı kaydedilemezse kelimeler kullanılmış sayılır: başarısız çağrı bunu belirtir ve kullanım bilgisinde "recorded": false döndürür. Toplu işlem de kullanım bilgisinde "recorded": false döndürür. Kelime sayısı tahmin edilmez.
{
"error": {
"code": "string",
"message": "string",
"docs": "string",
"available": "integer"
},
"usage": {
"recorded": "boolean",
"words": "integer",
"source": "plan | balance | plan_and_balance",
"fromPlan": "integer",
"fromBalance": "integer",
"allowanceLeft": "integer | null",
"balance": "integer"
}
}Sınırlar
Buradaki tüm değerler, API tarafından uygulanan değerlerdir.
- Her anahtar, 60 saniyede en fazla 60 istek gönderebilir.
- Her anahtarla aynı anda en fazla 4 tespit çağrısı (bir toplu çağrı tek çağrı sayılır) ve 2 insanileştirme, yeniden ifade etme veya özetleme çağrısı çalışabilir; ek bir çağrıya Retry-After ile birlikte 429 concurrency_limited yanıtı verilir.
- Motorlar yoğun olduğunda, sitedeki Pro hesaplarının analizleri API çağrılarından önce işlenir. Bu nedenle bir API çağrısı sırasını bekleyebilir.
- Bir toplu çağrı en fazla 50 metin içerebilir.
- Tek bir çağrı, ister tek metin ister toplu işlem olsun, en fazla 20.000 kelime alabilir.
- Tespit aracı, tüm planlarda tek seferde en fazla 90.000 karakter, yani yaklaşık 10.000 kelime içeren bir metni okur. Daha uzun bir metin, çağrının kelime sınırı içinde kalsa bile 413 text_too_long yanıtı alır.
- Bir hesapta en fazla 5 etkin anahtar bulunabilir. Böylece bir anahtar, hizmet kesintisi olmadan yenisiyle değiştirilebilir.
Yanıt nesneleri
Uç noktaların döndürdüğü nesneler, alan alan.
Detection
| Alan | Tür | Açıklama |
|---|---|---|
| figure | number | 0 ile 100 arasında analiz puanı: metnin makine tarafından yazılmış olma olasılığı. |
| low | number | Puanın çevresindeki aralığın alt sınırı. |
| high | number | Puanın çevresindeki aralığın üst sınırı. |
| uncertainty | number | Aralığın genişliğinin yarısı, puan olarak. |
| verdict | string | Puanın yer aldığı bant; yalnızca bir banttır, metni kimin yazdığına dair bir tespit değildir. Şunlardan biri: human, uncertain, ai. |
| confidence | string | Analiz sonucuna ne kadar güvenilebileceği. Şunlardan biri: low, medium, high. |
| sentences | dizisiSentenceScore | Her cümle için bir analiz. |
| words | integer | Analiz edilen kelimeler. |
| language | string | Metnin analiz edildiği dil. |
| model | string | Analiz sonucunu üreten model. |
| calibrated | boolean | Dil için uyarlanmış bir eğri olup olmadığı. false olduğunda puan sonuç olarak kullanılmamalıdır. |
| bandHumanFlagRate | number | null | Ölçümlerimizde bu banttaki insan yazımı metinlerin ne sıklıkta makine yazımı olarak değerlendirildiği veya null. |
SentenceScore
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Cümle. |
| score | number | 0 ile 1 arasında, cümlenin makine tarafından yazılmış olma olasılığı. |
| verdict | string | Cümlenin yer aldığı bant. Şunlardan biri: human, uncertain, ai. |
Usage
| Alan | Tür | Açıklama |
|---|---|---|
| recorded | boolean | Sayım kaydedildiğinde true. Yalnızca toplu işlem, analiz edilmeyen kelimeleri iade edemediğinde false; bu durumda yalnızca "words" bulunur. |
| words | integer | Bu çağrıda sayılan kelimeler. |
| source | string | Kelimelerin nereden karşılandığı: planın API kelime kotası, ek bakiye veya her ikisi. Şunlardan biri: plan, balance, plan_and_balance. |
| fromPlan | integer | Planın API kelime kotasından düşülen kelimeler. recorded true olduğunda bulunur. |
| fromBalance | integer | Ek bakiyeden düşülen kelimeler. recorded true olduğunda bulunur. |
| allowanceLeft | integer | null | Bu çağrıdan sonra, mevcut fatura döneminde planın bu araç için kalan kelime kotası. Bu planda kotası olmayan bir araç için null. recorded true olduğunda bulunur. |
| balance | integer | Bu çağrıdan sonra kalan ek bakiye. recorded true olduğunda bulunur. |
RewriteResult
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılmış metin. |
| before | Detection | Metninin dedektör analizi veya analiz yoksa null. |
| after | Detection | Yeniden yazılmış metnin dedektör analizi veya null. |
| passes | integer | Bu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği. |
| facts | object | Doğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni. |
| late | boolean | Yeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true. |
GrammarIssue
| Alan | Tür | Açıklama |
|---|---|---|
| offset | integer | Gönderdiğin metinde sorunun başladığı yer, UTF-16 kod birimi cinsinden (JavaScript dize indeksi). |
| length | integer | Gönderdiğin metinde kapsadığı UTF-16 kod birimi sayısı. |
| message | string | Neyin yanlış olduğu. |
| shortMessage | string | Aynı açıklama, birkaç kelimeyle. |
| category | string | Sorunun türü. Şunlardan biri: grammar, spelling, punctuation, style, typography. |
| replacements | string dizisi | Önerilen düzeltmeler, en iyisi başta olacak şekilde. |
| context | string | Sorunun çevresindeki metin. |
BatchResult
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | Öğenin kimliği. |
| detection | Detection | Öğe bir analiz sonucu döndürdüğünde bu sonuç. |
| error | object | Öğenin neden analiz sonucu döndürmediği. |
Error
| Alan | Tür | Açıklama |
|---|---|---|
| error | object | |
| usage | Usage | Bu çağrıda sayılan kullanım. |
MCP sunucusu
Bir ajan, Model Context Protocol üzerinden aynı araçları çağırabilir. Sunucu yalnızca bu API’nin bir istemcisidir, bu yüzden ajan sitenin verdiği sonucun aynısını alır.
- detect_textBir metni analiz eder.
- detect_batchBirden fazla metni analiz eder.
- humanize_textBir metni, içerdiği bilgileri doğrulayarak insanileştirir.
- paraphrase_textBir metni yeniden ifade eder.
- summarize_textBir metni özetler.
- check_grammarDil bilgisi ve yazımı denetler.
Claude Code Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:
Bunu bir terminalde çalıştır:
Ya da bunun yerine şunu .mcp.json dosyasına koy:
.mcp.json{ "mcpServers": { "blurwrite": { "type": "http", "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${BLURWRITE_API_KEY}" } } } }Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Claude Desktop Sunucu dosyasını çalıştırır
Sunucu dosyasını indir ve nereye kaydettiğini not al. Dosya Node.js gerektirir.
Sunucu dosyasını indirUygulamada: Settings > Developer > Edit Config.
Şunu claude_desktop_config.json dosyasına ekle:
claude_desktop_config.json{ "mcpServers": { "blurwrite": { "command": "node", "args": [ "/path/to/server.mjs" ], "env": { "BLURWRITE_API_KEY": "YOUR_API_KEY" } } } }Sunucuyu yüklemesi için Claude Desktop uygulamasını tamamen kapatıp yeniden başlat.
Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Claude (claude.ai) Yakında
claude.ai'yi Blurwrite hesabına giriş yaparak bağlama seçeneği yakında geliyor. O zamana kadar aynı araçlar bugün sunucu dosyasıyla Claude Desktop'ta veya Claude Code içinde çalışıyor; kurulum adımları kendi sekmelerinde.
Yalnızca kuruluşunda özel bağlayıcılar için istek başlıkları seçeneği varsa: adresi bu başlıkla ekle.
ChatGPT Yakında
ChatGPT'yi Blurwrite hesabına giriş yaparak bağlama seçeneği yakında geliyor. O zamana kadar aynı araçlar bugün Codex ve Claude Code içinde çalışıyor; kurulum adımları kendi sekmelerinde.
Codex Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:
Bunu bir terminalde çalıştır:
Ya da bunun yerine şunu ~/.codex/config.toml dosyasına koy:
~/.codex/config.toml[mcp_servers.blurwrite] url = "https://blurwrite.com/api/mcp" bearer_token_env_var = "BLURWRITE_API_KEY"Uygulamada: MCP servers > Add server > Streamable HTTP.
Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Cursor Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:
Şunu ~/.cursor/mcp.json dosyasına ekle:
~/.cursor/mcp.json{ "mcpServers": { "blurwrite": { "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${env:BLURWRITE_API_KEY}" } } } }Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
VS Code (Copilot) Çevrimiçi bağlanır
Şunu .vscode/mcp.json dosyasına ekle:
.vscode/mcp.json{ "inputs": [ { "type": "promptString", "id": "blurwrite-key", "description": "Blurwrite API key", "password": true } ], "servers": { "blurwrite": { "type": "http", "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${input:blurwrite-key}" } } } }Sunucu başladığında VS Code anahtarını bir kez sorar ve saklar.
Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Windsurf Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:
Uygulamada: Cascade > ... > Open MCP config file.
Şunu mcp_config.json dosyasına ekle:
mcp_config.json{ "mcpServers": { "blurwrite": { "serverUrl": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${env:BLURWRITE_API_KEY}" } } } }Sunucuyu yüklemesi için Windsurf uygulamasını tamamen kapatıp yeniden başlat.
Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Gemini CLI Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:
Bunu bir terminalde çalıştır:
Ya da bunun yerine şunu ~/.gemini/settings.json dosyasına koy:
~/.gemini/settings.json{ "mcpServers": { "blurwrite": { "httpUrl": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }Çalıştığını kontrol etmek için asistanına şunu sor: "Bu paragrafı Blurwrite ile kontrol et ve bana aralığı ve güven düzeyini söyle."
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Other clients Çevrimiçi, köprüyle veya dosyayla
HTTP üzerinden uzak MCP sunucularına bağlanan bir istemcinin yalnızca şu iki değere ihtiyacı var:
Yalnızca yerel sunucu başlatan bir istemci, açık kaynaklı mcp-remote köprüsüyle bu adrese ulaşabilir (Node.js gerektirir):
Ya da sunucu dosyamızı kendin çalıştır:
Sunucu dosyasını indir
API anahtarın, kontrol panelinde API bölümünde. Bir anahtarı asla paylaşılan bir dosyaya veya bir depoya koyma.
Ajanın aldığı her sonuç, sayısal değeri, bu değerin belirsizliğini ve kalibrasyon durumunu içerir. Böylece ajan, sonucun ne anlama geldiğini ve hangi durumlarda kullanılmaması gerektiğini açıklayabilir.
Anahtarın
Giriş yap, ardından kontrol panelinden bir anahtar oluştur.
Anahtarını kontrol panelinden al
Bu sayfada hiçbir zaman anahtar oluşturulmaz.
API ve MCP sunucusu ne yapar?