Build with Merdi Express.
One REST API connecting Hong Kong 3PLs to Far East destinations. Tracking, shipments, signed webhooks. Same key shape from sandbox to live — no fork in your code path.
curl https://merdiexpress.com/api/v1/shipments \ -H "Authorization: Bearer mk_test_rh9ABekJfP31cN7sQ8jKvLwY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{ "service_tier_id": "HKASTDGGSTCM", "recipient": { "contact_name": "John Doe", "phone": "+14155551234", "country_code": "US", "city": "San Francisco", "district": "CA", "address": "1 Hacker Way", "postal_code": "94025" }, "parcels": [{ "weight_kg": 0.5, "length_cm": 22, "width_cm": 18, "height_cm": 6 }], "items": [{ "description": "Sample item", "quantity": 1, "unit_price_hkd": 100 }], "goods_category": "general", "payment_type": "prepaid", "reference_no": "po_2026_05_28_0017" }'
{ "status": 201, "message": "Created", "data": { "id": "IM-2026-0528-9ZNCP3-1", "tracking_number": "IM-2026-0528-9ZNCP3-1", "status": "label_created", "service_tier_id": "HKASTDGGSTCM", "livemode": false, "created_at": "2026-05-28T07:44:23.908Z" } }
Base URL
Every endpoint lives under https://merdiexpress.com/api/v1/ — path-based, no subdomain. Examples: GET /api/v1/shipments, POST /api/v1/webhooks.
Bearer auth
Scoped keys with env prefixes (mk_live_, mk_test_). One header, no OAuth dance — yet the same key never crosses environments.
Idempotent writes
Every POST accepts an Idempotency-Key. Retry safely for 24h — duplicate writes return the original response.
Signed webhooks
Every event is HMAC-SHA256 signed on the X-Merdi-Signature header. Auto-retry with exponential backoff for 24h.
From zero to your first tracking number.
Fire one POST against sandbox. The returned tracking number is immediately retrievable from /v1/tracking with a simulated checkpoint feed advancing on a 90-second clock.
# 1. Set your sandbox key export MERDI_KEY="mk_test_rh9ABekJfP31cN7sQ8jKvLwY" # 2. Create a shipment curl https://merdiexpress.com/api/v1/shipments \ -H "Authorization: Bearer $MERDI_KEY" \ -H "Idempotency-Key: 5f3c-quick-start" \ -H "Content-Type: application/json" \ -d '{ "service_tier_id": "HKASTDGGSTCM", "recipient": { "contact_name": "John Doe", "phone": "+14155551234", "country_code": "US", "city": "San Francisco", "district": "CA", "address": "1 Hacker Way", "postal_code": "94025" }, "parcels": [{ "weight_kg": 0.5 }], "items": [{ "description": "Sample item", "quantity": 1, "unit_price_hkd": 100 }], "goods_category": "general", "payment_type": "prepaid" }' # → "tracking_number": "IM-2026-..." # 3. Watch it progress curl https://merdiexpress.com/api/v1/tracking/IM-2026-... \ -H "Authorization: Bearer $MERDI_KEY"
Ten endpoints. Three resource groups.
Shipments, tracking, webhooks. Each endpoint ships with a live try-it console and copy-pasteable samples.