Rondain
API JSON v1

Status semua domainmu, langsung ke sistemmu

Ambil hasil ronda Rondain lewat kode sendiri: status blokir Komdigi dan IndiHome, uptime, SSL, masa aktif domain, skor, posisi Google, dan riwayat kejadian. Pas untuk dashboard kantor, sistem agensi, atau laporan ke klien.

  • Hanya bacaAPI tidak bisa mengubah atau menghapus apa pun.
  • Data milikmu sajaSatu kunci hanya melihat domain di akunnya.
  • Bisa dicabut kapan sajaKunci bocor? Cabut, langsung ditolak.
terminal
$ curl https://staging.rondain.com/api/v1/domain/tokocontoh.id \
    -H "Authorization: Bearer rdn_…"

{
  "ok": true,
  "data": {
    "domain": "tokocontoh.id",
    "status": "aman",
    "komdigi": { "status": "aman" },
    "indihome": { "status": "normal" },
    "situs": { "online": true, "uptime_7_hari": 99.86 },
    "ssl": { "sisa_hari": 71 },
    "skor": { "kesehatan": 88 }
  }
}

Mulai dalam 3 langkah

  1. Buat kunci

    Masuk ke dasbor, buka Akun › API JSON, beri nama, lalu klik Buat kunci. Kunci hanya tampil sekali, langsung simpan.

  2. Simpan di server

    Taruh kunci di variabel lingkungan (misalnya RONDAIN_KEY) di server aplikasimu. Jangan ditulis di kode yang bisa dilihat orang.

  3. Panggil API

    Kirim permintaan GET ke alamat di bawah dengan header Authorization. Jawabannya JSON.

ALAMAT DASARhttps://staging.rondain.com/api/v1

Kunci API

Setiap permintaan wajib membawa kunci di header Authorization dengan awalan Bearer. Kunci selalu diawali rdn_.

GET /api/v1/domain HTTP/1.1
Host: staging.rondain.com
Authorization: Bearer rdn_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  • Satu akun boleh punya 3 kunci aktif, misalnya satu untuk dashboard kantor dan satu untuk sistem klien.
  • Rondain hanya menyimpan sidik kunci, bukan kuncinya. Kalau lupa, buat kunci baru lalu cabut yang lama.
  • Kunci yang ditaruh di alamat URL (misalnya ?key=) ditolak, karena alamat URL bisa tercatat di log server dan browser.
  • Kunci berhenti bekerja kalau dicabut, kalau paket turun ke paket tanpa API, atau kalau akun dinonaktifkan.

Batas pemakaian

API tersedia di paket berikut. Jatah harian dihitung per akun (semua kunci dijumlah) dan mulai lagi setiap pukul 00.00 WIB.

Pro 5.000permintaan / hari 50 domain · dicek tiap 5 menit · riwayat 1 tahun
Agency 20.000permintaan / hari 100 domain · dicek tiap 5 menit · riwayat 1 tahun
Semua paket API 60permintaan / menit / kunci Lihat harga paket

Setiap jawaban membawa header berikut supaya aplikasimu tahu kapan harus berhenti:

HeaderIsi
X-RateLimit-LimitJatah per hari paketmu.
X-RateLimit-RemainingSisa jatah hari ini.
X-RateLimit-ResetWaktu jatah baru (detik Unix).
Retry-AfterHanya saat ditolak (429): berapa detik lagi boleh mencoba.

Data ronda diperbarui sesuai jadwal cek paketmu (lihat di atas), posisi Google sekali sehari. Memanggil API lebih sering dari itu tidak membuat datanya lebih baru, jadi cukup panggil tiap beberapa menit.

Format jawaban

Semua jawaban berupa JSON UTF-8. Jawaban yang berhasil selalu punya "ok": true dan isinya di data. Yang gagal punya "ok": false dan penjelasan di error.

Berhasil
{
  "ok": true,
  "data": {
    "…": "…"
  }
}
Gagal
{
  "ok": false,
  "error": {
    "kode": "jatah_harian_habis",
    "pesan": "Jatah 5000 permintaan hari ini sudah habis. Jatah baru mulai pukul 00.00 WIB.",
    "reset": "2026-10-11T17:00:00.000Z"
  }
}
  • Semua waktu dalam format ISO 8601 zona UTC (akhiran Z). Tambah 7 jam untuk WIB.
  • Nilai null artinya belum ada data (misalnya belum pernah dicek), bukan nol.
  • Pakai error.kode untuk logika program. error.pesan boleh berubah kata-katanya.

Endpoint

Semua endpoint memakai metode GET. Domain yang tidak ada di akunmu dijawab 404, sama seperti domain yang memang tidak ada.

GET/akun

Info akun dan sisa jatah

Paket aktif, jumlah domain, berapa hari riwayat yang disimpan, dan sisa jatah hari ini. Cocok dipanggil sekali saat aplikasimu mulai.

curl -s "https://staging.rondain.com/api/v1/akun" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "data": {
    "paket": {
      "id": "pro",
      "nama": "Pro"
    },
    "domain": {
      "terpakai": 12,
      "maks": 50
    },
    "riwayat_hari": 365,
    "jatah": {
      "per_hari": 5000,
      "terpakai_hari_ini": 37,
      "sisa": 4963,
      "reset": "2026-10-11T17:00:00.000Z",
      "per_menit_per_kunci": 60
    }
  }
}
GET/domain

Daftar semua domain

Semua domain di akunmu beserta hasil ronda terakhir: status Komdigi dan IndiHome, online atau tidak, SSL, masa aktif domain, skor, dan cek judi. Diurutkan menurut nama.

curl -s "https://staging.rondain.com/api/v1/domain" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "jumlah": 1,
  "data": [
    {
      "domain": "tokocontoh.id",
      "status": "aman",
      "dijeda": false,
      "ditambahkan": "2026-09-02T03:14:00.000Z",
      "dicek_terakhir": "2026-10-11T08:05:12.000Z",
      "cek_berikutnya": "2026-10-11T08:10:12.000Z",
      "komdigi": {
        "status": "aman",
        "diblokir_sejak": null,
        "dicek": "2026-10-11T08:05:12.000Z"
      },
      "indihome": {
        "status": "normal",
        "dicek": "2026-10-11T08:05:12.000Z"
      },
      "situs": {
        "online": true,
        "kode_http": 200,
        "respons_ms": 412,
        "down_sejak": null,
        "uptime_7_hari": 99.86
      },
      "ssl": {
        "valid": true,
        "berlaku_sampai": "2026-12-20T23:59:59.000Z",
        "sisa_hari": 71,
        "penerbit": "Let's Encrypt",
        "dicek": "2026-10-11T02:00:41.000Z"
      },
      "masa_domain": {
        "berlaku_sampai": "2027-03-14T00:00:00.000Z",
        "sisa_hari": 155,
        "registrar": "PT Registrar Contoh",
        "dicek": "2026-10-08T02:01:10.000Z"
      },
      "skor": {
        "kesehatan": 88,
        "minggu_lalu": 84,
        "seo": 76,
        "kecepatan_hp": 71,
        "kecepatan_desktop": 93
      },
      "judi": {
        "status": "bersih",
        "dicek": "2026-10-10T01:30:00.000Z"
      }
    }
  ]
}
GET/domain/{domain}

Detail satu domain

Sama seperti satu baris daftar, ditambah jumlah kata kunci Google yang dilacak. Nama domain boleh ditulis dengan atau tanpa www dan https://.

ParameterJenisKeterangan
domaindi alamatNama domain yang ada di akunmu, misalnya tokocontoh.id.
curl -s "https://staging.rondain.com/api/v1/domain/tokocontoh.id" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "data": {
    "domain": "tokocontoh.id",
    "status": "aman",
    "dijeda": false,
    "ditambahkan": "2026-09-02T03:14:00.000Z",
    "dicek_terakhir": "2026-10-11T08:05:12.000Z",
    "cek_berikutnya": "2026-10-11T08:10:12.000Z",
    "komdigi": {
      "status": "aman",
      "diblokir_sejak": null,
      "dicek": "2026-10-11T08:05:12.000Z"
    },
    "indihome": {
      "status": "normal",
      "dicek": "2026-10-11T08:05:12.000Z"
    },
    "situs": {
      "online": true,
      "kode_http": 200,
      "respons_ms": 412,
      "down_sejak": null,
      "uptime_7_hari": 99.86
    },
    "ssl": {
      "valid": true,
      "berlaku_sampai": "2026-12-20T23:59:59.000Z",
      "sisa_hari": 71,
      "penerbit": "Let's Encrypt",
      "dicek": "2026-10-11T02:00:41.000Z"
    },
    "masa_domain": {
      "berlaku_sampai": "2027-03-14T00:00:00.000Z",
      "sisa_hari": 155,
      "registrar": "PT Registrar Contoh",
      "dicek": "2026-10-08T02:01:10.000Z"
    },
    "skor": {
      "kesehatan": 88,
      "minggu_lalu": 84,
      "seo": 76,
      "kecepatan_hp": 71,
      "kecepatan_desktop": 93
    },
    "judi": {
      "status": "bersih",
      "dicek": "2026-10-10T01:30:00.000Z"
    },
    "kata_kunci_dilacak": 14
  }
}
GET/domain/{domain}/riwayat

Riwayat harian

Ringkasan per hari (tanggal WIB): pernah diblokir atau tidak, uptime, skor rata-rata, dan jumlah cek. Ditambah daftar periode blokir Komdigi.

ParameterJenisKeterangan
domaindi alamatNama domain yang ada di akunmu.
hariangka, opsionalBerapa hari ke belakang. Bawaan 30, paling banyak sesuai paket (Pro dan Agency 365).
curl -s "https://staging.rondain.com/api/v1/domain/tokocontoh.id/riwayat?hari=30" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "data": {
    "domain": "tokocontoh.id",
    "hari": 3,
    "hari_maks_paket": 365,
    "per_hari": [
      {
        "tanggal": "2026-10-09",
        "diblokir": false,
        "selalu_online": true,
        "uptime_persen": 100,
        "skor_rata": 87,
        "jumlah_cek": 288
      },
      {
        "tanggal": "2026-10-10",
        "diblokir": false,
        "selalu_online": false,
        "uptime_persen": 99.31,
        "skor_rata": 86,
        "jumlah_cek": 288
      },
      {
        "tanggal": "2026-10-11",
        "diblokir": false,
        "selalu_online": true,
        "uptime_persen": 100,
        "skor_rata": 88,
        "jumlah_cek": 97
      }
    ],
    "periode_blokir": []
  }
}
GET/domain/{domain}/posisi

Posisi Google

Posisi setiap kata kunci yang kamu lacak, dari pengecekan harian Rondain. Memanggil endpoint ini tidak memicu cek Google baru.

ParameterJenisKeterangan
domaindi alamatNama domain yang ada di akunmu.
curl -s "https://staging.rondain.com/api/v1/domain/tokocontoh.id/posisi" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "domain": "tokocontoh.id",
  "jumlah": 2,
  "catatan": "posisi null = tidak ditemukan di hasil_diperiksa hasil teratas Google (halaman 1, sekitar 10; belum dicek kalau dicek juga null). waktu_hasil = kapan hasil Google itu diambil. pemeriksaan_gagal true = cek terakhir gagal; posisi adalah hasil terakhir yang berhasil (null kalau belum pernah berhasil).",
  "data": [
    {
      "kata_kunci": "sepatu lari murah",
      "posisi": 4,
      "posisi_sebelumnya": 6,
      "posisi_terbaik": 3,
      "url": "https://tokocontoh.id/sepatu-lari",
      "dicek": "2026-10-11T01:12:40.000Z",
      "hasil_diperiksa": 10,
      "waktu_hasil": "2026-10-11T01:12:40.000Z",
      "pemeriksaan_gagal": false
    },
    {
      "kata_kunci": "sepatu lari original",
      "posisi": null,
      "posisi_sebelumnya": 9,
      "posisi_terbaik": 7,
      "url": null,
      "dicek": "2026-10-11T01:12:41.000Z",
      "hasil_diperiksa": 9,
      "waktu_hasil": "2026-10-11T01:12:41.000Z",
      "pemeriksaan_gagal": false
    }
  ]
}
GET/insiden

Kejadian penting

Kejadian yang tercatat ronda, terbaru dulu: kena blokir dan dibuka lagi, situs mati dan hidup lagi, SSL bermasalah, domain atau SSL hampir habis, dan halaman judi yang disusupkan.

ParameterJenisKeterangan
domainopsionalHanya kejadian untuk domain ini.
batasangka, opsionalJumlah per halaman, 1 sampai 100. Bawaan 50.
sebelumangka, opsionalUntuk halaman berikutnya: isi dengan nilai "berikutnya" dari jawaban sebelumnya.
curl -s "https://staging.rondain.com/api/v1/insiden?batas=20" \
  -H "Authorization: Bearer $RONDAIN_KEY"
Contoh jawaban 200 OK
{
  "ok": true,
  "berikutnya": null,
  "data": [
    {
      "id": 90412,
      "jenis": "up",
      "tingkat": "baik",
      "judul": "tokocontoh.id sudah bisa dibuka lagi",
      "domain": "tokocontoh.id",
      "waktu": "2026-10-10T14:22:05.000Z"
    },
    {
      "id": 90398,
      "jenis": "down",
      "tingkat": "bahaya",
      "judul": "tokocontoh.id tidak bisa dibuka",
      "domain": "tokocontoh.id",
      "waktu": "2026-10-10T14:12:03.000Z"
    }
  ]
}

Arti nilai

KolomNilaiArtinya
statusamanTidak diblokir dan bisa dibuka pada ronda terakhir.
diblokirAda di daftar blokir Komdigi (TrustPositif).
diblokir_indihomeBelum di daftar Komdigi, tapi DNS IndiHome sudah mengarahkannya ke halaman blokir.
downSitus tidak bisa dibuka (dicek dua kali sebelum dinyatakan mati).
belum_dicekDomain baru ditambahkan dan ronda pertama belum selesai.
komdigi.statusamanTidak ada di daftar TrustPositif.
diblokirAda di daftar TrustPositif.
belumBelum pernah dicek.
indihome.statusnormalDNS IndiHome menjawab biasa.
diblokirDNS IndiHome mengarahkan ke halaman blokir.
tidak_diketahuiDNS IndiHome tidak menjawab saat dicek. Dicek lagi di ronda berikutnya.
judi.statusbersihTidak ditemukan halaman judi yang disusupkan.
terdeteksiAda halaman judi di situsmu yang terindeks Google atau terbaca di halaman.
skor.*0 sampai 100Makin tinggi makin baik. kesehatan gabungan dari blokir, SSL, domain, uptime, kecepatan, dan SEO.
dijedatrueDomain melebihi batas paket dan tidak sedang dironda.

Jenis kejadian di /insiden:

blokirkena blokir Komdigi buka_blokirblokir Komdigi dicabut isp_blokirdiblokir di IndiHome isp_bukaIndiHome normal lagi downsitus mati upsitus hidup lagi sslSSL bermasalah ssl_habisSSL hampir habis domain_habisdomain hampir habis judihalaman judi ditemukan judi_bersihhalaman judi sudah hilang

Kode error

HTTPerror.kodeArtinya dan yang perlu dilakukan
400kunci_di_urlKunci dikirim di alamat URL. Pindahkan ke header Authorization.
400parameter_salahIsi parameter tidak sah (misalnya hari bukan angka).
401tanpa_kunciHeader Authorization tidak ada atau formatnya salah.
401kunci_salahKunci tidak dikenal atau sudah dicabut.
403paket_tanpa_apiPaket akun ini tidak termasuk API. Naik paket ke Pro atau Agency.
403akun_nonaktifAkun pemilik kunci sedang nonaktif. Hubungi Rondain.
404domain_tidak_adaDomain tidak ada di akunmu.
404tidak_adaAlamat endpoint salah.
405metode_salahHanya GET yang diterima.
429batas_per_menitTerlalu cepat. Tunggu sesuai Retry-After.
429jatah_harian_habisJatah hari ini habis. Mulai lagi pukul 00.00 WIB.
429terlalu_banyak_gagalTerlalu banyak kunci salah dari alamat IP-mu. Tunggu 10 menit.
500gangguanGangguan di sisi Rondain. Coba lagi; sertakan kode di pesan kalau melapor.
503sedang_sibukAPI sedang sibuk. Coba lagi nanti.
503perawatanRondain sedang perawatan atau diperbarui. Coba lagi sesuai Retry-After.

Keamanan

Panggil dari server

API sengaja tidak bisa dipanggil langsung dari browser orang lain. Simpan kunci di server dan tampilkan hasilnya lewat aplikasimu sendiri.

Satu kunci per sistem

Beri nama yang jelas. Kalau satu sistem bocor, cukup cabut kunci itu saja tanpa mengganggu yang lain.

Periksa log

Di Akun › API JSON ada 50 panggilan terakhir lengkap dengan alamat IP. Ada IP asing? Cabut kuncinya.

Bukan alat cek massal

API hanya untuk domain yang sudah ada di akunmu. Untuk mengecek domain lain, tambahkan dulu di dasbor sesuai batas paket.

Versi

v1
11 Oktober 2026

Rilis pertama: akun, daftar domain, detail domain, riwayat harian, posisi Google, dan kejadian penting.

Kolom baru bisa ditambahkan di v1 tanpa pemberitahuan, jadi abaikan kolom yang tidak kamu kenal. Perubahan yang bisa merusak aplikasimu hanya akan masuk di versi baru (v2), dan v1 tetap jalan.

Siap mencoba?

Buat kunci di dasbor dan panggil /akun untuk memastikan semuanya tersambung.

Buat kunci API