API Terbuka · Gratis · Tanpa Kunci

Dokumentasi API.

Semua data pencarian Tutur dapat diakses siapa saja lewat HTTP GET. Tidak perlu autentikasi.

Memulai

Endpoint

Basis URL produksi mengikuti domain situs, sehingga API dapat dipanggil langsung dari domain mana pun (CORS terbuka). Untuk pengembangan lokal, server API berjalan terpisah pada http://localhost:3001.

  • GET /health

    Cek kesehatan layanan. Selalu mengembalikan {"status":"ok"}.

  • GET /api/search

    Pencarian lintas koleksi: definisi, relasi kata, bentuk slang, dan rima.

GET /api/search

Parameter

  • q

    Kata yang dicari, 2-80 karakter. Diproses sebagai teks yang dinormalisasi (huruf kecil, spasi dirapikan).

  • type (opsional)

    Jenis pencarian, salah satu dari: all, dictionary, baku, sinonim, antonim, slang, rima, rima-awal. Default: all.

  • limit (opsional)

    Jumlah hasil maksimal, angka 1-50. Default: 20.

Nilai yang mungkin untuk type:

  • all Semua koleksi
  • dictionary Definisi kamus (KBBI IV & VI)
  • baku Baku & nonbaku
  • sinonim Sinonim
  • antonim Antonim
  • slang Bentuk slang
  • rima Rima akhir
  • rima-awal Rima awal (aliterasi)

Format

Contoh respons

{
  "query": "bahasa",
  "results": [
    {
      "type": "dictionary",
      "word": "bahasa",
      "slug": "bahasa",
      "url": "/kata/bahasa/",
      "summary": "1ba·ha·sa n 1 Ling sistem lambang bunyi yg arbitrer, ..."
    },
    {
      "type": "rima",
      "word": "berbahasa",
      "slug": "berbahasa",
      "url": "/kata/berbahasa/",
      "summary": "ber.ba.ha.sa Verba (kata kerja) (1) menggunakan bahasa; ..."
    }
  ]
}

Setiap hasil berisi type, word, slug,url (jalur halaman kata di situs ini), dan summary. Hasil tipebaku, sinonim, dan antonim juga memuatcounterpart.

Cara pakai

Contoh permintaan

Mencari kata berima untuk “bahasa” dengan curl:

curl "https://tutur.taratsa.id/api/search?q=bahasa&type=rima&limit=10"

Contoh yang sama dengan JavaScript:

const response = await fetch(
  "https://tutur.taratsa.id/api/search?q=bahasa&type=rima&limit=10",
);
const { results } = await response.json();
console.log(results.map((item) => item.word));

Batas & etika

Rate limit, cache, dan galat

Batas pemakaian adalah 120 permintaan per menit per IP; respons429 menyertakan header Retry-After. Respons sukses dapat di-cache (Cache-Control: public, max-age=60, stale-while-revalidate=300) dan menyertakanETag — kirim kembali If-None-Match untuk mendapat respons304 yang hemat kuota.

  • 400

    Parameter tidak valid (q terlalu pendek/panjang, type atau limit salah).

  • 404

    Endpoint tidak ditemukan.

  • 429

    Melebihi batas 120 permintaan/menit per IP. Ikuti header Retry-After.

Data API berasal dari KBBI dan sumber terbuka lain (lihat halaman Sumber data). Layanan ini disediakan apa adanya; mohon tidak dipakai untuk membebani layanan resmi KBBI.