İç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 istek ve yanıtları, hatalar, sınırlar ve curl, JavaScript ve Python örnekleri.

Bu sayfada

Başlangıç

Genel bakış

API sürümü URL yolunda belirtilir: /api/v1. Her uç nokta, JSON gövdeli bir POST isteği alır ve hatalar dahil tüm yanıtları JSON biçiminde döndürür.

Temel URL https://textlume.com

Yalnızca sitede sunulan, API'de bulunmayan özellikler: Kelime sayacı, Karakter sayacı, İntihal kontrolü ve Metni insanlaştırma aracının "Daha fazla zaman ayır" seçeneği.

Bu bölüm OpenAPI belgesinden oluşturulur ve API'nin kabul ettiği yolları ve alanları olduğu gibi listeler. OpenAPI belgesi

İlk API çağrın

Metin en az 50 kelime içermeli.

Önce "calibrated" alanına bak: değeri false ise bu dil için henüz uyarlanmış bir eğri yoktur. Bu durumda sayısal değeri sonuç olarak kullanma.

Her değerin yerine veri türü gösterilir. Gerçek yanıt, metnine ait sonucu içerir.

Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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 anahtarlar reddedilir.

Anahtarın yetki kapsamları şunlardır: detect, rewrite, summarize ve grammar. Anahtar, bir uç noktanın gerektirdiği yetki kapsamına sahip değilse uç nokta 403 out_of_scope yanıtı döndürür.

Kimlik doğrulama
Authorization: Bearer YOUR_API_KEY

Uç noktalar

POST /api/v1/detect

Bir metni kontrol et. Bir metin için yapay zeka tespit sonucu: 0 ile 100 arasında bir değer, bu değerin çevresindeki aralık, her cümle için bir sonuç ve dilin kalibre edilip edilmediği.

Anahtarın yetki kapsamı: detect

İstek gövdesi

AlanTürZorunluAçıklama
textstringevetKontrol edilecek veya yeniden yazılacak metin.
languagestringhayır"en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir.
contentTypestringhayırDeğerlendirmede metin türüne özgü eğri kullanılacaksa "essay" veya "email" gibi bir metin türü.

Yanıt

AlanTürAçıklama
figurenumberMetnin yapay zekayla yazılmış olma olasılığını gösteren, 0 ile 100 arasında bir değer. Site, kartlarda ve raporlarda alt ve üst sınırın orta noktasını gösterir. Bu, her zaman buradaki değerle aynı değildir.
lownumberDeğerin çevresindeki aralığın alt sınırı.
highnumberDeğerin çevresindeki aralığın üst sınırı.
uncertaintynumberAralığın puan cinsinden genişliğinin yarısı.
verdictstringDeğerin yer aldığı aralık. Metni kimin yazdığına ilişkin bir tespit değildir. Şunlardan biri: human, uncertain, ai.
confidencestringSonucun ne kadar güvenilir olduğu. Şunlardan biri: low, medium, high.
sentences dizisiSentenceScoreHer cümle için ayrı bir sonuç.
wordsintegerİncelenen kelimeler.
languagestringMetnin hangi dilde kabul edilerek incelendiği.
modelstringSonucu üreten model.
calibratedbooleanDil için bir kalibrasyon eğrisi bulunup bulunmadığı. Değer false ise sayısal değer sonuç olarak kullanılmamalıdır.
bandHumanFlagRatenumber | nullÖlçümlerimizde bu aralıktaki insan yazımı metinlerin ne sıklıkla yapay zeka ürünü olarak değerlendirildiği veya null.
usageUsageBu çağrıda kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400no_textİstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder.
422too_shortMetin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder.
413text_too_longMetin, motorun tek çağrıda inceleyebileceğinden uzun. Metni parçalara bölerek gönder. Kelime hakkından düşülmedi.
422not_calibratedBu dil henüz incelenemiyor. Desteklenen bir dilde metin gönder.
503engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
502engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
503engine_startingMotor başlatılıyor ve zamanında hazır olamadı. Kelime hakkından düşülmedi. Bir dakika sonra tekrar dene.
503engine_busyMotor meşguldü ve inceleme zamanında başlayamadı. Sitedeki Pro kullanıcılarının incelemeleri API çağrılarından önce işlenir. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
504engine_timeoutMotor, metni zamanında tamamlayamadı. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder.
429concurrency_limitedBu anahtar için bu türdeki eş zamanlı çağrı sınırına ulaşıldı. Bir çağrının bitmesini veya Retry-After başlığında belirtilen süreyi bekle.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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 kontrol et. Tek çağrıda, toplu işlem sınırına kadar metin gönder. Çağrı başında, değerlendirilebilecek tüm metinlerin (50 kelime veya daha uzun) kelimelerini karşılayacak kadar kotan olmalı. Sonuç alınamayan metinler için ayrılan kelimeler daha sonra kotana iade edilir. Bir metinde hata olması diğerlerinin işlenmesini engellemez.

Anahtarın yetki kapsamı: detect

İstek gövdesi

AlanTürZorunluAçıklama
itemsobject dizisievetHer biri "text" alanını ve isteğe bağlı "id", "language" ve "contentType" alanlarını içeren metinler.
items[].idstringhayırÖğe için belirlediğin ve sonuçla birlikte döndürülen kimlik. Belirtilmezse öğenin listedeki konumu kullanılır.
items[].textstringevetKontrol edilecek veya yeniden yazılacak metin.
items[].languagestringhayır"en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir.
items[].contentTypestringhayırDeğerlendirmede metin türüne özgü eğri kullanılacaksa "essay" veya "email" gibi bir metin türü.

Yanıt

AlanTürAçıklama
results dizisiBatchResultGönderim sırasına göre her öğe için bir sonuç.
usageUsageBu çağrıda kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400batch_emptyİstek gövdesinde "items" alanı yok veya liste boş. "items" alanına işlenecek öğeleri ekle.
413batch_too_largeToplu işlemdeki öğe sayısı sınırı aşıyor. Öğeleri daha küçük gruplar halinde gönder.
429concurrency_limitedBu anahtar için bu türdeki eş zamanlı çağrı sınırına ulaşıldı. Bir çağrının bitmesini veya Retry-After başlığında belirtilen süreyi bekle.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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

Metni insanlaştır. Metni insanlaştırma aracı, bilgilerin korunup korunmadığını da kontrol eder. Sayılar, adlar ve alıntılar korunur. Yeniden yazım bir bilgiyi değiştirdiyse düzeltilir veya bu durum bildirilir. "custom" modu (Pro), yazından alınan bir örneği inceleyerek senin üslubunla yazar.

API üzerinden metni insanlaştırma aracı standart yeniden yazma işlemini uygular. "Daha fazla zaman ayır" seçeneği yalnızca sitede kullanılabilir.

Anahtarın yetki kapsamı: rewrite

İstek gövdesi

AlanTürZorunluAçıklama
textstringevetKontrol edilecek veya yeniden yazılacak metin.
modestringhayırYeniden yazma modu. Şunlardan biri: natural, formal, simple, academic, creative, shorten, expand, custom. Varsayılan: natural.
style_samplestringhayır"custom" modu için sunucuda incelenecek, kendi yazından 150 ile 2.000 kelime arasında bir örnek. Belirtilmezse hesabında kayıtlı örnek kullanılır.
tabstringhayırMetni insanlaştırma aracındaki sekme, metnin hangi üslupla yeniden yazılacağını belirler. Standart, metnin mevcut ü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, ancak tüm ana noktaları korur. Bazı bölümlerin anlatımı alışılmadık gelebilir. Şunlardan biri: regular, aggressive. Varsayılan: regular.
ownTouchstringhayırYeniden yazılan metne eklenecek, kendi sözlerinle yazdığın bir ayrıntı, örnek veya görüş. En fazla 400 karakter.
languagestringhayır"en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir.

Yanıt

AlanTürAçıklama
textstringYeniden yazılan metin.
beforeDetectionMetninin yapay zeka tespit sonucu. Sonuç yoksa null olur.
afterDetectionYeniden yazılan metnin yapay zeka tespit sonucu veya null.
passesintegerBu metin seçilene kadar kaç yeniden yazım üretildiği.
factsobjectBilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni.
latebooleanYeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur.
usageUsageBu çağrıda kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400no_textİstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder.
422too_shortMetin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder.
400unknown_modeBu uç nokta, seçtiğin modu desteklemiyor. Desteklenen bir mod seç.
400unknown_optionBu uç nokta, seçtiğin sekmeyi veya yoğunluk düzeyini desteklemiyor. Desteklenen seçenekler için API belgelerine bak.
402plan_requiredSeçtiğin mod, sekme, yoğunluk veya kişisel dokunuş ayarı hesabında olmayan bir plan gerektiriyor. "custom" modu için Pro gerekiyor. Kelime hakkından düşülmedi. Planına dahil bir ayar seç veya uygun plana geç.
400no_sample"custom" modu için bir yazı örneği gerekiyor. İstekle birlikte bir örnek gönder veya hesabına bir örnek kaydet.
400sample_too_shortYazı örneği, gereken minimum uzunluğun altında. Daha uzun bir örnek gönder.
400sample_too_longYazı örneği, izin verilen maksimum uzunluğu aşıyor. Daha kısa bir örnek gönder.
429concurrency_limitedBu anahtar için bu türdeki eş zamanlı çağrı sınırına ulaşıldı. Bir çağrının bitmesini veya Retry-After başlığında belirtilen süreyi bekle.
422no_rewriteMotor yanıt verdi ancak hiçbir taslak kontrolleri geçemedi. Taslaklar boştu, isteği reddediyordu veya metnin kopyasıydı. Kelime hakkından düşülmedi. Metnini gözden geçirip tekrar dene.
503timeoutYeniden yazma işlemi çok uzun sürdüğü için durduruldu. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder.
503engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
502engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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

Metni yeniden yaz. Metin yeniden yazma aracıyla aynı modları sunar.

Anahtarın yetki kapsamı: rewrite

İstek gövdesi

AlanTürZorunluAçıklama
textstringevetKontrol edilecek veya yeniden yazılacak metin.
modestringhayırYeniden yazma 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ırMetinde kullanılacak dil düzeyi. Şunlardan biri: casual, professional, academic, creative. Varsayılan: professional.
purposestringhayırMetnin kullanım amacı. Şunlardan biri: general, essay, article, email, marketing, report, story. Varsayılan: general.
synonymsstringhayırKelimelerin ne ölçüde değiştirilebileceği. Şunlardan biri: few, some, many. Varsayılan: some.
freezeWordsstring dizisihayırYazıldığı gibi korunması gereken kelime ve ifadeler. En fazla 25 adet olabilir ve her biri en fazla 60 karakter içerebilir. İçerdikleri kelimeler çağrının kelime kullanımına dahil edilir.
customInstructionstringhayırYeniden yazım için en fazla 500 karakterlik kendi talimatın. İçerdiği kelimeler çağrının kelime kullanımına dahil edilir.
languagestringhayır"en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir.
closedLoopbooleanhayırKapalı döngü kontrolünü atlamak için false olarak ayarla. Varsayılan: true.

Yanıt

AlanTürAçıklama
textstringYeniden yazılan metin.
beforeDetectionMetninin yapay zeka tespit sonucu. Sonuç yoksa null olur.
afterDetectionYeniden yazılan metnin yapay zeka tespit sonucu veya null.
passesintegerBu metin seçilene kadar kaç yeniden yazım üretildiği.
factsobjectBilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni.
latebooleanYeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur.
usageUsageBu çağrıda kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400no_textİstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder.
422too_shortMetin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder.
400unknown_modeBu uç nokta, seçtiğin modu desteklemiyor. Desteklenen bir mod seç.
400option_invalidfreezeWords, kelime veya ifadelerden oluşan bir liste değil. Değeri bu biçimde düzenle. Kotandan düşüm yapılmadı.
400option_too_longfreezeWords veya customInstruction kendi limitini aşıyor. Listeyi ya da talimatı kısalt. Kotandan düşüm yapılmadı.
429concurrency_limitedBu anahtar için bu türdeki eş zamanlı çağrı sınırına ulaşıldı. Bir çağrının bitmesini veya Retry-After başlığında belirtilen süreyi bekle.
422no_rewriteMotor yanıt verdi ancak hiçbir taslak kontrolleri geçemedi. Taslaklar boştu, isteği reddediyordu veya metnin kopyasıydı. Kelime hakkından düşülmedi. Metnini gözden geçirip tekrar dene.
503timeoutYeniden yazma işlemi çok uzun sürdüğü için durduruldu. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder.
503engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
502engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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

Metni özetle. Metin özetleme aracı, özeti önemli cümleler, paragraf veya madde işaretli liste olarak sunar.

Anahtarın yetki kapsamı: summarize

İstek gövdesi

AlanTürZorunluAçıklama
textstringevetKontrol 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 kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400no_textİstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder.
422too_shortMetin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder.
429concurrency_limitedBu anahtar için bu türdeki eş zamanlı çağrı sınırına ulaşıldı. Bir çağrının bitmesini veya Retry-After başlığında belirtilen süreyi bekle.
503timeoutYeniden yazma işlemi çok uzun sürdüğü için durduruldu. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder.
503engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
502engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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ını, her birinin metindeki konumu ve düzeltme önerileriyle birlikte döndürür.

Anahtarın yetki kapsamı: grammar

İstek gövdesi

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

Yanıt

AlanTürAçıklama
issues dizisiGrammarIssueMetindeki sıralarıyla bulunan sorunlar.
usageUsageBu çağrıda kotadan düşülen kullanım.

Bu yola özgü hatalar

DurumKodAnlamı
400no_textİstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder.
503engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
502engine_unavailableMotor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene.
503engine_startingMotor başlatılıyor ve zamanında hazır olamadı. Kelime hakkından düşülmedi. Bir dakika sonra tekrar dene.
504engine_timeoutMotor, metni zamanında tamamlayamadı. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder.
Örnek istek
curl -X POST https://textlume.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ç kapanması gerektiği konusunda anlaştı ve çalışanlardan ek çalışma saatleri için bir bütçe hazırlamalarını istedi. Bir sonraki toplantıda maliyetler, beklenen ziyaretçi sayısı ve bu değişikliğin binanın diğer bölümlerine etkisi 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"
  }
}

Referans

Hatalar

Hata yanıtı, HTTP durum kodunu ve bu yapıdaki bir gövdeyi içerir. İşlemini hata koduna göre belirle. Mesaj, neyin yanlış gittiğini ve sonra ne yapman gerektiğini açıklar.

Tüm yolları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. Authorization başlığına API anahtarını ekle.
401bad_keyAnahtar geçersiz veya iptal edilmiş. Geçerli bir API anahtarı kullan.
403out_of_scopeAnahtar, bu uç noktanın gerektirdiği yetki kapsamına sahip değil. Gerekli yetki kapsamına sahip bir anahtar kullan.
429rate_limitedBu anahtarla çok fazla istek gönderildi. Retry-After başlığında belirtilen süre kadar bekle.
403plan_lapsedHesabının planı artık API erişimini kapsamıyor. API erişimi içeren bir plana geç.
413too_largeİstek çok büyük. İsteğin boyutunu küçültüp tekrar gönder.
400bad_bodyİstek gövdesi bir JSON nesnesi değil. Gövdeyi geçerli bir JSON nesnesi olarak gönder.
413too_many_wordsİstekteki kelime sayısı, tek istek limitini aşıyor. Metni daha küçük isteklere böl. Kotandan düşüm yapılmadı.
402quota_exhaustedPlanının bu fatura dönemindeki API kelime hakkı tükendi ve ek kelime bakiyen boş. Kelime hakkından düşülmedi. Ek kelime satın al veya yeni fatura dönemini bekle.
402quota_shortBu çağrı için gereken kelime sayısı, planında kalan API kelime hakkıyla ek kelime bakiyenin toplamını aşıyor. Kelime hakkından düşülmedi. Daha kısa bir metin gönder veya ek kelime satın al.
402monthly_ceilingHesabının bu fatura dönemindeki API üst sınırına ulaşıldı. Bu sınır, ek kelime bakiyen olsa da geçerlidir. Kelime hakkından düşülmedi. Yeni fatura dönemini bekle.
503store_unavailableAnahtar, hesabının kelime sayısı veya kayıtlı yazı örneği şu anda okunamadı ya da bu kurulumda hesap veri deposu bulunmuyor. Hiçbir işlem çalıştırılmadı ve kelime hakkından düşülmedi. Tekrar dene.

Bir çağrı, çalışmaya başlamadan önce kullanacağı kelimeleri ayırır ve başarısız olursa geri verir. Kelime sayısı o anda kaydedilemezse ayrılan kelimeler kullanılmış sayılmaya devam eder. Bu durumda başarısız çağrı bunu belirtir ve kullanım bilgisinde "recorded": false döndürür. Toplu işlem yanıtının kullanım bilgisinde de "recorded": false yer alır. Kelime sayısı tahmin edilmez.

Hata yanıtının 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'nin uyguladığı sınırlardır.

  • Her anahtar, 60 saniyede en fazla 60 istek gönderebilir.
  • Her anahtar için aynı anda en fazla 4 tespit çağrısı ve toplam 2 insanlaştırma, yeniden yazma veya özetleme çağrısı çalışabilir. Toplu istek tek çağrı sayılır. Sınır aşıldığında yeni çağrıya Retry-After başlığıyla birlikte 429 concurrency_limited yanıtı verilir.
  • İşlem motorları yoğunken sitedeki Pro hesaplarının analiz istekleri API çağrılarından önce işlenir. Bu nedenle API çağrısı sırasını bekleyebilir.
  • Bir toplu istek en fazla 50 metin içerebilir.
  • Tek metin de göndersen birden fazla metin de göndersen, bir istek toplamda en fazla 20.000 kelime içerebilir.
  • Yapay zeka tespit aracı, tüm planlarda tek seferde en fazla 90.000 karakterlik, yani yaklaşık 10.000 kelimelik bir metni inceler. Daha uzun metinlerde, isteğin kelime limiti aşılmasa bile 413 text_too_long yanıtı döner.
  • Bir hesapta en fazla 5 etkin anahtar bulunabilir. Böylece hizmet kesintisi olmadan yeni bir anahtara geçebilirsin.

Yanıt nesneleri

Uç noktaların döndürdüğü nesneler ve her alanın açıklaması.

Detection

AlanTürAçıklama
figurenumberMetnin yapay zekayla yazılmış olma olasılığını gösteren, 0 ile 100 arasında bir değer. Site, kartlarda ve raporlarda alt ve üst sınırın orta noktasını gösterir. Bu, her zaman buradaki değerle aynı değildir.
lownumberDeğerin çevresindeki aralığın alt sınırı.
highnumberDeğerin çevresindeki aralığın üst sınırı.
uncertaintynumberAralığın puan cinsinden genişliğinin yarısı.
verdictstringDeğerin yer aldığı aralık. Metni kimin yazdığına ilişkin bir tespit değildir. Şunlardan biri: human, uncertain, ai.
confidencestringSonucun ne kadar güvenilir olduğu. Şunlardan biri: low, medium, high.
sentences dizisiSentenceScoreHer cümle için ayrı bir sonuç.
wordsintegerİncelenen kelimeler.
languagestringMetnin hangi dilde kabul edilerek incelendiği.
modelstringSonucu üreten model.
calibratedbooleanDil için bir kalibrasyon eğrisi bulunup bulunmadığı. Değer false ise sayısal değer sonuç olarak kullanılmamalıdır.
bandHumanFlagRatenumber | nullÖlçümlerimizde bu aralıktaki insan yazımı metinlerin ne sıklıkla yapay zeka ürünü olarak değerlendirildiği veya null.

SentenceScore

AlanTürAçıklama
textstringCümle.
scorenumberCümlenin yapay zeka tarafından yazılmış olma olasılığı, 0 ile 1 arasında.
verdictstringCümlenin yer aldığı aralık. Şunlardan biri: human, uncertain, ai.

Usage

AlanTürAçıklama
recordedbooleanKelime kullanımı kaydedildiyse true olur. Yalnızca toplu işlemde incelenmeyen kelimeler iade edilemediğinde false olur. Bu durumda yalnızca "words" alanı bulunur.
wordsintegerBu çağrıda kullanımdan düşülen kelimeler.
sourcestringKelimelerin alındığı kaynak: planın API kelime hakkı, ek kelime bakiyesi veya her ikisi. Şunlardan biri: plan, balance, plan_and_balance.
fromPlanintegerPlanın API kelime hakkından düşülen kelimeler. recorded değeri true olduğunda bulunur.
fromBalanceintegerEk kelime bakiyesinden düşülen kelimeler. recorded değeri true olduğunda bulunur.
allowanceLeftinteger | nullBu çağrıdan sonra geçerli fatura döneminde bu araç için planda kalan kelime hakkı. Planda bu araca ayrılmış bir kelime hakkı yoksa null olur. recorded değeri true olduğunda bulunur.
balanceintegerBu çağrıdan sonra kalan ek kelime bakiyesi. recorded değeri true olduğunda bulunur.

RewriteResult

AlanTürAçıklama
textstringYeniden yazılan metin.
beforeDetectionMetninin yapay zeka tespit sonucu. Sonuç yoksa null olur.
afterDetectionYeniden yazılan metnin yapay zeka tespit sonucu veya null.
passesintegerBu metin seçilene kadar kaç yeniden yazım üretildiği.
factsobjectBilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni.
latebooleanYeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur.

GrammarIssue

AlanTürAçıklama
offsetintegerSorunun gönderdiğin metinde başladığı konum. UTF-16 kod birimiyle belirtilir ve JavaScript dize indeksine karşılık gelir.
lengthintegerSorunun gönderdiğin metinde kaç UTF-16 kod birimini kapsadığı.
messagestringSorunun açıklaması.
shortMessagestringSorunun birkaç kelimelik açıklaması.
categorystringSorunun türü. Şunlardan biri: grammar, spelling, punctuation, style, typography.
replacementsstring dizisiEn uygun olanı başta olmak üzere düzeltme önerileri.
contextstringSorunun çevresindeki metin.

BatchResult

AlanTürAçıklama
idstringÖğenin kimliği.
detectionDetectionÖğe için döndürülen sonuç, varsa.
errorobjectÖğe için neden sonuç döndürülmediği.

Error

AlanTürAçıklama
errorobject
usageUsageBu çağrıda kotadan düşülen kullanım.
MCP sunucusu

MCP sunucusu

Bir ajan, Model Context Protocol üzerinden aynı araçları çağırabilir. Sunucu yalnızca bu API'nin istemcisidir. Bu yüzden ajan, sitenin verdiği sonuçla aynı sonucu alır.

  • detect_textTek bir metni analiz eder.
  • detect_batchBirden fazla metni analiz eder.
  • humanize_textMetni insanlaştırır ve bilgi doğrulama sonuçlarını sunar.
  • paraphrase_textMetni yeniden yazar.
  • summarize_textMetni özetler.
  • check_grammarYazım ve dil bilgisini kontrol eder.

Claude Code Çevrimiçi bağlanır

  1. API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:

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

    claude mcp add --transport http textlume https://textlume.com/api/mcp --header "Authorization: Bearer $TEXTLUME_API_KEY"
  3. Ya da bunun yerine şunu .mcp.json dosyasına ekle:

    .mcp.json
    {
      "mcpServers": {
        "textlume": {
          "type": "http",
          "url": "https://textlume.com/api/mcp",
          "headers": {
            "Authorization": "Bearer ${TEXTLUME_API_KEY}"
          }
        }
      }
    }
  4. Çalıştığını kontrol etmek için asistanına şu isteği gönder: "Bu paragrafı Textlume ile kontrol et, aralığı ve güven düzeyini söyle."

API anahtarın, kontrol panelindeki API bölümünde. Anahtarını asla paylaşılan bir dosyaya veya kod deposuna ekleme.

Ajanın aldığı her sonuç, sayısal değeri, bu değere ilişkin belirsizliği 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.

Kontrol panelinden anahtar oluştur

Bu sayfada anahtar oluşturulmaz.

API ve MCP sunucusu neler yapar