Menu dokumentasi
Lokasi
Wilayah asal dan tujuan.
Cari wilayah
https://api.ongkirhub.com/v1/locations Cari kelurahan, kecamatan, kota, atau kode pos. Pakai hasilnya sebagai location pengirim dan penerima agar cocok dengan data kurir.
Akses (scope): locations:read.
Butuh kunci API (bearerAuth)
Parameter query
| Field | Keterangan |
|---|---|
q string, wajib | Kata kunci, minimal 3 karakter: nama wilayah atau kode pos. |
province string | Batasi ke satu provinsi (nama persis, contoh Jawa Barat). |
limit integer | Jumlah hasil. |
Contoh permintaan
curl -X GET "https://api.ongkirhub.com/v1/locations?q=coblong" \
-H "Authorization: Bearer ohk_test_xxx" Respons
-
Wilayah yang cocok.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
Field respons 200 Field Keterangan dataarray<Location>, wajib-
hasMoreboolean, wajibMasih ada data setelah halaman ini.
nextCursorstring | null, wajibKirim sebagai parameter
cursoruntuk halaman berikutnya. Null di halaman terakhir.{ "data": [ { "province": "Jawa Barat", "city": "Bandung", "district": "Coblong", "subdistrict": "Cipaganti", "zipcode": "40131" }, { "province": "Jawa Barat", "city": "Bandung", "district": "Coblong", "subdistrict": "Dago", "zipcode": "40135" }, { "province": "Jawa Barat", "city": "Bandung", "district": "Coblong", "subdistrict": "Lebak Gede", "zipcode": "40132" } ], "hasMore": false, "nextCursor": null } -
-
Kunci API tidak dikirim, tidak valid, atau sudah dicabut.
-
X-Request-Id - ID permintaan untuk dukungan.
{ "error": { "code": "unauthenticated", "message": "Kunci API tidak valid, sudah dicabut, atau tidak dikirim. Kirim header Authorization: Bearer <kunci API>.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12" } } -
-
Kunci API tidak punya akses (scope) untuk endpoint ini.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
{ "error": { "code": "forbidden", "message": "Kunci API ini tidak punya akses ke endpoint ini. Tambahkan akses yang dibutuhkan di menu Developer.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12", "details": { "requiredScope": "shipments:write" } } } -
-
Isi permintaan belum valid.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
{ "error": { "code": "validation_error", "message": "Ada data yang belum lengkap atau belum sesuai. Periksa lagi isianmu.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12", "details": { "fields": [ { "path": "receiver.location.zipcode", "message": "Kode pos harus 5 digit" } ] } } } -
-
Batas permintaan terlampaui.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
-
Retry-After - Detik sampai boleh mencoba lagi.
{ "error": { "code": "rate_limited", "message": "Terlalu banyak permintaan. Tunggu sebentar, lalu coba lagi.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12", "details": { "retryAfterSec": 21 } } } -
-
Kesalahan di sistem OngkirHub. Aman dicoba ulang dengan Idempotency-Key yang sama.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
{ "error": { "code": "internal_error", "message": "Terjadi kesalahan di sistem kami. Coba lagi sebentar lagi.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12" } } -
-
Layanan pengiriman sedang gangguan atau pembuatan resi sedang dijeda. Coba lagi nanti.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
Layanan pengiriman gangguan
{ "error": { "code": "service_unavailable", "message": "Layanan pengiriman sedang gangguan. Coba lagi beberapa saat lagi.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12" } }Pembuatan resi dijeda
{ "error": { "code": "booking_disabled", "message": "Pembuatan resi sedang dijeda sementara. Cek ongkir dan cek resi tetap bisa dipakai.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12" } } -
-
Layanan pengiriman lambat merespons. Coba lagi.
-
X-Request-Id - ID permintaan untuk dukungan.
-
RateLimit-Limit - Batas permintaan per jendela waktu.
-
RateLimit-Remaining - Sisa permintaan di jendela waktu ini.
-
RateLimit-Reset - Detik sampai jendela waktu berikutnya.
{ "error": { "code": "service_timeout", "message": "Layanan pengiriman sedang lambat. Coba lagi sebentar lagi.", "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12" } } -
Skema objek
Objek yang dipakai di halaman ini, dijelaskan sekali di sini.
Location
Wilayah tujuan atau asal. Ambil dari GET /v1/locations agar cocok dengan data kurir.
| Field | Keterangan |
|---|---|
province string, wajib | Provinsi, ditulis persis seperti hasil GET /v1/locations. |
city string, wajib | Kota atau kabupaten. |
district string, wajib | Kecamatan. |
subdistrict string, wajib | Kelurahan atau desa. |
zipcode string, wajib | Kode pos 5 digit. pola ^\d{5}$ |