# Logistics — Zapi reference > Every Logistics endpoint on Zapi, with parameters, request shape and an example response. **Base URL:** `https://api.zpi.web.id` **Auth:** Send `x-api-key: YOUR_KEY` header on every request. Get a key at https://zpi.web.id/dashboard/keys (free tier — 2,000 req/mo, no credit card). **Response envelope:** `{ status: "success" | "error", message: string, content: }` **Rate limit:** 60 req/min (free tier). Per-endpoint cache TTL is documented below. **Errors:** standard HTTP codes (`401` invalid key, `429` rate limited, `5xx` upstream). Body always has `{ status: "error", message, errors? }`. ```bash curl "https://api.zpi.web.id/v1/CATEGORY:SCRAPER/ENDPOINT?param=value" \ -H "x-api-key: $ZAPI_KEY" ``` **Category page:** https://zpi.web.id/category/logistics **Full catalog:** https://zpi.web.id/apis · **Index:** https://zpi.web.id/llms-full.txt --- ## Cek Resi (cekresi.com) **Category:** logistics · **Slug:** `cek-resi` **Detail page:** https://zpi.web.id/api/logistics/cek-resi Lacak status pengiriman paket dari 23 ekspedisi populer — Shopee Express, Ninja, Lion Parcel, Pos Indonesia, TIKI, Paxel, SAP, Grab Express, dan lainnya. **Tags:** resi, tracking, ekspedisi ### Track Package Multi-courier package tracking by AWB via cekresi.com — 38 Indonesian couriers. - **Method:** `GET` - **Endpoint:** `https://api.zpi.web.id/v1/logistics:cek-resi/track` - **Cache TTL:** 360s **Parameters:** | Name | Type | Location | Required | Description | |------|------|----------|----------|-------------| | `awb` | string | query | yes | Tracking number (AWB / resi) | | `courier` | enum(jne|shopee-express|jnt-express|jnt-cargo|sicepat|ninja|lion-parcel|anteraja|pos-indonesia|tiki|jdl-express|jx-express|pahala-express|indah-logistik-cargo|jet-express|oexpress|rpx|rex-indonesia|21-express|ikea|skynet|ark-xpress|asp-express|rosalia-express|herona-express|sentral-cargo|acommerce|gtl-goto-logistics|paxel|sap-express|janio-asia|pcp-express|pt-ncs|nss-express|rcl-red-carpet-logistics|qrim-express|standard-express-lwe|luar-negeri-bea-cukai) | query | yes | Courier code (38 supported) | **cURL:** ```bash curl "https://api.zpi.web.id/v1/logistics:cek-resi/track?awb=JJ2001297560&courier=jnt-express" \ -H "x-api-key: YOUR_API_KEY" ``` **JavaScript / TypeScript:** ```javascript const res = await fetch("https://api.zpi.web.id/v1/logistics:cek-resi/track?awb=JJ2001297560&courier=jnt-express", { headers: { "x-api-key": process.env.ZAPI_KEY } }); const data = await res.json(); ``` **Python:** ```python import requests r = requests.get("https://api.zpi.web.id/v1/logistics:cek-resi/track?awb=JJ2001297560&courier=jnt-express", headers={"x-api-key": "YOUR_API_KEY"}) data = r.json() ``` **Example response:** ```json { "ok": true, "awb": "JJ2001297560", "count": 13, "status": "Delivered", "courier": "jnt-express", "history": [ { "date": "11 May 2026 08:40", "description": "Package has been delivered to Nabyan Salon," }, { "date": "11 May 2026 04:49", "description": "Package will be delivered to your address by Iqfana Anggit" }, { "date": "10 May 2026 21:44", "description": "Package has been arrived at SUKOHARJO Drop Point." }, { "date": "10 May 2026 19:00", "description": "Package will be departed to SUKOHARJO Drop Point" }, { "date": "10 May 2026 16:43", "description": "Package has been arrived at KARANG ANYAR Transit Center." }, { "date": "10 May 2026 16:36", "description": "Package has been arrived at KARANG ANYAR Transit Center." }, { "date": "10 May 2026 16:36", "description": "Package has been arrived at KARANG ANYAR Transit Center." }, { "date": "09 May 2026 19:46", "description": "Package will be departed to KARANG ANYAR Transit Center" } ], "shipper": null, "receiver": null, "shareUrl": "https://cekresi.com/?r=w&noresi=JJ2001297560", "shipDate": null, "delivered": true, "scrapedAt": "2026-08-02T07:46:11.461Z", "courierCode": "JET", "courierName": "J&T Express", "lastPosition": "Package has been delivered to Nabyan Salon, (Delivered)", "customerService": "jntcare@jet.co.id : Telp 021-8066-1888," } ``` ---