Mulai cepat
Dua endpoint gratis dan tidak butuh key sama sekali β coba sekarang juga, lalu buat akun untuk endpoint lainnya.
Panggil endpoint gratis
Hari libur dan jadwal sholat jalan tanpa key apa pun.
Dapatkan API key
Buat akun gratis β key pertama langsung terbit. 5.000 hits gratis/bulan per akun.
Kirim sebagai Bearer token
Authorization: Bearer <key> di setiap panggilan terproteksi.
# Hari libur nasional 2026 (17 libur + 8 cuti bersama) curl "https://v1.api.my.id/holidays?year=2026" # Jadwal sholat Jakarta hari ini curl "https://v1.api.my.id/sholat?city=jakarta"
# 1. Buat akun. Key pertama Anda langsung terbit. curl -X POST "https://v1.api.my.id/auth/register" \ -H "Content-Type: application/json" \ -d '{"name": "Nama Anda", "email": "anda@perusahaan.com", "password": "min-8-karakter"}' # β {"data": {"api_key": "myid_live_β¦", "session_token": "β¦", "monthly_quota": 5000}} # Simpan api_key ini β hanya ditampilkan sekali. # 2. Butuh key tambahan nanti? Pakai sesi login, bukan API key. curl -X POST "https://v1.api.my.id/keys/register" \ -H "Authorization: Session $SESSION_TOKEN" \ -H "Content-Type: application/json" \ -d '{"label": "produksi"}'
Autentikasi
Kirim key Anda di setiap endpoint terproteksi. Dua bentuk header diterima β pakai yang paling mudah di HTTP client Anda.
Authorization: Bearer myid_live_a1b2c3d4β¦
# atau
X-API-Key: myid_live_a1b2c3d4β¦
Error, limit & poin
Semua respons memakai amplop yang sama. Error selalu membawa pesan yang bisa langsung Anda log atau tampilkan.
// sukses { "status": "success", "code": 200, "data": β¦ } // error { "status": "error", "code": 401, "message": "A valid API key is requiredβ¦" }
| Code | Arti | Yang harus dilakukan |
|---|---|---|
| 200 | Sukses | Baca field data. |
| 201 | Key dibuat | Simpan api_key β hanya sekali. |
| 400 | Request salah | Parameter wajib hilang atau formatnya salah. |
| 401 | Key tidak valid | Periksa header Authorization. |
| 402 | Poin kurang | Top up: POST /billing/topup. Error menyebutkan needed vs balance. |
| 404 | Tidak ditemukan | Endpoint, kota, atau resource tidak dikenal. |
| 422 | Tidak bisa diproses | mis. koordinat di luar Indonesia, IP privat. |
| 429 | Kuota habis | 5.000 hits gratis/bulan terpakai. Berlangganan untuk lebih. |
| 501 | Belum aktif | Produk butuh provider eksternal β lihat pesannya. |
| 502 | Upstream gagal | Coba lagi. Poin dikembalikan otomatis pada endpoint AI. |
Rate limit
Setiap key mendapat 5.000 hits gratis per bulan untuk endpoint bermeter. Setiap respons membawa pemakaian Anda agar bisa mundur sebelum kena limit:
X-RateLimit-Limit: 5000 X-RateLimit-Used: 128
Cara kerja poin
Endpoint AI dibayar per pemakaian dengan poin. 1 IDR = 1 poin. Poin hanya dipotong saat hit berhasil, dan otomatis dikembalikan bila upstream gagal.
| Endpoint | Biaya |
|---|---|
| POST /ocr/ktp | 150 poin |
| POST /ocr/sim | 300 poin |
| POST /cv/extract | 300 poin |
| POST /image/remove-bg | 300 poin |
| POST /articles/generate | 1.300 poin |
Referensi endpoint
Hari Libur Nasional
GratisKalender libur nasional dan cuti bersama Indonesia sesuai SKB 3 Menteri. Gratis, tanpa API key.
Semua libur untuk satu tahun (2025 & 2026).
| year | int | opsional | Tahun. Default: tahun berjalan. |
curl "https://v1.api.my.id/holidays?year=2026"
{
"status": "success",
"code": 200,
"year": 2026,
"count": 25,
"data": [
{
"date": "2026-08-17",
"day": "Senin",
"name": "Hari Kemerdekaan Republik Indonesia",
"type": "national",
"is_national": true,
"is_cuti_bersama": false
}
]
}
Libur terdekat dari hari ini.
| limit | int | opsional | 1β20. Default 5. |
curl "https://v1.api.my.id/holidays/upcoming?limit=3"
Cek apakah sebuah tanggal adalah hari libur.
| date | string | wajib | Format YYYY-MM-DD. |
curl "https://v1.api.my.id/holidays/check?date=2026-08-17"
{
"status": "success",
"code": 200,
"data": {
"date": "2026-08-17",
"is_holiday": true,
"holidays": [ { "name": "Hari Kemerdekaan Republik Indonesia", "type": "national", β¦ } ]
}
}
Jadwal Sholat
GratisWaktu sholat harian dihitung dengan algoritma posisi matahari standar (sudut Kemenag: Subuh β20Β°, Isya β18Β°, ihtiyat +2 menit). Gratis, tanpa API key.
Jadwal sholat untuk satu kota dan tanggal.
| city | string | wajib | Slug kota, mis. jakarta. Lihat /sholat/cities. |
| date | string | opsional | YYYY-MM-DD. Default hari ini. |
curl "https://v1.api.my.id/sholat?city=jakarta&date=2026-07-09"
{
"status": "success",
"code": 200,
"data": {
"city": { "slug": "jakarta", "name": "Jakarta", "lat": -6.2088, "lng": 106.8456 },
"date": "2026-07-09",
"timezone": "WIB",
"gmt_offset": "+7",
"jadwal": {
"imsak": "04:31", "subuh": "04:41", "terbit": "06:04", "dhuha": "06:28",
"dzuhur": "12:00", "ashar": "15:20", "maghrib": "17:53", "isya": "19:06"
}
}
}
54 kota yang didukung (WIB/WITA/WIT).
curl "https://v1.api.my.id/sholat/cities"
Akun & API Keys
GratisBuat akun, lalu terbitkan API key. Setiap key terikat ke sebuah akun β tidak ada key anonim. Sesi disimpan di cookie myid_session pada domain .api.my.id, jadi satu login berlaku untuk seluruh situs. Key hanya ditampilkan sekali β simpan baik-baik.
Buat akun baru. Langsung dapat satu API key + sesi login.
{ "name": "Nama Anda", "email": "anda@perusahaan.com", "password": "min-8-karakter" }
curl -X POST "https://v1.api.my.id/auth/register" \
-H "Content-Type: application/json" \
-d '{ "name": "Nama Anda", "email": "anda@perusahaan.com", "password": "min-8-karakter" }'
{
"status": "success",
"code": 201,
"message": "Account created. Store this API key safely β it is shown only once.",
"data": {
"user": { "id": 1, "name": "Nama Anda", "email": "anda@perusahaan.com" },
"api_key": "myid_live_a1b2c3d4e5f6β¦",
"key_hint": "myid_live_a1b2β¦",
"monthly_quota": 5000,
"session_token": "β¦",
"expires_at": "2026-08-11T00:00:00Z"
}
}
Masuk. Menyetel cookie sesi (dan mengembalikan session_token untuk klien non-browser).
{ "email": "anda@perusahaan.com", "password": "β¦" }
curl -X POST "https://v1.api.my.id/auth/login" \
-H "Content-Type: application/json" \
-d '{ "email": "anda@perusahaan.com", "password": "β¦" }'
{
"status": "success",
"code": 200,
"message": "Signed in.",
"data": { "user": { "id": 1, "email": "anda@perusahaan.com" }, "expires_at": "β¦" }
}
Akun yang sedang masuk, beserta daftar key dan saldo poin.
curl "https://v1.api.my.id/auth/me" \ -H "Authorization: Session $SESSION_TOKEN"
{
"status": "success",
"code": 200,
"data": {
"user": { "id": 1, "name": "Nama Anda", "email": "anda@perusahaan.com" },
"keys": [{ "id": 7, "key_hint": "myid_live_a1b2β¦", "points": 0 }],
"points": 0,
"monthly_quota": 5000
}
}
Keluar dan hapus sesi.
curl -X POST "https://v1.api.my.id/auth/logout" \ -H "Authorization: Session $SESSION_TOKEN"
Terbitkan API key baru untuk akun yang sedang masuk. Butuh sesi login β maks. 10 key aktif.
{ "label": "Playground" }
curl -X POST "https://v1.api.my.id/keys/register" \
-H "Authorization: Session $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "label": "Playground" }'
{
"status": "success",
"code": 201,
"message": "Store this key safely β it is shown only once.",
"data": {
"api_key": "myid_live_a1b2c3d4e5f6β¦",
"key_hint": "myid_live_a1b2β¦",
"label": "Playground",
"monthly_quota": 5000
}
}
Ganti password. Semua sesi lain otomatis dikeluarkan.
{ "current_password": "β¦", "new_password": "min-8-karakter" }
curl -X POST "https://v1.api.my.id/auth/password" \
-H "Authorization: Session $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "current_password": "β¦", "new_password": "min-8-karakter" }'
{ "status": "success", "code": 200, "message": "Password changed. Every other session has been signed out." }
Ubah nama tampilan. Email tidak bisa diubah β ia mengidentifikasi akun.
{ "name": "Nama Baru" }
curl -X POST "https://v1.api.my.id/auth/profile" \
-H "Authorization: Session $SESSION_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "name": "Nama Baru" }'
Keluar dari semua perangkat lain. Sesi di perangkat ini tetap aktif.
curl -X POST "https://v1.api.my.id/auth/logout-all" \ -H "Authorization: Session $SESSION_TOKEN"
Cabut salah satu key milik akun Anda.
| id | int | wajib | ID key (dari /auth/me). |
curl -X DELETE "https://v1.api.my.id/keys/7" \ -H "Authorization: Session $SESSION_TOKEN"
Info key: pemakaian bulan ini, saldo poin, langganan aktif.
curl "https://v1.api.my.id/keys/me" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success",
"code": 200,
"data": {
"key_hint": "myid_live_a1b2β¦",
"month": "2026-07",
"quota": 5000,
"used_this_month": 128,
"remaining": 4872,
"points": 50000,
"active_subscriptions": [
{ "product_id": "wilayah-indonesia", "tier": "Pro", "monthly_quota": 25000, "expires_at": "2026-08-09Tβ¦" }
],
"by_endpoint": [ { "endpoint": "wilayah/provinces", "hits": 40 } ]
}
}
Wilayah Indonesia
LanggananData administratif Indonesia lengkap: 34 provinsi, 514 kab/kota, 7.215 kecamatan, 80.534 kelurahan/desa (kode Kemendagri). Semua endpoint mendukung paginasi.
Semua provinsi.
| page | int | opsional | Default 1. |
| per_page | int | opsional | 1β500. Default 100. |
curl "https://v1.api.my.id/wilayah/provinces" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success",
"code": 200,
"page": 1, "per_page": 100, "total": 34, "total_pages": 1, "count": 34,
"data": [ { "code": "32", "name": "JAWA BARAT" } ]
}
Kabupaten/kota dalam satu provinsi.
| province | string | wajib | Kode provinsi, mis. 32. |
curl "https://v1.api.my.id/wilayah/regencies?province=32" \ -H "Authorization: Bearer $API_KEY"
Kecamatan dalam satu kabupaten/kota.
| regency | string | wajib | Kode kab/kota, mis. 3204. |
curl "https://v1.api.my.id/wilayah/districts?regency=3204" \ -H "Authorization: Bearer $API_KEY"
Kelurahan/desa dalam satu kecamatan.
| district | string | wajib | Kode kecamatan, mis. 3204010. |
curl "https://v1.api.my.id/wilayah/villages?district=3204010" \ -H "Authorization: Bearer $API_KEY"
Cari nama wilayah lintas semua tingkat sekaligus.
| q | string | wajib | Minimal 3 karakter. |
| limit | int | opsional | 1β100. Default 25. |
curl "https://v1.api.my.id/wilayah/search?q=menteng" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200, "query": "menteng", "count": 3,
"data": [
{ "code": "3173020", "name": "MENTENG", "level": "district", "parent_code": "3173" },
{ "code": "3171090001", "name": "MENTENG DALAM", "level": "village", "parent_code": "3171090" }
]
}
Data Fasilitas
LanggananSekolah (215.333, Dapodik), perguruan tinggi (4.759, PDDikti), dan rumah sakit (3.116, SIRS Kemenkes). Semua mendukung paginasi & filter.
Cari sekolah se-Indonesia, lengkap dengan koordinat GPS.
| q | string | opsional | Cari nama sekolah. |
| npsn | string | opsional | Cari berdasarkan NPSN. |
| bentuk | string | opsional | SD, SMP, SMA, SMK, SLB⦠|
| status | string | opsional | N (negeri) atau S (swasta). |
| province | string | opsional | Kode provinsi Dapodik. |
| regency | string | opsional | Kode kab/kota Dapodik. |
curl "https://v1.api.my.id/schools?q=SMA Negeri 1&bentuk=SMA&status=N" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200, "total": 749, "count": 1,
"source": "Dapodik/Kemdikbud",
"data": [
{
"npsn": "20106343", "name": "SMA NEGERI 1 CIAWIGEBANG", "bentuk": "SMA", "status": "N",
"province": "Jawa Barat", "regency": "Kab. Kuningan", "district": "Ciawigebang",
"address": "Jl. Siliwangi No. 1", "lat": -6.974, "lng": 108.5894
}
]
}
Perguruan tinggi (universitas, institut, politeknik, sekolah tinggi, akademi).
| q | string | opsional | Cari nama kampus. |
| type | string | opsional | Universitas / Institut / Politeknik / Sekolah Tinggi / Akademi. |
| lldikti | int | opsional | Wilayah LLDikti 1β16. |
curl "https://v1.api.my.id/universities?q=institut teknologi" \ -H "Authorization: Bearer $API_KEY"
Rumah sakit se-Indonesia dengan nama wilayah.
| q | string | opsional | Cari nama RS. |
| type | string | opsional | RSUD, RS Umum, RS Jiwa, RS Ibu dan Anak⦠|
| province | string | opsional | Kode provinsi Kemendagri, mis. 32. |
| regency | string | opsional | Kode kab/kota. |
curl "https://v1.api.my.id/hospitals?type=RS Jiwa&province=32" \ -H "Authorization: Bearer $API_KEY"
Kurs, Geo & IP
LanggananKurs mata uang real-time, reverse geocoding, dan IP geolocation.
Kurs 160+ mata uang, dengan konversi opsional.
| base | string | opsional | Kode 3 huruf. Default USD. |
| to | string | opsional | Filter mata uang, pisahkan koma. |
| amount | number | opsional | Konversi jumlah (butuh satu ?to). |
curl "https://v1.api.my.id/rates?base=USD&to=IDR&amount=100" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200, "count": 1,
"data": {
"base": "USD",
"updated_at": "Thu, 09 Jul 2026 00:02:32 +0000",
"rates": { "IDR": 18058.21 },
"converted": 1805821.08
}
}
Koordinat β kota terdekat (akurasi tingkat kota).
| lat | number | wajib | Latitude (wilayah Indonesia). |
| lng | number | wajib | Longitude. |
curl "https://v1.api.my.id/geocode/reverse?lat=-6.95&lng=107.60" \ -H "Authorization: Bearer $API_KEY"
Lokasi dari alamat IP. Gunakan /ip/me untuk IP pemanggil.
curl "https://v1.api.my.id/ip/8.8.8.8" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200,
"data": {
"ip": "8.8.8.8", "country": "United States", "city": "Mountain View",
"lat": 37.386, "lng": -122.084, "timezone": "America/Los_Angeles",
"asn": 15169, "isp": "Google LLC"
}
}
Cek Ongkos Kirim
LanggananTarif kurir untuk rute mana pun di Indonesia. Anda memakai kode wilayah yang sama dengan API Wilayah β tidak perlu belajar ID internal provider. Berat dibulatkan ke atas per kilogram, persis seperti cara kurir menagih.
Tarif semua layanan kurir untuk satu rute.
| origin | string | wajib | Kode kecamatan asal (7 digit) β dari GET /wilayah/districts. |
| destination | string | wajib | Kode kecamatan tujuan. |
| weight | int | wajib | Berat dalam gram. Dibulatkan ke atas per kg. |
| courier | string | opsional | Kode kurir, boleh dipisah koma. Default: jne,jnt,sicepat. |
{ "origin": "3173020", "destination": "5103020", "weight": 1240, "courier": "jne,jnt" }
curl -X POST "https://v1.api.my.id/shipping/cost" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ "origin": "3173020", "destination": "5103020", "weight": 1240, "courier": "jne,jnt" }'
{
"status": "success",
"code": 200,
"origin": { "code": "3173020", "name": "Menteng" },
"destination": { "code": "5103020", "name": "Kuta" },
"weight_grams": 1240,
"billed_weight": { "kg": 2, "note": "couriers bill per started kilogram, so the weight is rounded up" },
"data": [
{ "courier": "jne", "service": "REG", "description": "Reguler", "cost": 19000, "etd": "2 day" },
{ "courier": "jne", "service": "YES", "description": "Express", "cost": 38000, "etd": "1 day" }
]
}
Daftar kode kurir yang didukung.
curl "https://v1.api.my.id/shipping/couriers" \ -H "Authorization: Bearer $API_KEY"
{ "status": "success", "code": 200, "count": 9, "data": ["jne","pos","tiki","sicepat","jnt","ninja","anteraja","wahana","lion"] }
AI: OCR, CV & Artikel
Pay Per UseEndpoint bertenaga AI. Dibayar dengan poin per hit sukses β poin hanya terpotong bila berhasil, dan dikembalikan otomatis jika upstream gagal.
Ekstrak data KTP menjadi JSON terstruktur.
// multipart: field "image" β atau JSON:
{ "image": "<base64>", "media_type": "image/jpeg" }
curl -X POST "https://v1.api.my.id/ocr/ktp" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200,
"model": "claude-opus-4-8", "document": "ktp", "points_charged": 150,
"data": {
"nik": "3204xxxxxxxxxxxx", "nama": "BUDI SANTOSO",
"tempat_lahir": "BANDUNG", "tanggal_lahir": "17-08-1990",
"jenis_kelamin": "LAKI-LAKI", "alamat": "JL. MERDEKA NO. 1",
"kecamatan": "COBLONG", "agama": "ISLAM",
"confidence": "high"
}
}
Ekstrak data SIM (format baru & 6 baris).
// multipart: field "image" β atau JSON base64
curl -X POST "https://v1.api.my.id/ocr/sim" \ -H "Authorization: Bearer $API_KEY"
Parse CV (PDF/gambar/teks) menjadi JSON terstruktur.
// multipart: field "file" (PDF atau gambar)
// atau JSON: { "text": "<isi CV>" }
curl -X POST "https://v1.api.my.id/cv/extract" \ -H "Authorization: Bearer $API_KEY"
{
"status": "success", "code": 200, "points_charged": 300,
"data": {
"name": "Siti Rahma", "email": "siti@example.com", "phone": "+62812β¦",
"skills": ["Go", "PostgreSQL", "Docker"],
"experience": [ { "company": "PT Maju", "title": "Backend Engineer", "start": "2022", "end": "2026", "description": "β¦" } ],
"education": [ { "institution": "Institut Teknologi Bandung", "degree": "S1 Informatika", "year": "2021" } ],
"certifications": [], "languages": ["Indonesia", "English"]
}
}
Generate artikel SEO-friendly dalam Markdown.
{
"topic": "Cara integrasi API cek ongkir",
"language": "id", // id | en
"tone": "informatif", // opsional
"keywords": ["ongkir", "api"],// opsional, maks 10
"words": 800 // opsional, 300β2000
}
curl -X POST "https://v1.api.my.id/articles/generate" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ "topic": "Cara integrasi API cek ongkir", "language": "id", , , "api"],, maks 10 "words": 800 , 300β2000 }'
{
"status": "success", "code": 200, "points_charged": 1300,
"data": {
"article_markdown": "# Cara Integrasi API Cek Ongkir\n\n## Pendahuluan\nβ¦",
"meta_description": "Panduan lengkap integrasi API cek ongkirβ¦",
"word_count": 812
}
}
Hapus background gambar β PNG transparan.
| model | string | opsional | u2net (default), u2netp, silueta, isnet-general-use. |
| format | string | opsional | binary β PNG langsung. Default JSON base64. |
// multipart: field "image" (maks 10 MB)
curl -X POST "https://v1.api.my.id/image/remove-bg?model=u2net&format=binary" \ -H "Authorization: Bearer $API_KEY"
Pembayaran & Poin
LanggananTop up poin dan beli langganan lewat Midtrans. 1 IDR = 1 poin. Poin dipakai untuk endpoint AI di atas.
Status gateway pembayaran (dipakai frontend).
curl "https://v1.api.my.id/billing/config"
Buat transaksi top-up poin. Kembalikan snap_token untuk popup pembayaran.
{ "amount": 100000 } // IDR, 10.000 β 10.000.000
curl -X POST "https://v1.api.my.id/billing/topup" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ "amount": 100000 } , 10.000 β 10.000.000'
{
"status": "success", "code": 200,
"data": {
"order_id": "TOPUP-12-1752β¦",
"snap_token": "66e4fa55-fdac-4ef9-91b5-β¦",
"redirect_url": "https://app.sandbox.midtrans.com/snap/v2/vtweb/β¦",
"amount": 100000, "points": 100000
}
}
Beli langganan produk (30 hari).
{ "product_id": "wilayah-indonesia", "tier": "Pro" }
curl -X POST "https://v1.api.my.id/billing/subscribe" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{ "product_id": "wilayah-indonesia", "tier": "Pro" }'
Riwayat order Anda.
curl "https://v1.api.my.id/billing/orders" \ -H "Authorization: Bearer $API_KEY"