← All capabilities
parcel.detect_carrier

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

Ask

Which carrier is this tracking number from?

GET /v1/parcels/detect-carrier?tracking_number=1Z%20879E93%2003%204683%204440

Eckari
{
"carrier": {
"id": "ups",
"name": "UPS"
},
"match_strength": "distinctive",
"match_score": 0.98,
"candidates": [
{
"carrier_id": "ups",
"carrier_name": "UPS",
"match_score": 0.98,
"match_strength": "distinctive",
"format_id": "ups_1z",
"evidence": {
"prefix": "1Z",
"length": 18,
"check_digit": "ups_mod10",
"s10_origin_country": null,
"country_hint": null
}
}
],
"input": {
"original": "1Z 879E93 03 4683 4440",
"normalised": "1Z879E930346834440"
},
"formats_matched": 1,
"upu_s10": null,
"signature_version": "1.1.0"
}
Source
Eckari carrier signatures
Freshness
Static
Price
$0.001
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_numberstringrequired

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.

origin_countrystringoptional

Optional ISO 3166-1 alpha-2 origin country hint. Used only as a small tie-breaker; it never invents a candidate.

destination_countrystringoptional

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

carrierobject, null

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.

match_strengthstring

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.

match_scorenumber, null

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.

candidatesarray

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.

inputobject

The tracking number as supplied and as evaluated.

formats_matchedinteger

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.