Lewati ke konten
APIHub.id
Dokumentasi

Referensi API

Base URL https://api-staging.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-staging.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": "free" | "starter" | "pro" | "business" }. Paket berbayar aktif setelah pembayaran terkonfirmasi. Mengembalikan PAYMENT_UNAVAILABLE (503) selama pembayaran online belum aktif.

POST/v1/account/topup

Hanya sesi dashboard. Body { "amount_idr": 50000 }. Mengembalikan PAYMENT_UNAVAILABLE (503) selama pembayaran online belum aktif.

Penagihan & retry

  • Kredit hanya dipotong untuk respons sukses (2xx). Respons 4xx dan 5xx tidak dikenai biaya.
  • Paket berjalan per periode 30 hari. Di akhir periode paket Free diperbarui dan kreditnya direset; sisa kredit langganan tidak diakumulasi. Paket berbayar saat ini kembali ke Free di akhir periode. Kredit prabayar tidak pernah hangus.
  • 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
INSUFFICIENT_CREDITS402
EMAIL_NOT_VERIFIED403
PLAN_LIMIT_REACHED403
NOT_FOUND404
DUPLICATE_REQUEST409
RATE_LIMITED429
DAILY_LIMIT_REACHED429
INTERNAL_ERROR500
PAYMENT_UNAVAILABLE503

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 });