Langsung ke konten

Cari

    Menu dokumentasi

    API Reference

    Pelacakan

    Lacak resi.

    Lacak resi

    GET https://api.ongkirhub.com/v1/tracking/{awb}

    Resi yang dibuat lewat OngkirHub di mode kunci ini dilacak tanpa parameter tambahan; datanya diperbarui berkala. Resi dari luar OngkirHub butuh parameter courier dan hanya didukung untuk kurir dengan tracking.anyResi di GET /v1/couriers (JNE, J&T Express, AnterAja). JNE juga butuh verification.

    Akses (scope): tracking:read.

    Butuh kunci API (bearerAuth)

    Parameter path

    Parameter path
    Field Keterangan
    awb string, wajib

    Nomor resi.

    Parameter query

    Parameter query
    Field Keterangan
    courier string

    Kode kurir, untuk resi dari luar OngkirHub.

    Nilai: jnejntjtcsicepatspxlionpospaxelgosendanteraja

    verification string

    5 digit terakhir nomor HP penerima (wajib untuk resi JNE dari luar OngkirHub).

    Contoh permintaan

    curl -X GET "https://api.ongkirhub.com/v1/tracking/CGK0123456789012" \
      -H "Authorization: Bearer ohk_test_xxx"

    Respons

    • 200 Status dan riwayat pelacakan.
      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
      awb string, wajib

      Nomor resi.

      courier object, wajib

      -

      courier.code string | null, wajib

      -

      Nilai: jnejntjtcsicepatspxlionpospaxelgosendanteraja

      courier.name string | null, wajib

      Nama kurir.

      shipmentId string | null, wajib

      ID pengiriman OngkirHub jika resi dibuat lewat OngkirHub.

      shipmentStatus string | null, wajib

      -

      Nilai: quotedsubmittingbookedawb_readypicked_upin_transitout_for_deliverydeliveredfailedunknownproblemreturnedcancel_requestedcancelledexpired

      shipmentStatusLabel string | null, wajib

      Label status OngkirHub.

      stage string, wajib

      Tahap perjalanan.

      Nilai: manifestedpicked_upin_transitout_for_deliverydeliveredproblemreturnedcancelledunknown

      stageLabel string, wajib

      Label tahap.

      delivered boolean, wajib

      Paket sudah diterima.

      origin string | null, wajib

      Asal.

      destination string | null, wajib

      Tujuan.

      courierStatus string | null, wajib

      Status menurut kurir.

      shippedAt string (date-time) | null, wajib

      Tanggal kirim.

      deliveredAt string (date-time) | null, wajib

      Tanggal diterima.

      lastCheckedAt string (date-time) | null, wajib

      Terakhir dicek ke kurir.

      events array<TrackingEvent>, wajib

      Riwayat, terbaru dulu.

      {
        "awb": "CGK0123456789012",
        "courier": {
          "code": "jne",
          "name": "JNE"
        },
        "shipmentId": "OH0HZ3K7Q2M4XB",
        "shipmentStatus": "in_transit",
        "shipmentStatusLabel": "Dalam perjalanan",
        "stage": "in_transit",
        "stageLabel": "Dalam perjalanan",
        "delivered": false,
        "origin": "JAKARTA",
        "destination": "BANDUNG",
        "courierStatus": "ON PROCESS",
        "shippedAt": "2026-10-11T04:05:00.000Z",
        "deliveredAt": null,
        "lastCheckedAt": "2026-10-11T09:00:00.000Z",
        "events": [
          {
            "at": "2026-10-11T08:40:00.000Z",
            "rawDate": "2026-10-11 15:40:00",
            "description": "SHIPMENT FORWARDED TO DESTINATION [BANDUNG]"
          },
          {
            "at": "2026-10-11T04:05:00.000Z",
            "rawDate": "2026-10-11 11:05:00",
            "description": "SHIPMENT RECEIVED BY JNE COUNTER OFFICER AT [JAKARTA]"
          }
        ]
      }
    • 401 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"
        }
      }
    • 403 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"
          }
        }
      }
    • 404 Resi tidak ditemukan.
      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": "tracking_not_found",
          "message": "Nomor resi tidak ditemukan. Pastikan nomor resi dan kurirnya sudah benar.",
          "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12"
        }
      }
    • 422 Parameter belum valid, kurir belum didukung, atau verifikasi dibutuhkan.
      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.

      Butuh verifikasi

      {
        "error": {
          "code": "tracking_verification_required",
          "message": "Masukkan 5 digit terakhir nomor HP penerima untuk melacak resi ini.",
          "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12"
        }
      }

      Kurir belum didukung

      {
        "error": {
          "code": "tracking_unsupported_courier",
          "message": "Resi dari kurir ini belum bisa dilacak di OngkirHub.",
          "request_id": "req_5f0c2a9e7b1d4c3a8e6f0b12"
        }
      }
    • 429 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
          }
        }
      }
    • 500 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"
        }
      }
    • 503 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"
        }
      }
    • 504 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.

    TrackingEvent

    Field objek TrackingEvent
    Field Keterangan
    at string (date-time) | null, wajib

    Waktu kejadian (UTC). Null jika tanggal dari kurir tidak terbaca.

    rawDate string | null, wajib

    Tanggal seperti yang dikirim kurir.

    description string, wajib

    Keterangan dari kurir.