Parcel Carrier Detection
Which carrier issued a tracking number and how strong the match is (carrier + match_strength), from a versioned signature set of prefixes, lengths, check digits and UPU S10 structure. No upstream call, no carrier account.
Example answer
Which carrier is this tracking number from?
GET /v1/parcels/detect-carrier?tracking_number=1Z%20879E93%2003%204683%204440
- Version
- 2.0.0
- Transport
- HTTP / MCP
- Coverage
- Global
Use this when
- Which carrier is this tracking number from?
- You have a tracking number but no carrier and need to route the lookup.
- You need to validate that a tracking number is well formed before storing it.
- You need to disambiguate a numeric tracking number between several carriers.
- You need to parse a UPU S10 international postal item id (service, serial, origin country).
Don't use this when
- You need tracking events, status or delivery estimates - not yet available.
- You need to validate a postal address - not supported.
- You need a guaranteed single answer - formats overlap, so several candidates can be returned.
- The carrier is outside the covered set - named carrier formats are UPS, FedEx, USPS, DHL Express, DHL eCommerce, DPD, Amazon Logistics and Canada Post, plus any UPU S10 postal item whose origin country maps to a designated postal operator (Royal Mail, Deutsche Post, La Poste, PostNL, Australia Post, Canada Post, China Post, Japan Post, India Post and other national posts). Regional carriers such as Evri, Yodel, GLS, Poste-style local couriers and Chinese e-commerce lines are not covered.
- You are treating an empty candidates list as "invalid number" - read formats_matched first - 0 means no covered format matched, above 0 means a covered format matched but its check digit failed.
If the user has asked you to inspect a specific website, page or URL, use your browsing tool instead — this capability only returns the Eckari carrier signature engine record.
Input
Tracking or consignment number. Spaces and hyphens are removed and letters upper-cased before matching (4-40 letters and digits after normalisation). Digits and letters are never altered.
Optional ISO 3166-1 alpha-2 origin country hint. Used only as a small tie-breaker; it never invents a candidate.
Optional ISO 3166-1 alpha-2 destination country hint. Used only as a small tie-breaker; it never invents a candidate.
What the result means
The answer - the best-matching carrier, or null when no candidate scored at least 0.5. Always read match_strength before acting on it - a weak match names a carrier whose format has no carrier-unique marker.
How distinctive the match behind `carrier` is. distinctive = a carrier-unique marker (prefix or UPU S10 operator) plus length plus a valid check digit - only that carrier issues numbers of this shape. strong = carrier-unique marker plus length, check digit not verifiable. weak = length plus check digit only, with no carrier-unique marker; a random number of the right length passes a single decimal check digit about 1 time in 10 (about 1 in 36 for the alphanumeric mod 37,36 check), so treat a weak match as a hint. none = no carrier is named.
Deterministic signature match score for `carrier` from a fixed table (0-1, two decimals) - carrier-unique prefix plus length plus valid check digit 0.98, UPU S10 with a valid check digit 0.90, prefix plus length 0.85, length plus valid check digit 0.80, S10 structure with an invalid check digit 0.45, plus 0.02 when a country hint matches. It is a rule-based heuristic, NOT a calibrated probability, and it is null when no carrier is named.
Every carrier whose signature matched, highest score first, ties broken by carrier_id ascending. Candidates below the 0.5 reporting threshold are still listed here even though `carrier` is null, so an ambiguous or failed-check number can be inspected.
The tracking number as supplied and as evaluated.
Number of distinct formats in the signature set whose pattern matched the normalised number, counted before check digits were applied. Zero with no candidates means no covered format matches this shape at all; a value above zero with no candidates means a covered format matched but its check digit did not validate - a typo or a partial capture rather than an unknown carrier.
Provenance
- Source
- Eckari carrier signatures
- Freshness
- Static · read at request time, not cached
- Region
- Global
Access
- Over MCP
- parcel_detect_carrier
- Over HTTP
- GET https://api.eckari.com/v1/parcels/detect-carrier
- Price
- $0.001 per call over x402. Account access $0.001 when that rail opens.