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
- POST /api/v1/detectBir metni kontrol et
- POST /api/v1/detect/batchBirden fazla metni kontrol et
- POST /api/v1/humanizeMetni insanlaştır
- POST /api/v1/paraphraseMetni yeniden yaz
- POST /api/v1/summarizeMetni özetle
- POST /api/v1/grammarDil bilgisini kontrol et
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.
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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 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.
Authorization: Bearer YOUR_API_KEYUç 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
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Kontrol edilecek veya yeniden yazılacak metin. |
| language | string | hayır | "en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir. |
| contentType | string | hayır | Değerlendirmede metin türüne özgü eğri kullanılacaksa "essay" veya "email" gibi bir metin türü. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| figure | number | Metnin 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. |
| low | number | Değerin çevresindeki aralığın alt sınırı. |
| high | number | Değerin çevresindeki aralığın üst sınırı. |
| uncertainty | number | Aralığın puan cinsinden genişliğinin yarısı. |
| verdict | string | Değerin yer aldığı aralık. Metni kimin yazdığına ilişkin bir tespit değildir. Şunlardan biri: human, uncertain, ai. |
| confidence | string | Sonucun ne kadar güvenilir olduğu. Şunlardan biri: low, medium, high. |
| sentences | dizisiSentenceScore | Her cümle için ayrı bir sonuç. |
| words | integer | İncelenen kelimeler. |
| language | string | Metnin hangi dilde kabul edilerek incelendiği. |
| model | string | Sonucu üreten model. |
| calibrated | boolean | Dil için bir kalibrasyon eğrisi bulunup bulunmadığı. Değer false ise sayısal değer sonuç olarak kullanılmamalıdır. |
| bandHumanFlagRate | number | null | Ölçümlerimizde bu aralıktaki insan yazımı metinlerin ne sıklıkla yapay zeka ürünü olarak değerlendirildiği veya null. |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | no_text | İstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder. |
| 422 | too_short | Metin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder. |
| 413 | text_too_long | Metin, motorun tek çağrıda inceleyebileceğinden uzun. Metni parçalara bölerek gönder. Kelime hakkından düşülmedi. |
| 422 | not_calibrated | Bu dil henüz incelenemiyor. Desteklenen bir dilde metin gönder. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 503 | engine_starting | Motor başlatılıyor ve zamanında hazır olamadı. Kelime hakkından düşülmedi. Bir dakika sonra tekrar dene. |
| 503 | engine_busy | Motor 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. |
| 504 | engine_timeout | Motor, metni zamanında tamamlayamadı. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder. |
| 429 | concurrency_limited | Bu 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. |
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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 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
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| items | object dizisi | evet | Her biri "text" alanını ve isteğe bağlı "id", "language" ve "contentType" alanlarını içeren metinler. |
| items[].id | string | hayır | Öğe için belirlediğin ve sonuçla birlikte döndürülen kimlik. Belirtilmezse öğenin listedeki konumu kullanılır. |
| items[].text | string | evet | Kontrol edilecek veya yeniden yazılacak metin. |
| items[].language | string | hayır | "en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir. |
| items[].contentType | string | hayır | Değerlendirmede metin türüne özgü eğri kullanılacaksa "essay" veya "email" gibi bir metin türü. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| results | dizisiBatchResult | Gönderim sırasına göre her öğe için bir sonuç. |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | batch_empty | İstek gövdesinde "items" alanı yok veya liste boş. "items" alanına işlenecek öğeleri ekle. |
| 413 | batch_too_large | Toplu işlemdeki öğe sayısı sınırı aşıyor. Öğeleri daha küçük gruplar halinde gönder. |
| 429 | concurrency_limited | Bu 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. |
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."}]}'const res = await fetch('https://textlume.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ç 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."
}
]
}),
})
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://textlume.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ç 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.",
},
],
},
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
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
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Kontrol edilecek veya yeniden yazılacak metin. |
| mode | string | hayır | Yeniden yazma modu. Şunlardan biri: natural, formal, simple, academic, creative, shorten, expand, custom. Varsayılan: natural. |
| style_sample | string | hayı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. |
| tab | string | hayır | Metni 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. |
| strength | string | hayır | Normal, 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. |
| ownTouch | string | hayır | Yeniden yazılan metne eklenecek, kendi sözlerinle yazdığın bir ayrıntı, örnek veya görüş. En fazla 400 karakter. |
| language | string | hayır | "en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılan metin. |
| before | Detection | Metninin yapay zeka tespit sonucu. Sonuç yoksa null olur. |
| after | Detection | Yeniden yazılan metnin yapay zeka tespit sonucu veya null. |
| passes | integer | Bu metin seçilene kadar kaç yeniden yazım üretildiği. |
| facts | object | Bilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni. |
| late | boolean | Yeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur. |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | no_text | İstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder. |
| 422 | too_short | Metin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder. |
| 400 | unknown_mode | Bu uç nokta, seçtiğin modu desteklemiyor. Desteklenen bir mod seç. |
| 400 | unknown_option | Bu uç nokta, seçtiğin sekmeyi veya yoğunluk düzeyini desteklemiyor. Desteklenen seçenekler için API belgelerine bak. |
| 402 | plan_required | Seç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ç. |
| 400 | no_sample | "custom" modu için bir yazı örneği gerekiyor. İstekle birlikte bir örnek gönder veya hesabına bir örnek kaydet. |
| 400 | sample_too_short | Yazı örneği, gereken minimum uzunluğun altında. Daha uzun bir örnek gönder. |
| 400 | sample_too_long | Yazı örneği, izin verilen maksimum uzunluğu aşıyor. Daha kısa bir örnek gönder. |
| 429 | concurrency_limited | Bu 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. |
| 422 | no_rewrite | Motor 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. |
| 503 | timeout | Yeniden 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. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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
Metni yeniden yaz. Metin yeniden yazma aracıyla aynı modları sunar.
Anahtarın yetki kapsamı: rewrite
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Kontrol edilecek veya yeniden yazılacak metin. |
| mode | string | hayır | Yeniden yazma 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 | Metinde kullanılacak dil düzeyi. Şunlardan biri: casual, professional, academic, creative. Varsayılan: professional. |
| purpose | string | hayır | Metnin kullanım amacı. Şunlardan biri: general, essay, article, email, marketing, report, story. Varsayılan: general. |
| synonyms | string | hayır | Kelimelerin ne ölçüde değiştirilebileceği. Şunlardan biri: few, some, many. Varsayılan: some. |
| freezeWords | string dizisi | hayır | Yazı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. |
| customInstruction | string | hayır | Yeniden yazım için en fazla 500 karakterlik kendi talimatın. İçerdiği kelimeler çağrının kelime kullanımına dahil edilir. |
| language | string | hayır | "en" veya "de" gibi bir dil kodu. Belirtilmezse dil, metinden tespit edilir. |
| closedLoop | boolean | hayır | Kapalı döngü kontrolünü atlamak için false olarak ayarla. Varsayılan: true. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılan metin. |
| before | Detection | Metninin yapay zeka tespit sonucu. Sonuç yoksa null olur. |
| after | Detection | Yeniden yazılan metnin yapay zeka tespit sonucu veya null. |
| passes | integer | Bu metin seçilene kadar kaç yeniden yazım üretildiği. |
| facts | object | Bilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni. |
| late | boolean | Yeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur. |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | no_text | İstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder. |
| 422 | too_short | Metin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder. |
| 400 | unknown_mode | Bu uç nokta, seçtiğin modu desteklemiyor. Desteklenen bir mod seç. |
| 400 | option_invalid | freezeWords, kelime veya ifadelerden oluşan bir liste değil. Değeri bu biçimde düzenle. Kotandan düşüm yapılmadı. |
| 400 | option_too_long | freezeWords veya customInstruction kendi limitini aşıyor. Listeyi ya da talimatı kısalt. Kotandan düşüm yapılmadı. |
| 429 | concurrency_limited | Bu 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. |
| 422 | no_rewrite | Motor 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. |
| 503 | timeout | Yeniden 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. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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
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
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Kontrol 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 kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | no_text | İstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder. |
| 422 | too_short | Metin, gereken minimum uzunluğun altında. Daha uzun bir metin gönder. |
| 429 | concurrency_limited | Bu 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. |
| 503 | timeout | Yeniden 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. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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ını, her birinin metindeki konumu ve düzeltme önerileriyle birlikte döndürür.
Anahtarın yetki kapsamı: grammar
İstek gövdesi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
| text | string | evet | Kontrol edilecek veya yeniden yazılacak metin. |
| language | string | hayır | Denetim için "en-US" veya "de-DE" gibi bir dil kodu. Varsayılan: en-US. |
Yanıt
| Alan | Tür | Açıklama |
|---|---|---|
| issues | dizisiGrammarIssue | Metindeki sıralarıyla bulunan sorunlar. |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
Bu yola özgü hatalar
| Durum | Kod | Anlamı |
|---|---|---|
| 400 | no_text | İstek gövdesinde "text" alanı yok. Metnini bu alana ekleyip tekrar gönder. |
| 503 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 502 | engine_unavailable | Motor yanıt vermedi. Kelime hakkından düşülmedi. Biraz sonra tekrar dene. |
| 503 | engine_starting | Motor başlatılıyor ve zamanında hazır olamadı. Kelime hakkından düşülmedi. Bir dakika sonra tekrar dene. |
| 504 | engine_timeout | Motor, metni zamanında tamamlayamadı. Kelime hakkından düşülmedi. Tekrar dene veya daha kısa bir metin gönder. |
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."}'const res = await fetch('https://textlume.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ç 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."
}),
})
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://textlume.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ç 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.",
},
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"
}
}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
| 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. Authorization başlığına API anahtarını ekle. |
| 401 | bad_key | Anahtar geçersiz veya iptal edilmiş. Geçerli bir API anahtarı kullan. |
| 403 | out_of_scope | Anahtar, bu uç noktanın gerektirdiği yetki kapsamına sahip değil. Gerekli yetki kapsamına sahip bir anahtar kullan. |
| 429 | rate_limited | Bu anahtarla çok fazla istek gönderildi. Retry-After başlığında belirtilen süre kadar bekle. |
| 403 | plan_lapsed | Hesabının planı artık API erişimini kapsamıyor. API erişimi içeren bir plana geç. |
| 413 | too_large | İstek çok büyük. İsteğin boyutunu küçültüp tekrar gönder. |
| 400 | bad_body | İstek gövdesi bir JSON nesnesi değil. Gövdeyi geçerli bir JSON nesnesi olarak gönder. |
| 413 | too_many_words | İstekteki kelime sayısı, tek istek limitini aşıyor. Metni daha küçük isteklere böl. Kotandan düşüm yapılmadı. |
| 402 | quota_exhausted | Planı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. |
| 402 | quota_short | Bu ç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. |
| 402 | monthly_ceiling | Hesabı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. |
| 503 | store_unavailable | Anahtar, 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.
{
"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
| Alan | Tür | Açıklama |
|---|---|---|
| figure | number | Metnin 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. |
| low | number | Değerin çevresindeki aralığın alt sınırı. |
| high | number | Değerin çevresindeki aralığın üst sınırı. |
| uncertainty | number | Aralığın puan cinsinden genişliğinin yarısı. |
| verdict | string | Değerin yer aldığı aralık. Metni kimin yazdığına ilişkin bir tespit değildir. Şunlardan biri: human, uncertain, ai. |
| confidence | string | Sonucun ne kadar güvenilir olduğu. Şunlardan biri: low, medium, high. |
| sentences | dizisiSentenceScore | Her cümle için ayrı bir sonuç. |
| words | integer | İncelenen kelimeler. |
| language | string | Metnin hangi dilde kabul edilerek incelendiği. |
| model | string | Sonucu üreten model. |
| calibrated | boolean | Dil için bir kalibrasyon eğrisi bulunup bulunmadığı. Değer false ise sayısal değer sonuç olarak kullanılmamalıdır. |
| bandHumanFlagRate | number | 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
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Cümle. |
| score | number | Cümlenin yapay zeka tarafından yazılmış olma olasılığı, 0 ile 1 arasında. |
| verdict | string | Cümlenin yer aldığı aralık. Şunlardan biri: human, uncertain, ai. |
Usage
| Alan | Tür | Açıklama |
|---|---|---|
| recorded | boolean | Kelime kullanımı kaydedildiyse true olur. Yalnızca toplu işlemde incelenmeyen kelimeler iade edilemediğinde false olur. Bu durumda yalnızca "words" alanı bulunur. |
| words | integer | Bu çağrıda kullanımdan düşülen kelimeler. |
| source | string | Kelimelerin alındığı kaynak: planın API kelime hakkı, ek kelime bakiyesi veya her ikisi. Şunlardan biri: plan, balance, plan_and_balance. |
| fromPlan | integer | Planın API kelime hakkından düşülen kelimeler. recorded değeri true olduğunda bulunur. |
| fromBalance | integer | Ek kelime bakiyesinden düşülen kelimeler. recorded değeri true olduğunda bulunur. |
| allowanceLeft | integer | null | Bu ç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. |
| balance | integer | Bu çağrıdan sonra kalan ek kelime bakiyesi. recorded değeri true olduğunda bulunur. |
RewriteResult
| Alan | Tür | Açıklama |
|---|---|---|
| text | string | Yeniden yazılan metin. |
| before | Detection | Metninin yapay zeka tespit sonucu. Sonuç yoksa null olur. |
| after | Detection | Yeniden yazılan metnin yapay zeka tespit sonucu veya null. |
| passes | integer | Bu metin seçilene kadar kaç yeniden yazım üretildiği. |
| facts | object | Bilgi doğrulama kontrollerinin bulguları ve yeniden yazılan metinde sorun varsa bunun nedeni. |
| late | boolean | Yeniden yazılan metin, kontrolleri tamamlanmadan süre sınırında döndürüldüyse true olur. |
GrammarIssue
| Alan | Tür | Açıklama |
|---|---|---|
| offset | integer | Sorunun gönderdiğin metinde başladığı konum. UTF-16 kod birimiyle belirtilir ve JavaScript dize indeksine karşılık gelir. |
| length | integer | Sorunun gönderdiğin metinde kaç UTF-16 kod birimini kapsadığı. |
| message | string | Sorunun açıklaması. |
| shortMessage | string | Sorunun birkaç kelimelik açıklaması. |
| category | string | Sorunun türü. Şunlardan biri: grammar, spelling, punctuation, style, typography. |
| replacements | string dizisi | En uygun olanı başta olmak üzere düzeltme önerileri. |
| context | string | Sorunun çevresindeki metin. |
BatchResult
| Alan | Tür | Açıklama |
|---|---|---|
| id | string | Öğenin kimliği. |
| detection | Detection | Öğe için döndürülen sonuç, varsa. |
| error | object | Öğe için neden sonuç döndürülmediği. |
Error
| Alan | Tür | Açıklama |
|---|---|---|
| error | object | |
| usage | Usage | Bu çağrıda kotadan düşülen kullanım. |
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
API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:
Bunu terminalde çalıştır:
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}" } } } }Ç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.
Claude Desktop Sunucu dosyasını çalıştırır
Sunucu dosyasını indir ve kaydettiğin konumu not et. Çalışması için Node.js gerekir.
Sunucu dosyasını indirUygulamada şu yolu izle: Settings > Developer > Edit Config.
Bunu claude_desktop_config.json dosyasına ekle:
claude_desktop_config.json{ "mcpServers": { "textlume": { "command": "node", "args": [ "/path/to/server.mjs" ], "env": { "TEXTLUME_API_KEY": "YOUR_API_KEY" } } } }Sunucunun yüklenmesi için Claude Desktop uygulamasını kapatıp yeniden başlat.
Ç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.
Claude (claude.ai) Yakında
claude.ai'ı Textlume hesabına giriş yaparak bağlama seçeneği yakında gelecek. O zamana kadar aynı araçları ilgili sekmelerdeki kurulum adımlarıyla Claude Desktop'ta sunucu dosyası üzerinden veya Claude Code'da kullanabilirsin.
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 Textlume hesabına giriş yaparak bağlama seçeneği yakında gelecek. O zamana kadar aynı araçları Codex ve Claude Code sekmelerindeki kurulum adımlarıyla kullanabilirsin.
Codex Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:
Bunu terminalde çalıştır:
Ya da bunun yerine şunu ~/.codex/config.toml dosyasına ekle:
~/.codex/config.toml[mcp_servers.textlume] url = "https://textlume.com/api/mcp" bearer_token_env_var = "TEXTLUME_API_KEY"Uygulamada şu yolu izle: MCP servers > Add server > Streamable HTTP.
Ç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.
Cursor Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:
Bunu ~/.cursor/mcp.json dosyasına ekle:
~/.cursor/mcp.json{ "mcpServers": { "textlume": { "url": "https://textlume.com/api/mcp", "headers": { "Authorization": "Bearer ${env:TEXTLUME_API_KEY}" } } } }Ç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.
VS Code (Copilot) Çevrimiçi bağlanır
Bunu .vscode/mcp.json dosyasına ekle:
.vscode/mcp.json{ "inputs": [ { "type": "promptString", "id": "textlume-key", "description": "Textlume API key", "password": true } ], "servers": { "textlume": { "type": "http", "url": "https://textlume.com/api/mcp", "headers": { "Authorization": "Bearer ${input:textlume-key}" } } } }Sunucu başladığında VS Code anahtarını bir kez sorar ve kaydeder.
Ç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.
Windsurf Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:
Uygulamada şu yolu izle: Cascade > ... > Open MCP config file.
Bunu mcp_config.json dosyasına ekle:
mcp_config.json{ "mcpServers": { "textlume": { "serverUrl": "https://textlume.com/api/mcp", "headers": { "Authorization": "Bearer ${env:TEXTLUME_API_KEY}" } } } }Sunucunun yüklenmesi için Windsurf uygulamasını kapatıp yeniden başlat.
Ç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.
Gemini CLI Çevrimiçi bağlanır
API anahtarını, istemcinin çalıştığı ortamda TEXTLUME_API_KEY adlı bir ortam değişkeninde sakla:
Bunu terminalde çalıştır:
Ya da bunun yerine şunu ~/.gemini/settings.json dosyasına ekle:
~/.gemini/settings.json{ "mcpServers": { "textlume": { "httpUrl": "https://textlume.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }Ç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.
Other clients Çevrimiçi, köprü veya dosya ile
Uzak MCP sunucularına HTTP üzerinden bağlanan bir istemci için yalnızca şu iki değer gerekir:
Yalnızca yerel sunucuları başlatabilen bir istemci, açık kaynaklı mcp-remote köprüsü üzerinden adrese erişebilir. Bunun için Node.js gerekir:
Ya da sunucu dosyamızı kendin çalıştır:
Sunucu dosyasını indir
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