Kirim paket

Endpoint, contoh request, dan format response.

GET https://instan.app/api/shipping/locations
curl --request GET \
--url 'https://instan.app/api/shipping/locations?q=kebon+jeruk' \
--header 'Authorization: Bearer {api_key}' \
Parameter Rincian Deskripsi
q Diperlukan String Kata kunci pencarian kelurahan/kecamatan. Minimal 3 karakter.
limit Opsional Integer Jumlah hasil pencarian. Maksimal 50. Default 15.
{
    "data": [
        {
            "subdis_id": 3174010001,
            "dis_id": 3174010,
            "city_id": 3174,
            "prov_id": 31,
            "subdistrict": "Kebon Jeruk",
            "district": "Kebon Jeruk",
            "city": "Jakarta Barat",
            "province": "DKI Jakarta",
            "sub_district_name": "Kebon Jeruk",
            "postal_code": "11530",
            "label": "Kebon Jeruk, Kebon Jeruk, Jakarta Barat, DKI Jakarta 11530"
        }
    ]
}
POST https://instan.app/api/shipping/rates
curl --request POST \
--url 'https://instan.app/api/shipping/rates' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{"origin_subdis_id":3174010001,"destination_subdis_id":3273010002,"weight":1,"item_price":100000}'
Parameter Rincian Deskripsi
origin_subdis_id Diperlukan Integer ID kelurahan asal. Bisa didapat dari endpoint cari lokasi.
destination_subdis_id Diperlukan Integer ID kelurahan tujuan. Bisa didapat dari endpoint cari lokasi.
weight Diperlukan Float Berat paket dalam kilogram. Wajib lebih dari 0.
item_price Diperlukan Integer Nilai barang dalam rupiah. Dipakai untuk asuransi/COD.
origin_postal_code Opsional String Kode pos asal. Otomatis terisi jika origin_subdis_id dikirim.
destination_postal_code Opsional String Kode pos tujuan. Otomatis terisi jika destination_subdis_id dikirim.
length / width / height Opsional Integer Dimensi paket dalam cm. Opsional.
is_cod Opsional Boolean Set true jika pengiriman COD.
{
    "data": [
        {
            "courier": "JNE",
            "code": "jne",
            "service": "REG",
            "rate_code": "JNE-REG",
            "signed_key": "eyJhbGciOi...",
            "rate_id": 12,
            "price": 18000,
            "price_formatted": "Rp 18.000",
            "shipment_price": 18000,
            "api_shipment_price": 17000,
            "min_duration": 2,
            "max_duration": 3,
            "pickup_time": "2026-08-17 16:00:00",
            "surcharge": 0,
            "cashback": 0,
            "logo": "https://example.com/jne.png"
        }
    ]
}
POST https://instan.app/api/shipping/orders
curl --request POST \
--url 'https://instan.app/api/shipping/orders' \
--header 'Authorization: Bearer {api_key}' \
--header 'Content-Type: application/json' \
--data '{"origin_subdis_id":3174010001,"destination_subdis_id":3273010002,"origin_name":"Budi","origin_phone":"081234567890","origin_address":"Jl. Melati 12","destination_name":"Siti","destination_phone":"081298765432","destination_address":"Jl. Mawar 8","weight":1,"item_price":100000,"rate_code":"JNE-REG","signed_key":"{signed_key}","shipment_price":18000,"api_shipment_price":17000,"min_duration":2,"max_duration":3,"courier":"JNE","service":"REG"}'
Parameter Rincian Deskripsi
rate_code Diperlukan String Kode layanan dari hasil cek ongkos kirim. Wajib sama persis.
signed_key Diperlukan String Kunci tarif dari hasil cek ongkos kirim. Kedaluwarsa jika tarif dicek ulang.
shipment_price Diperlukan Integer Harga jual ongkir (price dari cek tarif), dalam rupiah.
api_shipment_price Opsional Integer Harga dasar kurir (api_shipment_price dari cek tarif).
origin_subdis_id Diperlukan Integer ID kelurahan asal. Bisa didapat dari endpoint cari lokasi.
destination_subdis_id Diperlukan Integer ID kelurahan tujuan. Bisa didapat dari endpoint cari lokasi.
origin_name Diperlukan String Nama pengirim.
origin_phone Diperlukan String Nomor HP pengirim.
origin_address Diperlukan String Alamat jalan pengirim (tanpa kelurahan/kota).
destination_name Diperlukan String Nama penerima.
destination_phone Diperlukan String Nomor HP penerima.
destination_address Diperlukan String Alamat jalan penerima (tanpa kelurahan/kota).
weight Diperlukan Float Berat paket dalam kilogram. Wajib lebih dari 0.
item_price Opsional Integer Nilai barang dalam rupiah. Dipakai untuk asuransi/COD.
pay Opsional Boolean Default true: langsung potong saldo toko. Set false untuk membuat order belum dibayar.
shipment_type Opsional String Nilai yang diperbolehkan: PICKUP atau DROP. Default PICKUP.
package_desc Opsional String Deskripsi isi paket. Default Paket.
{
    "data": {
        "id": 42,
        "client_order_no": "USR1-20260817120000-1234",
        "awb": "JNE1234567890",
        "courier": "JNE",
        "service": "REG",
        "status": "menunggu_dijemput",
        "status_label": "Menunggu dijemput",
        "payment_status": "paid",
        "shipment_type": "PICKUP",
        "price": 18000,
        "price_formatted": "Rp 18.000",
        "can_pay": false,
        "datetime": "2026-08-22 06:02:37"
    },
    "meta": {
        "paid": true
    }
}
GET https://instan.app/api/shipping/orders
curl --request GET \
--url 'https://instan.app/api/shipping/orders' \
--header 'Authorization: Bearer {api_key}' \
Parameter Rincian Deskripsi
status Opsional String Filter status, misalnya menunggu_pembayaran, menunggu_dijemput, in_transit, delivered.
page Opsional Integer Nomor halaman yang Anda inginkan hasilnya dari. Defaultnya adalah 1.
results_per_page Opsional Integer Berapa hasil yang Anda inginkan per halaman. Nilai yang diperbolehkan adalah: 10, 25, 50, 100, 250, 500, 1000. Secara default adalah 25.
{
    "data": [
        {
            "id": 42,
            "awb": "JNE1234567890",
            "courier": "JNE",
            "service": "REG",
            "status": "menunggu_dijemput",
            "payment_status": "paid",
            "price": 18000,
            "price_formatted": "Rp 18.000"
        }
    ],
    "meta": {
        "page": 1,
        "results_per_page": 25,
        "total": 1,
        "total_pages": 1
    }
}
GET https://instan.app/api/shipping/orders/{id}
curl --request GET \
--url 'https://instan.app/api/shipping/orders/42' \
--header 'Authorization: Bearer {api_key}' \
POST https://instan.app/api/shipping/orders/{id}/pay
curl --request POST \
--url 'https://instan.app/api/shipping/orders/42/pay' \
--header 'Authorization: Bearer {api_key}' \
GET https://instan.app/api/shipping/track
curl --request GET \
--url 'https://instan.app/api/shipping/track?awb=JNE1234567890' \
--header 'Authorization: Bearer {api_key}' \
Parameter Rincian Deskripsi
awb Diperlukan String Nomor resi (AWB). Bisa juga memakai ID pengiriman di path.
{
    "data": {
        "awb": "JNE1234567890",
        "courier": "JNE",
        "service": "REG",
        "status_label": "Dalam pengiriman",
        "tracking_code": "IN_TRANSIT",
        "origin": "Jakarta Barat",
        "destination": "Bandung",
        "receiver_name": "Siti",
        "shipper_name": "Budi",
        "history": [
            {
                "status": "Paket diterima di gudang tujuan",
                "status_code": "IN_TRANSIT",
                "datetime": "2026-08-17 10:20:00",
                "location": "Bandung"
            }
        ]
    }
}
GET https://instan.app/api/shipping/label/{awb}
curl --request GET \
--url 'https://instan.app/api/shipping/label/JNE1234567890' \
--header 'Authorization: Bearer {api_key}' \
--output resi.pdf
Parameter Rincian Deskripsi
source Opsional String Sumber PDF. custom (default) memakai label aplikasi. courier memakai PDF kurir jika tersedia.
download Opsional Integer Set 1 untuk unduh file. Default menampilkan PDF di browser.
application/pdf Label pengiriman dalam format PDF.