İçeriğe geç
Geliştirici belgeleri

v1 API ve MCP sunucusu

API çağrısı yapmak için gereken her şey: kimlik doğrulama, her uç noktanın isteği ve yanıtı, hatalar ve sınırlar, curl, JavaScript ve Python örnekleri.

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

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.

Örnek istek
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."}'
Örnek yanıt
{
  "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.

Kimlik doğrulama
Authorization: Bearer YOUR_API_KEY

Uç 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

AlanTürZorunluAçıklama
textstringevetAnaliz edilecek veya yeniden yazılacak metin.
languagestringhayır"en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır.
contentTypestringhayırAnalizde o metin türünün eğrisi kullanılacaksa "essay" veya "email" gibi metin türü.

Yanıt

AlanTürAçıklama
figurenumber0 ile 100 arasında analiz puanı: metnin makine tarafından yazılmış olma olasılığı.
lownumberPuanın çevresindeki aralığın alt sınırı.
highnumberPuanın çevresindeki aralığın üst sınırı.
uncertaintynumberAralığın genişliğinin yarısı, puan olarak.
verdictstringPuanın yer aldığı bant; yalnızca bir banttır, metni kimin yazdığına dair bir tespit değildir. Şunlardan biri: human, uncertain, ai.
confidencestringAnaliz sonucuna ne kadar güvenilebileceği. Şunlardan biri: low, medium, high.
sentences dizisiSentenceScoreHer cümle için bir analiz.
wordsintegerAnaliz edilen kelimeler.
languagestringMetnin analiz edildiği dil.
modelstringAnaliz sonucunu üreten model.
calibratedbooleanDil için uyarlanmış bir eğri olup olmadığı. false olduğunda puan sonuç olarak kullanılmamalıdır.
bandHumanFlagRatenumber | nullÖlçümlerimizde bu banttaki insan yazımı metinlerin ne sıklıkta makine yazımı olarak değerlendirildiği veya null.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400no_textGövdede "text" yok.
422too_shortMetin minimum uzunluğun altında.
413text_too_longMetin, motorun tek çağrıda analiz edebileceğinden uzun. Metni böl. Kullanım sayılmadı.
422not_calibratedBu dil henüz analiz edilemiyor.
503engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
502engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
503engine_startingMotor başlatılıyor ve zamanında hazır olmadı. Kullanım sayılmadı. Bir dakika sonra tekrar dene.
503engine_busyMotor 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.
504engine_timeoutMotor metni zamanında tamamlayamadı. Kullanım sayılmadı. Tekrar dene veya daha kısa bir metin gönder.
429concurrency_limitedBu 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.
Örnek istek
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."}'
Örnek yanıt
{
  "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

AlanTürZorunluAçıklama
itemsobject dizisievetHer biri kendi "text" alanına ve isteğe bağlı "id", "language" ve "contentType" alanlarına sahip metinler.
items[].idstringhayırÖğe için belirlediğin, sonucuyla birlikte döndürülen kimlik. Belirtilmezse öğenin sırası kullanılır.
items[].textstringevetAnaliz edilecek veya yeniden yazılacak metin.
items[].languagestringhayır"en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır.
items[].contentTypestringhayırAnalizde o metin türünün eğrisi kullanılacaksa "essay" veya "email" gibi metin türü.

Yanıt

AlanTürAçıklama
results dizisiBatchResultGönderildikleri sırayla, her öğe için bir sonuç.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400batch_emptyGövdede "items" yok veya liste boş.
413batch_too_largeToplu işlemde sınırın üzerinde öğe var.
429concurrency_limitedBu 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.
Örnek istek
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."}]}'
Örnek yanıt
{
  "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

AlanTürZorunluAçıklama
textstringevetAnaliz edilecek veya yeniden yazılacak metin.
modestringhayırYeniden yazım modu. Şunlardan biri: natural, formal, simple, academic, creative, shorten, expand, custom. Varsayılan: natural.
style_samplestringhayır"custom" moduyla: sunucuda okunan, 150 ile 2.000 kelime arasında kendi yazı örneğin. Belirtilmezse hesabına kaydedilen örnek kullanılır.
tabstringhayırMetni 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.
strengthstringhayırNormal, 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.
ownTouchstringhayırKendi sözlerinle yazdığın, en fazla 400 karakterlik bir ayrıntı, örnek veya görüş. Yeniden yazılan metne dahil edilir.
languagestringhayır"en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır.

Yanıt

AlanTürAçıklama
textstringYeniden yazılmış metin.
beforeDetectionMetninin dedektör analizi veya analiz yoksa null.
afterDetectionYeniden yazılmış metnin dedektör analizi veya null.
passesintegerBu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği.
factsobjectDoğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni.
latebooleanYeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400no_textGövdede "text" yok.
422too_shortMetin minimum uzunluğun altında.
400unknown_modeBu uç nokta bu modu sunmuyor.
400unknown_optionSekme veya düzey, bu uç noktanın sunduğu seçeneklerden biri değil.
402plan_requiredMod, sekme, yoğunluk veya kişisel dokunuş, hesabın sahip olmadığı bir plan gerektiriyor; "custom" modu Pro gerektirir. Kullanım sayılmadı.
400no_sample"custom" modu, gönderilmiş veya hesaba kaydedilmiş bir yazı örneği gerektirir.
400sample_too_shortYazı örneği minimum uzunluğun altında.
400sample_too_longYazı örneği maksimum uzunluğun üzerinde.
429concurrency_limitedBu 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.
422no_rewriteMotor yanıt verdi, ancak hiçbir taslak kontrolleri geçemedi (boş, ret veya metnin kopyası). Kullanım sayılmadı.
503timeoutYeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı.
503engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
502engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
Örnek istek
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."}'
Örnek yanıt
{
  "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

AlanTürZorunluAçıklama
textstringevetAnaliz edilecek veya yeniden yazılacak metin.
modestringhayırYeniden yazım modu. Şunlardan biri: standard, fluency, formal, academic, simple, creative, expand, shorten. Varsayılan: standard.
strengthstringhayırYeniden yazımın özgün metinden ne kadar uzaklaşabileceği. Şunlardan biri: readable, balanced, strong. Varsayılan: balanced.
readabilitystringhayırKullanılacak anlatım düzeyi. Şunlardan biri: casual, professional, academic, creative. Varsayılan: professional.
purposestringhayırMetnin amacı. Şunlardan biri: general, essay, article, email, marketing, report, story. Varsayılan: general.
synonymsstringhayırKelimelerin ne ölçüde serbestçe değiştirilebileceği. Şunlardan biri: few, some, many. Varsayılan: some.
freezeWordsstring dizisihayırAynen 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.
customInstructionstringhayırYeniden 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.
languagestringhayır"en" veya "de" gibi dil kodu. Belirtilmezse metinden algılanır.
closedLoopbooleanhayırKapalı döngüyü atlamak için false olarak ayarla. Varsayılan: true.

Yanıt

AlanTürAçıklama
textstringYeniden yazılmış metin.
beforeDetectionMetninin dedektör analizi veya analiz yoksa null.
afterDetectionYeniden yazılmış metnin dedektör analizi veya null.
passesintegerBu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği.
factsobjectDoğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni.
latebooleanYeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400no_textGövdede "text" yok.
422too_shortMetin minimum uzunluğun altında.
400unknown_modeBu uç nokta bu modu sunmuyor.
400option_invalidfreezeWords, kelimelerden veya ifadelerden oluşan bir liste değil. Kullanımından hiçbir şey düşülmedi.
400option_too_longfreezeWords veya customInstruction sınırını aşıyor. Kullanımından hiçbir şey düşülmedi.
429concurrency_limitedBu 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.
422no_rewriteMotor yanıt verdi, ancak hiçbir taslak kontrolleri geçemedi (boş, ret veya metnin kopyası). Kullanım sayılmadı.
503timeoutYeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı.
503engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
502engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
Örnek istek
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."}'
Örnek yanıt
{
  "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

AlanTürZorunluAçıklama
textstringevetAnaliz edilecek veya yeniden yazılacak metin.
modestringhayırÖzetin biçimi. Şunlardan biri: key-sentences, paragraph, bullets. Varsayılan: key-sentences.
lengthstringhayırÖzetin uzunluğu. Şunlardan biri: short, medium, long. Varsayılan: medium.

Yanıt

AlanTürAçıklama
textstringÖzet.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400no_textGövdede "text" yok.
422too_shortMetin minimum uzunluğun altında.
429concurrency_limitedBu 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.
503timeoutYeniden yazım çok uzun sürdüğü için durduruldu. Kullanım sayılmadı.
503engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
502engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
Örnek istek
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."}'
Örnek yanıt
{
  "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

AlanTürZorunluAçıklama
textstringevetAnaliz edilecek veya yeniden yazılacak metin.
languagestringhayır"en-US" veya "de-DE" gibi kontrol için kullanılacak dil kodu. Varsayılan: en-US.

Yanıt

AlanTürAçıklama
issues dizisiGrammarIssueBulunan sorunlar, metinde göründükleri sırayla.
usageUsageBu çağrıda sayılan kullanım.

Bu uç noktaya özgü hatalar

DurumKodAnlam
400no_textGövdede "text" yok.
503engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
502engine_unavailableMotor yanıt vermedi. Kullanım sayılmadı.
503engine_startingMotor başlatılıyor ve zamanında hazır olmadı. Kullanım sayılmadı. Bir dakika sonra tekrar dene.
504engine_timeoutMotor metni zamanında tamamlayamadı. Kullanım sayılmadı. Tekrar dene veya daha kısa bir metin gönder.
Örnek istek
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."}'
Örnek yanıt
{
  "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

DurumKodAnlam
401key_in_urlAnahtar URL içinde gönderildi. Authorization başlığında gönder.
401no_keyAnahtar gönderilmedi.
401bad_keyAnahtar geçersiz veya iptal edilmiş.
403out_of_scopeAnahtar, bu uç noktanın gerektirdiği kapsamı taşımıyor.
429rate_limitedBu anahtar için çok fazla istek gönderildi. Retry-After içinde belirtilen süre kadar bekle.
403plan_lapsedHesabın planı artık API erişimi içermiyor.
413too_largeİstek çok büyük.
400bad_bodyGövde bir JSON nesnesi değil.
413too_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.
402quota_exhaustedPlanın bu faturalandırma dönemi için API kelime kotası tükendi ve ek bakiye boş. Kullanım sayılmadı.
402quota_shortÇağrı, planın kalan API kelime kotası ile bakiyenin toplamından daha fazla kelime gerektiriyor. Kullanım sayılmadı.
402monthly_ceilingHesap, bakiyeden bağımsız olarak uygulanan bu faturalandırma dönemi API üst sınırına ulaştı. Kullanım sayılmadı.
503store_unavailableAnahtar, 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.

Hata gövdesi
{
  "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

AlanTürAçıklama
figurenumber0 ile 100 arasında analiz puanı: metnin makine tarafından yazılmış olma olasılığı.
lownumberPuanın çevresindeki aralığın alt sınırı.
highnumberPuanın çevresindeki aralığın üst sınırı.
uncertaintynumberAralığın genişliğinin yarısı, puan olarak.
verdictstringPuanın yer aldığı bant; yalnızca bir banttır, metni kimin yazdığına dair bir tespit değildir. Şunlardan biri: human, uncertain, ai.
confidencestringAnaliz sonucuna ne kadar güvenilebileceği. Şunlardan biri: low, medium, high.
sentences dizisiSentenceScoreHer cümle için bir analiz.
wordsintegerAnaliz edilen kelimeler.
languagestringMetnin analiz edildiği dil.
modelstringAnaliz sonucunu üreten model.
calibratedbooleanDil için uyarlanmış bir eğri olup olmadığı. false olduğunda puan sonuç olarak kullanılmamalıdır.
bandHumanFlagRatenumber | nullÖlçümlerimizde bu banttaki insan yazımı metinlerin ne sıklıkta makine yazımı olarak değerlendirildiği veya null.

SentenceScore

AlanTürAçıklama
textstringCümle.
scorenumber0 ile 1 arasında, cümlenin makine tarafından yazılmış olma olasılığı.
verdictstringCümlenin yer aldığı bant. Şunlardan biri: human, uncertain, ai.

Usage

AlanTürAçıklama
recordedbooleanSayım kaydedildiğinde true. Yalnızca toplu işlem, analiz edilmeyen kelimeleri iade edemediğinde false; bu durumda yalnızca "words" bulunur.
wordsintegerBu çağrıda sayılan kelimeler.
sourcestringKelimelerin nereden karşılandığı: planın API kelime kotası, ek bakiye veya her ikisi. Şunlardan biri: plan, balance, plan_and_balance.
fromPlanintegerPlanın API kelime kotasından düşülen kelimeler. recorded true olduğunda bulunur.
fromBalanceintegerEk bakiyeden düşülen kelimeler. recorded true olduğunda bulunur.
allowanceLeftinteger | nullBu ç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.
balanceintegerBu çağrıdan sonra kalan ek bakiye. recorded true olduğunda bulunur.

RewriteResult

AlanTürAçıklama
textstringYeniden yazılmış metin.
beforeDetectionMetninin dedektör analizi veya analiz yoksa null.
afterDetectionYeniden yazılmış metnin dedektör analizi veya null.
passesintegerBu yeniden yazım seçilmeden önce kaç yeniden yazım üretildiği.
factsobjectDoğruluk kontrollerinin buldukları ve yeniden yazım sorunluysa bunun nedeni.
latebooleanYeniden yazım, kontrolleri tamamlanmadan süre sınırında döndüğünde true.

GrammarIssue

AlanTürAçıklama
offsetintegerGönderdiğin metinde sorunun başladığı yer, UTF-16 kod birimi cinsinden (JavaScript dize indeksi).
lengthintegerGönderdiğin metinde kapsadığı UTF-16 kod birimi sayısı.
messagestringNeyin yanlış olduğu.
shortMessagestringAynı açıklama, birkaç kelimeyle.
categorystringSorunun türü. Şunlardan biri: grammar, spelling, punctuation, style, typography.
replacementsstring dizisiÖnerilen düzeltmeler, en iyisi başta olacak şekilde.
contextstringSorunun çevresindeki metin.

BatchResult

AlanTürAçıklama
idstringÖğenin kimliği.
detectionDetectionÖğe bir analiz sonucu döndürdüğünde bu sonuç.
errorobjectÖğenin neden analiz sonucu döndürmediği.

Error

AlanTürAçıklama
errorobject
usageUsageBu çağrıda sayılan kullanım.
MCP sunucusu

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

  1. API anahtarını, istemcinin çalıştığı yerde BLURWRITE_API_KEY adlı bir ortam değişkeninde tut:

    export BLURWRITE_API_KEY="YOUR_API_KEY"
  2. Bunu bir terminalde çalıştır:

    claude mcp add --transport http blurwrite https://blurwrite.com/api/mcp --header "Authorization: Bearer $BLURWRITE_API_KEY"
  3. 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}"
          }
        }
      }
    }
  4. Ç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.

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?