Developer API · Rate API v1

AgenWebsite Rate API adalah REST API cek ongkir untuk lima kurir Indonesia — J&T Express, Lion Parcel, SAP Express, SPX Express, dan J&T Cargo — yang mengembalikan tarif reguler, estimasi tiba (ETD), diskon, dan cashback nyata dalam satu request JSON. Cukup kirim POST ke https://api.agenwebsite.com/v1/rates dengan header x-api-key, asal & tujuan (kode pos atau kecamatan), dan berat paket dalam gram. API key gratis tersedia untuk setiap pengguna WooCommerce dengan kuota 150 request/hari, tanpa checkout.

Cakupan v1: pengiriman reguler & non-COD. Berat dikirim dalam gram, dan kurir yang didukung adalah jnt, lion, sap, spx, dan jtc.

Apa itu API cek ongkir?

API cek ongkir adalah antarmuka HTTP yang mengembalikan biaya dan estimasi pengiriman antar dua lokasi di Indonesia secara real-time. Alih-alih membuka situs tiap kurir satu per satu, aplikasi Anda mengirim satu request berisi asal, tujuan, dan berat paket, lalu menerima daftar tarif dari beberapa kurir sekaligus dalam format JSON yang siap ditampilkan di halaman checkout, keranjang, atau kalkulator ongkir.

AgenWebsite Rate API menormalkan data dari agregator logistik menjadi satu skema respons yang konsisten (branded response), lengkap dengan logo kurir, kode layanan, estimasi hari, asuransi, serta diskon dan cashback yang benar-benar berlaku — bukan angka simulasi. Baca ikhtisar produk di /products/developer-api/ dan referensi teknis di /documentation/.

Kurir yang didukung (v1)

Versi 1 mendukung lima kurir berikut. Gunakan courier_code pada field couriers di request Anda.

courier_code Nama kurir Tipe umum
jnt J&T Express Reguler
lion Lion Parcel Reguler / ekonomi
sap SAP Express Reguler
spx SPX Express Reguler
jtc J&T Cargo Kargo / berat

Jika Anda mengirim kode kurir di luar lima ini, API mengembalikan 422 unsupported_courier. Untuk daftar layanan terkini secara programatis, panggil GET /v1/couriers.

Quickstart: cek ongkir dalam 3 langkah

Langkah 1 — Dapatkan API key gratis

Masuk ke akun WooCommerce Anda, buka tab API di halaman My Account, verifikasi email satu kali, lalu klik Generate Key. Anda akan menerima kunci berformat awk_live_<32 hex> yang hanya ditampilkan sekali — simpan di tempat aman. Untuk pengujian gunakan kunci awk_test_... pada base URL sandbox https://api-sandbox.agenwebsite.com/v1.

Langkah 2 — Kirim request pertama Anda

Contoh paling sederhana: cek ongkir dari kode pos Bandung (40135) ke Jakarta Pusat (10110) untuk paket 1 kg (1000 gram).

cURL · POST /rates
curl -X POST https://api.agenwebsite.com/v1/rates \
  -H "x-api-key: awk_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "shipper":     { "postal_code": "40135" },
    "destination": { "postal_code": "10110" },
    "weight": 1000
  }'

Langkah 3 — Cek ongkir dengan kurir & opsi spesifik

Batasi ke kurir tertentu, sertakan dimensi & nilai barang (untuk asuransi), dan urutkan termurah:

cURL · POST /rates
curl -X POST https://api.agenwebsite.com/v1/rates \
  -H "x-api-key: awk_live_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "shipper":     { "postal_code": "40135", "subdistrict_name": "Dago" },
    "destination": { "postal_code": "10110", "subdistrict_name": "Gambir" },
    "weight": 1200,
    "dimensions": { "length": 20, "width": 15, "height": 10 },
    "item_value": 250000,
    "couriers": ["jnt","lion","spx"],
    "sort": "cheapest"
  }'

Struktur request & parameter

Endpoint: POST /v1/rates. Setiap pihak (shipper dan destination) wajib diidentifikasi dengan salah satu: postal_code (kode pos) atau subdistrict_id (ID kecamatan dari /v1/locations/search) — tidak boleh keduanya kosong, dan tidak boleh keduanya diisi bersamaan.

Parameter Tipe Wajib Keterangan
shipper object Ya postal_code ATAU subdistrict_id; opsional subdistrict_name
destination object Ya Sama seperti shipper
weight number (gram) Ya Berat dalam gram; dinormalkan ke minimal 1 dan dibulatkan ke atas
dimensions object Tidak length, width, height dalam cm (untuk berat volumetrik)
item_value number (IDR) Tidak Nilai barang; dasar perhitungan asuransi
couriers string[] Tidak Subset dari jnt,lion,sap,spx,jtc; default semua
sort string Tidak cheapest atau fastest

Struktur response JSON

Response mengembalikan array rates yang sudah dinormalkan, ditambah pintasan cheapest/fastest, summary, dan rate_limit. Tarif tidak berupa data mentah kurir — sudah dibranding dan konsisten antar kurir.

JSON · Response 200
{
  "success": true,
  "currency": "IDR",
  "data": {
    "rates": [{
      "courier_code": "jnt",
      "courier_name": "J&T Express",
      "courier_logo_url": "https://...",
      "service_code": "jnt_ez",
      "service_name": "EZ Reguler",
      "service_type": "regular",
      "cost": 14000,
      "cost_formatted": "Rp 14.000",
      "etd_min_days": 2,
      "etd_max_days": 3,
      "etd_text": "2-3 hari",
      "estimated_delivery": { "from": "2026-07-03", "to": "2026-07-04" },
      "insurance": { "available": true, "fee": 0 },
      "discount": 1000,
      "discounted_cost": 13000,
      "cashback": 500,
      "cheapest": true,
      "fastest": false,
      "source": "live"
    }],
    "cheapest": { "service_code": "jnt_ez", "cost": 14000 },
    "fastest":  { "service_code": "lion_reg", "etd_max_days": 2 },
    "summary":  { "count": 2, "cost_range": { "min": 14000, "max": 16000 } }
  },
  "rate_limit": { "limit": 30000, "remaining": 29998, "reset_at": "2026-07-02T00:00:00+07:00" }
}

Field yang membedakan: discount, discounted_cost, dan cashback berisi nilai nyata yang berlaku — dapat langsung Anda tampilkan sebagai harga coret di checkout. Field source bernilai live atau cache sehingga Anda tahu apakah tarif berasal dari panggilan langsung atau cache 30 menit.

Penanganan error & kode status

API tidak pernah mengembalikan 200 kosong secara diam-diam. Setiap kegagalan memakai amplop error yang konsisten:

JSON · Error
{
  "success": false,
  "error": {
    "code": "validation_error",
    "message": "Field 'weight' wajib diisi.",
    "field": "weight",
    "request_id": "req_..."
  }
}
HTTP code Kapan terjadi
400 validation_error weight hilang; kedua id pihak kosong atau bentrok
401 unauthorized API key hilang, salah, atau sudah dicabut
404 shipper_not_found / destination_not_found Lokasi tidak ditemukan
422 unsupported_courier Kurir di luar lima yang didukung
429 rate_limit_exceeded Kuota harian habis atau burst per menit terlampaui
502 courier_upstream_error Semua kurir gagal di sisi upstream

Setiap response menyertakan header X-RateLimit-Limit, X-RateLimit-Remaining, dan X-RateLimit-Reset. Response 429 menambahkan Retry-After.

Kuota & rate limit

Kuota dihitung per request (bukan per baris kurir) dan berlaku per pengguna — dibagi bersama untuk semua key milik akun tersebut. Kuota direset harian pukul 00:00 WIB (Asia/Jakarta).

Tier Kuota/hari Burst/menit Maks key aktif Harga
Free 150 20 2 Rp 0
Pro 30.000 300 5 Rp 129.000/bln
Max 60.000 600 20 Rp 229.000/bln

Pantau sisa kuota kapan saja lewat GET /v1/usage:

cURL · GET /usage
curl https://api.agenwebsite.com/v1/usage \
  -H "x-api-key: awk_live_xxxxxxxx"

FAQ

Apakah API cek ongkir AgenWebsite gratis?

Ya. Setiap pengguna WooCommerce otomatis mendapat tier Free dengan 150 request/hari tanpa perlu checkout. Anda cukup verifikasi email satu kali lalu generate API key.

Kurir apa saja yang didukung?

Versi 1 mendukung J&T Express (jnt), Lion Parcel (lion), SAP Express (sap), SPX Express (spx), dan J&T Cargo (jtc) untuk pengiriman reguler.

Apakah harus pakai kode pos atau boleh kecamatan?

Boleh keduanya. Kirim postal_code untuk hasil paling akurat, atau subdistrict_id dari endpoint /v1/locations/search. Yang penting, tiap pihak diidentifikasi dengan salah satu — tidak boleh kosong dan tidak boleh keduanya sekaligus.

Bagaimana cara menangani rate limit?

Cek header X-RateLimit-Remaining pada setiap response. Jika menerima 429, hormati header Retry-After sebelum mencoba lagi, dan pertimbangkan caching di sisi Anda untuk pasangan asal-tujuan yang sama.

Apakah diskon dan cashback yang ditampilkan nyata?

Ya. Field discount, discounted_cost, dan cashback menampilkan nilai yang benar-benar berlaku, bahkan di tier Free — sehingga bisa langsung dipakai di checkout.

Siap mencoba? Dapatkan API key gratis di halaman AgenWebsite Developer API, atau baca referensi endpoint lengkap di dokumentasi.