API Documentation

Panduan API Shipping No99 (Direct JNE & J&T)

Halaman ini berisi petunjuk penggunaan endpoint API di shipping.teknomadani.biz.id tanpa RajaOngkir. Endpoint fokus ke cek ongkir dan lacak resi.

Base URL

https://shipping.teknomadani.biz.id/

Semua endpoint API dipanggil lewat query string parameter api.

Daftar Endpoint

Endpoint Fungsi Wajib
?api=jne_suggest Pencarian kode asal/tujuan JNE type, search
?api=jne_rate Cek ongkir JNE origin, destination, weight
?api=jnt_search Pencarian sender/receiver area J&T search
?api=jnt_rate Cek ongkir J&T sender, receiver, weight
?api=jnt_track Lacak resi J&T awb, phone_code (4 digit)
?api=jne_track Lacak resi JNE awb, verify_code (5 digit, opsional awal)
?api=provinces Daftar 38 provinsi Indonesia untuk combobox -
?api=cities Daftar kota/kabupaten per provinsi untuk combobox province
?api=resolve Resolve kota/provinsi/kode pos ke kode kurir city, province, courier
?api=resolve_address Deteksi tujuan otomatis dari alamat lengkap (kota + kode pos) address, courier (jne/jnt)

Quick Start

1) Cek Ongkir JNE

curl "https://shipping.teknomadani.biz.id/?api=jne_rate&origin=JAKARTA&destination=BANDUNG&weight=1"

Backend akan resolve kota ke kode JNE otomatis, lalu hitung tarif.

2) Cari Area J&T

curl "https://shipping.teknomadani.biz.id/?api=jnt_search&search=bandung"

Pakai hasil sender/receiver agar request tarif J&T stabil.

3) Cek Ongkir J&T

curl "https://shipping.teknomadani.biz.id/?api=jnt_rate&sender=JAKARTA&receiver=CINAMBO&weight=1"

Jika input berupa label panjang, backend otomatis normalisasi token area.

Detail Parameter

JNE Suggest

  • type: origin atau destination
  • search: min 2 karakter
GET /?api=jne_suggest&type=destination&search=jakarta

JNE Rate

  • origin: kota atau kode JNE (contoh CGK10000)
  • destination: kota atau kode JNE
  • weight: kg, akan dibulatkan ke chargeable weight
GET /?api=jne_rate&origin=CGK10000&destination=BDO10000&weight=1

J&T Search

  • search: kata kunci area
  • Output: sender[] (city) dan receiver[] (district)
GET /?api=jnt_search&search=jakarta

J&T Rate

  • sender: city, contoh JAKARTA
  • receiver: district, contoh CINAMBO
  • weight: 0.1 - 50 kg
GET /?api=jnt_rate&sender=BANDUNG&receiver=CINAMBO&weight=1

J&T Track

  • awb: nomor resi
  • phone_code: kode verifikasi 4 digit sesuai alur resmi J&T
GET /?api=jnt_track&awb=JT1234567890123&phone_code=1234

JNE Track

  • awb: nomor resi
  • verify_code: kode verifikasi 5 digit (jika belum ada, API akan kirim flag need_verify)
GET /?api=jne_track&awb=TEST12345&verify_code=12345

Resolve Address

  • address: alamat lengkap (jalan, kelurahan/kecamatan, kota, provinsi, kode pos)
  • courier: jne atau jnt
  • Output: destination (kode JNE atau district J&T) + label + postal
GET /?api=resolve_address&courier=jne&address=Jalan Merdeka No.1, Kec. Coblong, Kota Bandung, Jawa Barat, 40132

Provinces

  • Tanpa parameter
  • Output: items[] berisi 38 provinsi (id, name)
GET /?api=provinces

Cities

  • province: nama provinsi sesuai output provinces
  • Output: items[] kota/kabupaten (name, type, plain)
GET /?api=cities&province=JAWA BARAT

Resolve

  • city: nama kota/kabupaten (pakai plain)
  • province: nama provinsi
  • postal: kode pos 5 digit (opsional)
  • courier: jne atau jnt
  • Output: destination + label
GET /?api=resolve&city=BANDUNG&province=JAWA BARAT&postal=40111&courier=jne

Contoh Integrasi JavaScript

async function cekOngkirJnt(sender, receiver, weight) {
  const qs = new URLSearchParams({
    api: 'jnt_rate',
    sender,
    receiver,
    weight: String(weight)
  });

  const res = await fetch('https://shipping.teknomadani.biz.id/?' + qs.toString());
  const data = await res.json();

  if (!data.ok) throw new Error(data.error || 'Request gagal');
  return data.rows;
}

Format Response

Success

{
  "ok": true,
  "rows": [ ... ]
}

Error

{
  "ok": false,
  "error": "API J&T menolak request",
  "api_desc": "查询失败"
}
Best practice: ambil sender/receiver dari endpoint jnt_search agar request jnt_rate tidak gampang gagal format area.
Tracking JNE/J&T mengikuti alur verifikasi resmi kurir. Endpoint ini tidak melakukan bypass keamanan kurir.