Lewati ke konten
APIHub.id
Dokumentasi

Referensi API

Base URL https://api.apihub.co.id/v1. Semua request wajib menyertakan header Authorization: Bearer YOUR_API_KEY.

Mulai

  1. Daftar di dashboard, lalu konfirmasi email verifikasi yang kami kirim.
  2. Buat API key di menu API Keys dan salin segera, key hanya ditampilkan sekali. Key baru hanya bisa dibuat setelah email terverifikasi.
  3. Kirim request dengan header Authorization: Bearer YOUR_API_KEY. Batas request berlaku per akun untuk semua key sekaligus, sesuai paket: Free 2, Starter 10, Pro 30, Business 60 request/detik. Paket Free juga dibatasi 1.000 request/hari untuk endpoint gratis (reset 00:00 WIB). Respons 429 menyertakan header Retry-After.
curl -H "Authorization: Bearer YOUR_API_KEY" \
  "https://api.apihub.co.id/v1/regions/provinces"

Semua endpoint memakai amplop respons yang sama:

{
  "success": true,
  "data": [ ... ],
  "meta": { "request_id": "...", "credits_used": 0 }
}

{
  "success": false,
  "error": { "code": "INVALID_API_KEY", "message": "..." },
  "meta": { "request_id": "..." }
}

Wilayah administratif

Kode wilayah sesuai Kepmendagri No 300.2.2-2138 Tahun 2025. Semua endpoint mendukung page dan limit; info halaman ada di meta.pagination.

GET/v1/regions/provinces?page=&limit=Gratis

Daftar provinsi.

GET/v1/regions/regencies?province_id=11Gratis

Daftar kabupaten/kota dalam satu provinsi.

GET/v1/regions/districts?regency_id=11.01Gratis

Daftar kecamatan dalam satu kabupaten/kota.

GET/v1/regions/villages?district_id=11.01.01Gratis

Daftar desa/kelurahan dalam satu kecamatan.

Hari libur & cuti bersama

GET/v1/holidays?year=2027&month=1Gratis

Hari libur nasional dan cuti bersama. Data tersedia untuk 2025–2027.

Jadwal sholat

Dihitung dengan kriteria Kemenag (Subuh 20°, Isya 18°).

GET/v1/prayer-times?city_id=11.01&date=2026-10-17Gratis

Jadwal sholat harian per kota/kabupaten.

GET/v1/prayer-times/cities?query=bandung&province_id=32Gratis

Cari atau daftar kota untuk jadwal sholat.

Akun

Endpoint baca berikut menerima API key (tanpa biaya kredit), jadi saldo dan pemakaian bisa dicek dari kode Anda. Selebihnya di bawah /account (profil, API key, ganti paket, top-up) hanya tersedia dari dashboard.

GET/v1/account/me

Ringkasan akun dan langganan. Hanya sesi dashboard.

GET/v1/account/credits

Saldo kredit.

GET/v1/account/usage

Ringkasan pemakaian bulanan.

GET/v1/account/plans

Daftar paket langganan.

POST/v1/account/subscribe

Hanya sesi dashboard. Body { "plan": "starter" | "pro" | "business" }. Mengembalikan checkout_url ke halaman pembayaran DOKU (Virtual Account bank, e-wallet, dan metode lain yang didukung DOKU); paket aktif setelah pembayaran terkonfirmasi. Upgrade, perpanjangan, downgrade, atau pemulihan ditentukan otomatis (lihat Penagihan). Pindah ke Free tidak perlu: paket berbayar berakhir sendiri di akhir periode. Selama pembayaran online belum aktif, mengembalikan PAYMENT_UNAVAILABLE (503).

POST/v1/account/topup

Hanya sesi dashboard. Body { "amount_idr": 50000 }. Mengembalikan checkout_url ke halaman pembayaran DOKU; kredit prabayar masuk setelah pembayaran terkonfirmasi. Selama pembayaran online belum aktif, mengembalikan PAYMENT_UNAVAILABLE (503).

Penagihan & retry

  • Kredit hanya dipotong untuk respons sukses (2xx). Respons 4xx dan 5xx tidak dikenai biaya.
  • Paket berjalan per periode 30 hari dan dibayar manual tiap periode, tanpa tagihan otomatis.
  • Perpanjangan paket yang sama bisa dibayar mulai 7 hari sebelum periode berakhir. Sisa kredit langganan ikut terbawa ke periode baru, maksimal 2× kuota, sehingga saldo langganan paling banyak 3× kuota.
  • Upgrade berlaku langsung dengan periode baru; sisa kredit langganan ditambahkan ke kuota paket baru.
  • Downgrade ke paket berbayar yang lebih rendah dibayar di jendela perpanjangan dan berlaku di akhir periode; sisa kredit langganan hangus.
  • Jika tidak diperpanjang, akun kembali ke paket Free dan sisa kredit langganan hangus. Bayar paket yang sama dalam 3 hari setelahnya untuk memulihkan paket beserta kreditnya.
  • Paket Free diperbarui otomatis tiap periode dengan kuota penuh; sisa kreditnya tidak terbawa.
  • Kredit prabayar (top-up mulai Rp 50.000) tidak pernah hangus dan tidak terkena batas rollover.
  • Kredit langganan dipakai sebelum kredit prabayar. Kredit yang di-refund kembali ke sumber asalnya.
  • Kirim header Idempotency-Key: <uuid> untuk retry yang aman. Pengulangan request yang sudah selesai dilayani kembali dengan 0 kredit dan header Idempotent-Replayed: true. Pengulangan saat request pertama masih berjalan mengembalikan DUPLICATE_REQUEST (409). Jika request gagal, key boleh dipakai ulang.

Kode error umum

KodeHTTP
INVALID_PARAMETER400
INVALID_API_KEY401
UNAUTHORIZED401
INSUFFICIENT_CREDITS402
EMAIL_NOT_VERIFIED403
PLAN_LIMIT_REACHED403
NOT_FOUND404
DUPLICATE_REQUEST409
RATE_LIMITED429
DAILY_LIMIT_REACHED429
INTERNAL_ERROR500
UPSTREAM_UNAVAILABLE502
ENDPOINT_UNAVAILABLE503
PAYMENT_UNAVAILABLE503
UPSTREAM_TIMEOUT504

SDK TypeScript

npm install @apihub/sdk

import { ApiHubClient } from "@apihub/sdk";

const client = new ApiHubClient({ apiKey: "YOUR_API_KEY" });
const holidays = await client.listHolidays({ year: 2027 });