REST API for onboarded ERP/WMS partners to push shipments and read public tracking. Integration request bodies use snake_case. Access is invite-only — QuickDex provisions your company API key after onboarding; there is no public signup or self-service key application.
Active base URLhttps://staging.api.quickdex.my/api/v1Staging
Integration access is controlled by QuickDex operations — not open for public application. After your company is onboarded as a partner, QuickDex delivers a company-scoped API key through your account manager or integration lead. The full secret is shown once at issuance; store it in your ERP vault immediately.
Partner flow: contact your QuickDex account manager → complete onboarding → receive your qd_live_… key and the staging API base URL for UAT (https://staging.api.quickdex.my/api/v1) before production cutover.
No self-service: this site documents the Integration API only. You cannot register, apply for, or mint API keys here — keys are issued internally by QuickDex after partner onboarding.
Quick start
Receive your company API key from QuickDex after onboarding (see API access).
Configure your ERP with the base URL shown above and send a test shipment on Staging first.
Persist order_no, tracking_no, and parcel waybill_no from the response.
Poll GET /tracking/{order_no} or link customers to https://track.quickdex.my/tracking/{order_no}.
cargo must be a JSON array with at least one object, not a single { } object. Put description on the shipment root — not inside cargo lines.
company_code — the customer that owns the shipment. A company key may omit it (shipment belongs to the key owner) or send an eligible customer code. Platform keys must send company_code on every create.
Authentication
Integration endpoints require a company-scoped API key. Pass it using either header:
Header
Example
X-API-Key
qd_live_…
Authorization
Bearer qd_live_…
Revoked or invalid keys return 401 Unauthorized. A company key creates the shipment for company_code when that customer is an active unbound QuickDex customer; omit company_code to use the key owner. Platform keys require company_code.
Wire format
Topic
Rule
Integration JSON
snake_case field names
Public tracking JSON
camelCase inside the standard { data, meta } envelope
Content-Type
application/json
Timestamps
ISO 8601 UTC (created_at, updated_at)
Shipment cargo
JSON array of lines; optional length_cm / width_cm / height_cm per line (omit or 0 when unknown)
Shipment description
Optional note on the request root (max 255 chars)
Enums (current)
Values below match the running codebase and docs/openapi-integrations.yaml. They may change before the v1 contract lock.
cargo[].product_type (request)
Required on each cargo line when creating a shipment.
Creates multiple shipments in one request. Valid rows succeed; invalid rows are listed in failures with index and message — typical for ERP bulk push jobs.
No API key required. Returns a public snapshot suitable for customer-facing tracking pages.
Shareable URL: customers can also track at https://track.quickdex.my/tracking/{order_no}.
Errors
Status
Meaning
400
Validation failed — use snake_case, send cargo as a non-empty array, valid product_type, and Content-Type: application/json
401
Missing, invalid, or revoked API key
409
Duplicate reference for this company
429
Rate limited — back off and retry with exponential delay
Smoke test
Run the repo integration smoke script after your integration lead issues a key (internal QuickDex tooling). It checks health, OpenAPI JSON, creates one shipment, then reads public tracking.
Spec via same-origin proxy (/api/openapi/staging) → https://staging.api.quickdex.my/api/docs/integrations-json. Integrations and public tracking only; frozen subset in docs/openapi-integrations.yaml.