Di halaman ini
Memulai
Ikhtisar
Versi API ada di jalurnya, /api/v1. Setiap endpoint menerima POST dengan body JSON dan menjawab dalam JSON, termasuk saat terjadi kesalahan.
URL dasar https://blurwrite.com
- POST /api/v1/detectAnalisis satu teks
- POST /api/v1/detect/batchAnalisis beberapa teks
- POST /api/v1/humanizeBuat teks lebih alami
- POST /api/v1/paraphraseParafrase teks
- POST /api/v1/summarizeRingkas teks
- POST /api/v1/grammarPeriksa tata bahasa
Hanya di situs, tidak di API: penghitung kata, penghitung karakter, pemeriksa plagiarisme, dan opsi "Beri waktu lebih lama" pada humanizer.
Ditampilkan dari dokumen OpenAPI, sehingga mencantumkan persis rute dan kolom yang diterima API. Dokumen OpenAPI
Panggilan pertama Anda
Teks memerlukan setidaknya 50 kata.
Periksa "calibrated" terlebih dahulu: jika nilainya false, bahasa tersebut belum memiliki kurva yang disesuaikan, sehingga angkanya tidak boleh digunakan sebagai hasil.
Setiap nilai ditampilkan sebagai tipenya. Respons sebenarnya berisi hasil untuk teks Anda.
curl -X POST https://blurwrite.com/api/v1/detect \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/detect', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"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"
}
}Autentikasi
Kirim kunci Anda melalui header Authorization sebagai token bearer. Kunci dalam URL akan ditolak.
Kunci memiliki cakupan: detect, rewrite, summarize, dan grammar. Rute mengembalikan 403 out_of_scope jika kunci tidak memiliki cakupan yang diperlukan.
Authorization: Bearer YOUR_API_KEYEndpoint
POST /api/v1/detect
Analisis satu teks. Hasil deteksi untuk satu teks: angka dari 0 hingga 100, rentang di sekitarnya, hasil per kalimat, dan status kalibrasi bahasa.
Cakupan kunci: detect
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| language | string | tidak | Kode bahasa, seperti "en" atau "de". Jika tidak disertakan, bahasa dideteksi dari teks. |
| contentType | string | tidak | Jenis teks, seperti "essay" atau "email", saat analisis perlu menggunakan kurva untuk jenis teks tersebut. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| figure | number | Hasil dari 0 hingga 100: seberapa besar kemungkinan teks ditulis oleh mesin. |
| low | number | Batas bawah rentang di sekitar angka. |
| high | number | Batas atas rentang di sekitar angka. |
| uncertainty | number | Setengah lebar rentang, dalam poin. |
| verdict | string | Kategori rentang tempat angka berada; hanya kategori, bukan kesimpulan tentang siapa yang menulis teks. Salah satu dari: human, uncertain, ai. |
| confidence | string | Seberapa dapat diandalkan hasilnya. Salah satu dari: low, medium, high. |
| sentences | array berisi SentenceScore | Hasil per kalimat. |
| words | integer | Kata-kata yang dianalisis. |
| language | string | Bahasa yang digunakan untuk menganalisis teks. |
| model | string | Model yang menghasilkan analisis. |
| calibrated | boolean | Apakah bahasa memiliki kurva yang disesuaikan. Jika false, angka tidak boleh digunakan sebagai hasil. |
| bandHumanFlagRate | number | null | Seberapa sering teks manusia dalam kategori ini terdeteksi sebagai tulisan mesin dalam pengukuran kami, atau null. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | no_text | Isi permintaan tidak memiliki "text". |
| 422 | too_short | Teks lebih pendek dari panjang minimum. |
| 413 | text_too_long | Teks lebih panjang daripada yang dapat dianalisis mesin dalam satu panggilan. Bagi teks menjadi beberapa bagian. Tidak ada penggunaan yang dihitung. |
| 422 | not_calibrated | Bahasa ini belum dapat dianalisis. |
| 503 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 502 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 503 | engine_starting | Mesin sedang memulai dan belum siap hingga batas waktu. Tidak ada penggunaan yang dihitung. Coba lagi dalam satu menit. |
| 503 | engine_busy | Mesin sedang sibuk dan analisis tidak dapat dimulai hingga batas waktu; pengguna Pro di situs dilayani sebelum panggilan API. Tidak ada penggunaan yang dihitung. Coba lagi sebentar lagi. |
| 504 | engine_timeout | Mesin tidak menyelesaikan teks hingga batas waktu. Tidak ada penggunaan yang dihitung. Coba lagi, atau kirim teks yang lebih pendek. |
| 429 | concurrency_limited | Jumlah panggilan jenis ini yang sedang berjalan untuk kunci ini sudah mencapai batas. Tunggu salah satunya selesai, atau sesuai waktu dalam Retry-After. |
curl -X POST https://blurwrite.com/api/v1/detect \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/detect', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"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
Analisis beberapa teks. Satu panggilan dapat memuat teks hingga batas batch. Panggilan memerlukan kuota di awal untuk kata-kata dari setiap teks yang dapat dianalisis (50 kata atau lebih); kata-kata dari teks yang tidak menghasilkan hasil akan dikembalikan setelahnya. Kegagalan satu teks tidak menggagalkan seluruh batch.
Cakupan kunci: detect
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| items | array berisi object | ya | Teks-teks, masing-masing dengan "text" sendiri serta "id", "language", dan "contentType" opsional. |
| items[].id | string | tidak | ID Anda sendiri untuk item, yang dikembalikan bersama hasilnya. Jika tidak disertakan, posisi item digunakan. |
| items[].text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| items[].language | string | tidak | Kode bahasa, seperti "en" atau "de". Jika tidak disertakan, bahasa dideteksi dari teks. |
| items[].contentType | string | tidak | Jenis teks, seperti "essay" atau "email", saat analisis perlu menggunakan kurva untuk jenis teks tersebut. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| results | array berisi BatchResult | Satu hasil per item, sesuai urutan pengiriman. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | batch_empty | Isi permintaan tidak memiliki "items", atau daftarnya kosong. |
| 413 | batch_too_large | Jumlah item dalam batch melebihi batas. |
| 429 | concurrency_limited | Jumlah panggilan jenis ini yang sedang berjalan untuk kunci ini sudah mencapai batas. Tunggu salah satunya selesai, atau sesuai waktu dalam Retry-After. |
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 bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."},{"id":"2","text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}]}'const res = await fetch('https://blurwrite.com/api/v1/detect/batch', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"items": [
{
"id": "1",
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
},
{
"id": "2",
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}
]
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/detect/batch",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"items": [
{
"id": "1",
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
{
"id": "2",
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
],
},
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 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"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
Buat teks lebih alami. Humanizer dengan pemeriksaan fakta: angka, nama, dan kutipan dipertahankan, sementara hasil penulisan ulang yang mengubah fakta diperbaiki atau dilaporkan. Mode "custom" (Pro) menulis dengan gaya Anda sendiri, yang dipelajari dari sampel tulisan Anda.
Melalui API, humanizer menjalankan penulisan ulang standar. "Beri waktu lebih lama" hanya ada di situs.
Cakupan kunci: rewrite
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| mode | string | tidak | Mode penulisan ulang. Salah satu dari: natural, formal, simple, academic, creative, shorten, expand, custom. Default: natural. |
| style_sample | string | tidak | Dengan mode "custom": sampel tulisan Anda sendiri, 150 hingga 2.000 kata, yang dianalisis di server. Jika tidak disertakan, sampel yang tersimpan di akun Anda digunakan. |
| tab | string | tidak | Tab humanizer: ragam bahasa yang digunakan untuk menulis ulang teks. Standar mempertahankan ragam bahasa teks asli. Salah satu dari: standard, academic, professional, casual. Default: standard. |
| strength | string | tidak | Reguler mempertahankan isi dan ragam bahasa. Agresif dapat mengubah urutan teks dan menghilangkan uraian tambahan, tetapi tetap mempertahankan semua poin utama. Beberapa bagian mungkin terasa kurang lazim. Salah satu dari: regular, aggressive. Default: regular. |
| ownTouch | string | tidak | Detail, contoh, atau pendapat dengan kata-kata Anda sendiri, hingga 400 karakter, yang disisipkan ke dalam hasil penulisan ulang. |
| language | string | tidak | Kode bahasa, seperti "en" atau "de". Jika tidak disertakan, bahasa dideteksi dari teks. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| text | string | Teks hasil penulisan ulang. |
| before | Detection | Hasil deteksi teks Anda, atau null jika tidak ada. |
| after | Detection | Hasil deteksi teks yang ditulis ulang, atau null. |
| passes | integer | Jumlah penulisan ulang yang dihasilkan sebelum hasil ini dipilih. |
| facts | object | Temuan pemeriksaan fakta, dan alasan hasil penulisan ulang tidak lolos jika memang tidak lolos. |
| late | boolean | True jika hasil penulisan ulang dikembalikan saat batas waktu tercapai dengan pemeriksaan yang belum selesai. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | no_text | Isi permintaan tidak memiliki "text". |
| 422 | too_short | Teks lebih pendek dari panjang minimum. |
| 400 | unknown_mode | Mode ini tidak tersedia pada rute ini. |
| 400 | unknown_option | Tab atau tingkat perubahan tersebut tidak tersedia di rute ini. |
| 402 | plan_required | Mode, tab, tingkat perubahan, atau sentuhan pribadi memerlukan paket yang tidak dimiliki akun; mode "custom" memerlukan Pro. Tidak ada penggunaan yang dihitung. |
| 400 | no_sample | Mode "custom" memerlukan sampel tulisan, yang dikirim atau disimpan di akun. |
| 400 | sample_too_short | Sampel tulisan lebih pendek dari panjang minimum. |
| 400 | sample_too_long | Sampel tulisan melebihi panjang maksimum. |
| 429 | concurrency_limited | Jumlah panggilan jenis ini yang sedang berjalan untuk kunci ini sudah mencapai batas. Tunggu salah satunya selesai, atau sesuai waktu dalam Retry-After. |
| 422 | no_rewrite | Mesin merespons, tetapi tidak ada draf yang lolos pemeriksaan (kosong, penolakan, atau salinan teks). Tidak ada penggunaan yang dihitung. |
| 503 | timeout | Penulisan ulang terlalu lama dan dihentikan. Tidak ada penggunaan yang dihitung. |
| 503 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 502 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
curl -X POST https://blurwrite.com/api/v1/humanize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/humanize', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/humanize",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"text": "string",
"before": {
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"after": {
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"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
Parafrase teks. Alat parafrase, dengan daftar mode yang sama seperti alat parafrase di situs.
Cakupan kunci: rewrite
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| mode | string | tidak | Mode penulisan ulang. Salah satu dari: standard, fluency, formal, academic, simple, creative, expand, shorten. Default: standard. |
| strength | string | tidak | Seberapa jauh hasil penulisan ulang boleh berbeda dari teks asli. Salah satu dari: readable, balanced, strong. Default: balanced. |
| readability | string | tidak | Ragam bahasa yang digunakan untuk menulis. Salah satu dari: casual, professional, academic, creative. Default: professional. |
| purpose | string | tidak | Tujuan penggunaan teks. Salah satu dari: general, essay, article, email, marketing, report, story. Default: general. |
| synonyms | string | tidak | Seberapa bebas kata boleh diganti. Salah satu dari: few, some, many. Default: some. |
| freezeWords | array berisi string | tidak | Kata dan frasa yang harus dikembalikan persis seperti aslinya: maksimal 25, masing-masing hingga 60 karakter. Kata-katanya dihitung dalam penggunaan kata panggilan. |
| customInstruction | string | tidak | Instruksi singkat Anda sendiri untuk penulisan ulang, hingga 500 karakter. Kata-katanya dihitung dalam penggunaan kata panggilan. |
| language | string | tidak | Kode bahasa, seperti "en" atau "de". Jika tidak disertakan, bahasa dideteksi dari teks. |
| closedLoop | boolean | tidak | Atur ke false untuk melewati proses loop tertutup. Default: true. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| text | string | Teks hasil penulisan ulang. |
| before | Detection | Hasil deteksi teks Anda, atau null jika tidak ada. |
| after | Detection | Hasil deteksi teks yang ditulis ulang, atau null. |
| passes | integer | Jumlah penulisan ulang yang dihasilkan sebelum hasil ini dipilih. |
| facts | object | Temuan pemeriksaan fakta, dan alasan hasil penulisan ulang tidak lolos jika memang tidak lolos. |
| late | boolean | True jika hasil penulisan ulang dikembalikan saat batas waktu tercapai dengan pemeriksaan yang belum selesai. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | no_text | Isi permintaan tidak memiliki "text". |
| 422 | too_short | Teks lebih pendek dari panjang minimum. |
| 400 | unknown_mode | Mode ini tidak tersedia pada rute ini. |
| 400 | option_invalid | freezeWords bukan daftar kata atau frasa. Tidak ada yang dihitung. |
| 400 | option_too_long | freezeWords atau customInstruction melebihi batas. Tidak ada yang dihitung. |
| 429 | concurrency_limited | Jumlah panggilan jenis ini yang sedang berjalan untuk kunci ini sudah mencapai batas. Tunggu salah satunya selesai, atau sesuai waktu dalam Retry-After. |
| 422 | no_rewrite | Mesin merespons, tetapi tidak ada draf yang lolos pemeriksaan (kosong, penolakan, atau salinan teks). Tidak ada penggunaan yang dihitung. |
| 503 | timeout | Penulisan ulang terlalu lama dan dihentikan. Tidak ada penggunaan yang dihitung. |
| 503 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 502 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
curl -X POST https://blurwrite.com/api/v1/paraphrase \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/paraphrase', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/paraphrase",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
timeout=90,
)
data = res.json()
if not res.ok:
raise RuntimeError(f"{data['error']['code']}: {data['error']['message']}"){
"text": "string",
"before": {
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"verdict": "human | uncertain | ai"
}
],
"words": "integer",
"language": "string",
"model": "string",
"calibrated": "boolean",
"bandHumanFlagRate": "number | null"
},
"after": {
"figure": "number, 0 hingga 100",
"low": "number, 0 hingga 100",
"high": "number, 0 hingga 100",
"uncertainty": "number",
"verdict": "human | uncertain | ai",
"confidence": "low | medium | high",
"sentences": [
{
"text": "string",
"score": "number, 0 hingga 1",
"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
Ringkas teks. Peringkas, dalam bentuk kalimat utama, paragraf, atau poin-poin.
Cakupan kunci: summarize
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| mode | string | tidak | Bentuk ringkasan. Salah satu dari: key-sentences, paragraph, bullets. Default: key-sentences. |
| length | string | tidak | Panjang ringkasan. Salah satu dari: short, medium, long. Default: medium. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| text | string | Ringkasan. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | no_text | Isi permintaan tidak memiliki "text". |
| 422 | too_short | Teks lebih pendek dari panjang minimum. |
| 429 | concurrency_limited | Jumlah panggilan jenis ini yang sedang berjalan untuk kunci ini sudah mencapai batas. Tunggu salah satunya selesai, atau sesuai waktu dalam Retry-After. |
| 503 | timeout | Penulisan ulang terlalu lama dan dihentikan. Tidak ada penggunaan yang dihitung. |
| 503 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 502 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
curl -X POST https://blurwrite.com/api/v1/summarize \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/summarize', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/summarize",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
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
Periksa tata bahasa. Masalah tata bahasa, ejaan, tanda baca, dan gaya, masing-masing beserta posisi dalam teks dan saran penggantinya.
Cakupan kunci: grammar
Isi permintaan
| Kolom | Tipe | Wajib | Deskripsi |
|---|---|---|---|
| text | string | ya | Teks untuk dianalisis atau ditulis ulang. |
| language | string | tidak | Kode bahasa untuk pemeriksaan, seperti "en-US" atau "de-DE". Default: en-US. |
Respons
| Kolom | Tipe | Deskripsi |
|---|---|---|
| issues | array berisi GrammarIssue | Masalah yang ditemukan, sesuai urutan kemunculannya. |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Kesalahan tambahan dari rute ini
| Status | Kode | Arti |
|---|---|---|
| 400 | no_text | Isi permintaan tidak memiliki "text". |
| 503 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 502 | engine_unavailable | Mesin tidak merespons. Tidak ada penggunaan yang dihitung. |
| 503 | engine_starting | Mesin sedang memulai dan belum siap hingga batas waktu. Tidak ada penggunaan yang dihitung. Coba lagi dalam satu menit. |
| 504 | engine_timeout | Mesin tidak menyelesaikan teks hingga batas waktu. Tidak ada penggunaan yang dihitung. Coba lagi, atau kirim teks yang lebih pendek. |
curl -X POST https://blurwrite.com/api/v1/grammar \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."}'const res = await fetch('https://blurwrite.com/api/v1/grammar', {
method: 'POST',
headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya."
}),
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error.code}: ${data.error.message}`)import os
import requests
res = requests.post(
"https://blurwrite.com/api/v1/grammar",
headers={"Authorization": f"Bearer {os.environ['API_KEY']}"},
json={
"text": "Komite bertemu pada hari Selasa untuk meninjau rencana perpustakaan baru. Para anggota sepakat bahwa ruang baca harus tetap buka lebih lama pada hari kerja, dan mereka meminta staf menyiapkan anggaran untuk jam tambahan. Pertemuan berikutnya akan membahas biaya, perkiraan jumlah pengunjung, dan dampaknya terhadap bagian gedung lainnya.",
},
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"
}
}Referensi
Kesalahan
Kesalahan menjawab dengan status HTTP-nya dan body dalam bentuk ini. Bertindaklah berdasarkan kodenya; pesannya menjelaskan apa yang salah dan apa yang perlu dilakukan.
Kesalahan yang dapat dikembalikan setiap rute
| Status | Kode | Arti |
|---|---|---|
| 401 | key_in_url | Kunci dikirim dalam URL. Kirim melalui header Authorization. |
| 401 | no_key | Tidak ada kunci yang dikirim. |
| 401 | bad_key | Kunci tidak valid atau telah dicabut. |
| 403 | out_of_scope | Kunci tidak memiliki cakupan yang diperlukan rute ini. |
| 429 | rate_limited | Terlalu banyak permintaan untuk kunci ini. Tunggu sesuai waktu dalam Retry-After. |
| 403 | plan_lapsed | Paket akun tidak lagi menyertakan API. |
| 413 | too_large | Permintaan terlalu besar. |
| 400 | bad_body | Isi permintaan bukan objek JSON. |
| 413 | too_many_words | Jumlah kata dalam permintaan melebihi batas per permintaan. Bagi teksnya. Tidak ada yang dihitung. |
| 402 | quota_exhausted | Kuota kata API paket untuk periode tagihan ini telah habis dan saldo isi ulang kosong. Tidak ada penggunaan yang dihitung. |
| 402 | quota_short | Panggilan memerlukan lebih banyak kata daripada gabungan sisa kuota kata API paket dan saldo. Tidak ada penggunaan yang dihitung. |
| 402 | monthly_ceiling | Akun telah mencapai batas API untuk periode tagihan ini, yang berlaku berapa pun saldonya. Tidak ada penggunaan yang dihitung. |
| 503 | store_unavailable | Kunci, jumlah kata akun, atau sampel tulisan yang tersimpan tidak dapat dibaca saat ini, atau deployment ini tidak memiliki penyimpanan akun. Tidak ada proses yang dijalankan atau penggunaan yang dihitung. |
Panggilan mencadangkan kuota kata sebelum dijalankan dan mengembalikannya jika gagal. Jika jumlah kata tidak dapat dicatat saat itu, kuota kata tetap terpakai: panggilan yang gagal akan menyatakan hal tersebut dan menyertakan "recorded": false dalam data penggunaannya, batch akan mengembalikan "recorded": false dalam data penggunaannya, dan jumlah kata tidak akan diperkirakan.
{
"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"
}
}Batas
Setiap angka di sini adalah batas yang diterapkan oleh API.
- Setiap kunci dapat mengirim maksimal 60 permintaan setiap 60 detik.
- Setiap kunci dapat menjalankan maksimal 4 panggilan deteksi (satu batch dihitung sebagai satu panggilan) dan 2 panggilan untuk membuat teks lebih alami, memparafrasekan, atau meringkas secara bersamaan; panggilan tambahan akan menerima respons 429 concurrency_limited dengan Retry-After.
- Saat mesin sedang sibuk, analisis dari akun Pro di situs diproses lebih dahulu daripada panggilan API, sehingga panggilan API mungkin perlu menunggu giliran.
- Satu batch memuat maksimal 50 teks.
- Satu permintaan menerima maksimal 20.000 kata, baik dalam satu teks maupun satu batch.
- Detektor membaca satu teks hingga 90.000 karakter, sekitar 10.000 kata, di semua paket. Teks yang lebih panjang akan mendapat respons 413 text_too_long, meskipun masih dalam batas kata per permintaan.
- Satu akun dapat memiliki hingga 5 kunci aktif, sehingga kunci dapat dirotasi tanpa gangguan layanan.
Objek respons
Objek yang dikembalikan endpoint, kolom demi kolom.
Detection
| Kolom | Tipe | Deskripsi |
|---|---|---|
| figure | number | Hasil dari 0 hingga 100: seberapa besar kemungkinan teks ditulis oleh mesin. |
| low | number | Batas bawah rentang di sekitar angka. |
| high | number | Batas atas rentang di sekitar angka. |
| uncertainty | number | Setengah lebar rentang, dalam poin. |
| verdict | string | Kategori rentang tempat angka berada; hanya kategori, bukan kesimpulan tentang siapa yang menulis teks. Salah satu dari: human, uncertain, ai. |
| confidence | string | Seberapa dapat diandalkan hasilnya. Salah satu dari: low, medium, high. |
| sentences | array berisi SentenceScore | Hasil per kalimat. |
| words | integer | Kata-kata yang dianalisis. |
| language | string | Bahasa yang digunakan untuk menganalisis teks. |
| model | string | Model yang menghasilkan analisis. |
| calibrated | boolean | Apakah bahasa memiliki kurva yang disesuaikan. Jika false, angka tidak boleh digunakan sebagai hasil. |
| bandHumanFlagRate | number | null | Seberapa sering teks manusia dalam kategori ini terdeteksi sebagai tulisan mesin dalam pengukuran kami, atau null. |
SentenceScore
| Kolom | Tipe | Deskripsi |
|---|---|---|
| text | string | Kalimat. |
| score | number | Dari 0 hingga 1, seberapa besar kemungkinan kalimat ditulis oleh mesin. |
| verdict | string | Kategori rentang tempat kalimat berada. Salah satu dari: human, uncertain, ai. |
Usage
| Kolom | Tipe | Deskripsi |
|---|---|---|
| recorded | boolean | True jika jumlah penggunaan tercatat. False hanya jika batch tidak dapat mengembalikan kata yang belum dianalisis; saat itu hanya "words" yang tersedia. |
| words | integer | Kata-kata yang dihitung oleh panggilan ini. |
| source | string | Sumbernya: kuota kata API paket, saldo isi ulang, atau keduanya. Salah satu dari: plan, balance, plan_and_balance. |
| fromPlan | integer | Kata-kata yang diambil dari kuota kata API paket. Tersedia jika recorded bernilai true. |
| fromBalance | integer | Kata-kata yang diambil dari saldo isi ulang. Tersedia jika recorded bernilai true. |
| allowanceLeft | integer | null | Sisa kuota kata paket untuk alat ini setelah panggilan ini, dalam periode penagihan saat ini. Null untuk alat tanpa kuota pada paket ini. Tersedia jika recorded bernilai true. |
| balance | integer | Sisa saldo isi ulang setelah panggilan ini. Tersedia jika recorded bernilai true. |
RewriteResult
| Kolom | Tipe | Deskripsi |
|---|---|---|
| text | string | Teks hasil penulisan ulang. |
| before | Detection | Hasil deteksi teks Anda, atau null jika tidak ada. |
| after | Detection | Hasil deteksi teks yang ditulis ulang, atau null. |
| passes | integer | Jumlah penulisan ulang yang dihasilkan sebelum hasil ini dipilih. |
| facts | object | Temuan pemeriksaan fakta, dan alasan hasil penulisan ulang tidak lolos jika memang tidak lolos. |
| late | boolean | True jika hasil penulisan ulang dikembalikan saat batas waktu tercapai dengan pemeriksaan yang belum selesai. |
GrammarIssue
| Kolom | Tipe | Deskripsi |
|---|---|---|
| offset | integer | Posisi awal masalah dalam teks yang Anda kirim, dalam unit kode UTF-16 (indeks string JavaScript). |
| length | integer | Jumlah unit kode UTF-16 dalam teks yang Anda kirim yang tercakup oleh masalah. |
| message | string | Penjelasan kesalahan. |
| shortMessage | string | Penjelasan yang sama, dalam beberapa kata. |
| category | string | Jenis masalah. Salah satu dari: grammar, spelling, punctuation, style, typography. |
| replacements | array berisi string | Saran pengganti, yang terbaik di urutan pertama. |
| context | string | Teks di sekitar masalah. |
BatchResult
| Kolom | Tipe | Deskripsi |
|---|---|---|
| id | string | ID item. |
| detection | Detection | Hasil analisis, jika item mengembalikannya. |
| error | object | Alasan item tidak mengembalikan hasil analisis. |
Error
| Kolom | Tipe | Deskripsi |
|---|---|---|
| error | object | |
| usage | Usage | Penggunaan yang dihitung oleh panggilan ini. |
Server MCP
Agen dapat mengakses alat yang sama melalui Model Context Protocol. Server ini hanya bertindak sebagai klien API ini, sehingga agen mendapatkan hasil analisis yang persis sama dengan yang ditampilkan situs.
- detect_textMenganalisis satu teks.
- detect_batchMenganalisis beberapa teks.
- humanize_textMembuat teks lebih alami disertai pemeriksaan fakta.
- paraphrase_textMemparafrasekan teks.
- summarize_textMeringkas teks.
- check_grammarMemeriksa tata bahasa dan ejaan.
Claude Code Terhubung online
Simpan kunci API Anda di variabel lingkungan bernama BLURWRITE_API_KEY, di tempat klien berjalan:
Jalankan ini di terminal:
Atau masukkan ini ke .mcp.json sebagai gantinya:
.mcp.json{ "mcpServers": { "blurwrite": { "type": "http", "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${BLURWRITE_API_KEY}" } } } }Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Claude Desktop Menjalankan file server
Unduh file server dan catat lokasi penyimpanannya. File ini memerlukan Node.js.
Unduh file serverDi aplikasi: Settings > Developer > Edit Config.
Tambahkan ini ke claude_desktop_config.json:
claude_desktop_config.json{ "mcpServers": { "blurwrite": { "command": "node", "args": [ "/path/to/server.mjs" ], "env": { "BLURWRITE_API_KEY": "YOUR_API_KEY" } } } }Tutup lalu buka kembali Claude Desktop agar server dimuat.
Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Claude (claude.ai) Segera hadir
Menghubungkan claude.ai dengan masuk ke akun Blurwrite Anda akan segera hadir. Sementara itu, alat yang sama sudah berfungsi di Claude Desktop dengan file server, atau di Claude Code, dengan pengaturan di tab masing-masing.
Hanya jika organisasi Anda memiliki opsi header permintaan untuk konektor kustom: tambahkan alamat dengan header ini.
ChatGPT Segera hadir
Menghubungkan ChatGPT dengan masuk ke akun Blurwrite Anda akan segera hadir. Sementara itu, alat yang sama sudah berfungsi di Codex dan Claude Code, dengan pengaturan di tab masing-masing.
Codex Terhubung online
Simpan kunci API Anda di variabel lingkungan bernama BLURWRITE_API_KEY, di tempat klien berjalan:
Jalankan ini di terminal:
Atau masukkan ini ke ~/.codex/config.toml sebagai gantinya:
~/.codex/config.toml[mcp_servers.blurwrite] url = "https://blurwrite.com/api/mcp" bearer_token_env_var = "BLURWRITE_API_KEY"Di aplikasi: MCP servers > Add server > Streamable HTTP.
Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Cursor Terhubung online
Simpan kunci API Anda di variabel lingkungan bernama BLURWRITE_API_KEY, di tempat klien berjalan:
Tambahkan ini ke ~/.cursor/mcp.json:
~/.cursor/mcp.json{ "mcpServers": { "blurwrite": { "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${env:BLURWRITE_API_KEY}" } } } }Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
VS Code (Copilot) Terhubung online
Tambahkan ini ke .vscode/mcp.json:
.vscode/mcp.json{ "inputs": [ { "type": "promptString", "id": "blurwrite-key", "description": "Blurwrite API key", "password": true } ], "servers": { "blurwrite": { "type": "http", "url": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${input:blurwrite-key}" } } } }Saat server dimulai, VS Code meminta kunci Anda sekali dan menyimpannya.
Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Windsurf Terhubung online
Simpan kunci API Anda di variabel lingkungan bernama BLURWRITE_API_KEY, di tempat klien berjalan:
Di aplikasi: Cascade > ... > Open MCP config file.
Tambahkan ini ke mcp_config.json:
mcp_config.json{ "mcpServers": { "blurwrite": { "serverUrl": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer ${env:BLURWRITE_API_KEY}" } } } }Tutup lalu buka kembali Windsurf agar server dimuat.
Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Gemini CLI Terhubung online
Simpan kunci API Anda di variabel lingkungan bernama BLURWRITE_API_KEY, di tempat klien berjalan:
Jalankan ini di terminal:
Atau masukkan ini ke ~/.gemini/settings.json sebagai gantinya:
~/.gemini/settings.json{ "mcpServers": { "blurwrite": { "httpUrl": "https://blurwrite.com/api/mcp", "headers": { "Authorization": "Bearer YOUR_API_KEY" } } } }Periksa apakah sudah berfungsi: minta asisten Anda "Periksa paragraf ini dengan Blurwrite dan beri tahu saya rentang serta tingkat keyakinannya."
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Other clients Online, jembatan, atau file
Klien yang terhubung ke server MCP jarak jauh melalui HTTP hanya memerlukan dua nilai ini:
Klien yang hanya menjalankan server lokal dapat menjangkau alamat ini melalui jembatan open source mcp-remote (memerlukan Node.js):
Atau jalankan sendiri file server kami:
Unduh file server
Kunci API Anda ada di dasbor, di bagian API. Jangan pernah menaruh kunci di file bersama atau di repositori.
Setiap hasil analisis yang diterima agen mencakup nilai, tingkat ketidakpastiannya, dan status kalibrasi, sehingga agen dapat menjelaskan arti hasil tersebut dan kapan hasil itu tidak boleh digunakan.
Kunci Anda
Masuk, lalu buat kunci di dasbor Anda.
Kunci tidak pernah dibuat di halaman ini.
Fungsi API dan server MCP