×

Anmelden

Console / api
API Status: OK
User
Sign Out

Welcome to xsendungsverfolgung API

To provide you with better integration support, after completing registration and login, the system will automatically enable API interface access for you, and you can receive 5 free trial credits!

Development Documentation

Below is the full API documentation for /client/trackinfo

Track Detail Query (Single Number) API Official External Documentation

Basic Information

  • Name: Track Detail Query (Single Number)
  • Method: POST
  • Route: /client/trackinfo
  • Content-Type: application/json
  • Authentication:
  • - Request header X-Api-Key is required, or pass apiKey in the request body (choose one of the two)

Function Description

  • Use the assigned apiKey to query the tracking details of a single logistics number
  • Deduct points according to the number of accepted entries in the result, and record a usage log

Request Parameters

  • apiKey (string) Required (or via request header X-Api-Key): API credential
  • number (string) Required: logistics tracking number, only a single one is supported

Response Parameters

  • Success: { code:int, data:{ accepted:array, rejected:array? }, usage:{ deducted:int, remaining:int } }
  • Error: { code:int, msg:string }

Business Rules

  • Tracking number support: only a single number is supported, arrays are not supported
  • Daily limit: if the apiKey has daily_limit ≥ 0 configured, exceeding the limit returns 429
  • Account quota: if the user’s remaining quota is not enough to cover the current deduction, returns 402
  • Usage log: each successful deduction is recorded in the usage log (including client_userid, masked key, tracking number, IP, deducted points)
  • Package creation: when the tracking number in accepted does not exist in the package table, insert a minimal record automatically (tracking_number, register_time, created_at, updated_at, data_origin='Api', param_type='json')

Request Examples

  • Using request header to pass the key (recommended)
curl -X POST 'https://your-domain.com/client/trackinfo' \
  -H 'Content-Type: application/json' \
  -H 'X-Api-Key: sk_live_xxx' \
  -d '{
    "timestamp": 1739300000,
    "number": "RR123456789CN",
  }'
  • Passing the key in the request body (without header)
curl -X POST 'https://your-domain.com/client/trackinfo' \
  -H 'Content-Type: application/json' \
  -d '{
    "timestamp": 1739300000,
    "apiKey": "sk_live_xxx",
    "number": "RR123456789CN"
  }'

Successful Response Example

{
  "code": 0,
  "data": {
    "accepted": [
      {
        "number": "RR123456789CN",
        "carrier": 3011,
        "package_status": "InTransit",
        "latest_event_time": "2026-02-10 12:34:56",
        "latest_event_info": "{\"status\":\"Arrived at sorting center\"}"
      }
    ],
    "rejected": []
  },
  "usage": {
    "deducted": 1,
    "remaining": 998
  }
}

Logistics Tracking Result Field Description

Field Structure Overview

accepted

Type: Array Description: Collection of results that have been successfully processed. If there is no data that meets the conditions, this array is empty.

Contains the following fields:

FieldTypeDescription
-------------------------
numberStringTracking number
carrierNumberCarrier code
paramStringAdditional tracking parameters; this field exists for backward compatibility and can be ignored
origin_countryStringOrigin country, passed via the /register API
ship_dateStringShipping date in YYYY/MM/DD format
destination_postal_codeStringDestination postal code
destination_countryStringDestination country
destination_cityStringDestination city
shipperStringShipper
consigneeStringConsignee
phone_number_last_4StringLast 4 digits of phone number
phone_numberStringPhone number
cpf_or_cnpjStringPersonal or company tax ID
special_tracking_infoObjectSpecial tracking information. This field is an object where each item contains two parts: number_type and parameter
tagStringCustom tag, up to 100 characters; e.g. association ID, grouping remarks, etc.
langStringSpecified language for logistics events, i.e. translation language code
track_infoObjectMain structure node for tracking information

---

track_info Detailed Structure

shipping_info

Type: Object Description: Region-related information node

Contains the following fields:

FieldTypeDescription
-------------------------
shipper_addressObjectShipper address node
recipient_addressObjectRecipient address node
shipper_address
FieldTypeDescription
-------------------------
countryStringCountry or region (uppercase)
stateStringState / Province
postal_codeStringPostal code
cityStringCity
streetStringStreet
coordinatesObjectLocation coordinates (e.g. longitude and latitude)
coordinates
FieldTypeDescription
-------------------------
longitudeStringLongitude
latitudeStringLatitude
recipient_address

(Same structure as shipper_address)

---

latest_status

Type: Object Description: Latest status node

Contains the following fields:

FieldTypeDescription
-------------------------
statusStringMain logistics status
sub_statusStringSub-status of the package
sub_status_descrStringStatus description

---

latest_event

Type: Object Description: Latest event. The structure and description are consistent with the items in the events array.

---

time_metrics

Type: Object Description: Time-related metrics node. estimated_delivery_date is a time range.

Contains the following fields:

FieldTypeDescription
-------------------------
days_after_orderNumberDays since order (shipment transit days)
days_after_last_updateNumberDays since last update
days_of_transitNumberTransit days
days_of_transit_doneNumberCompleted transit days (after delivery)
estimated_delivery_dateObjectExpected delivery time range node
days_after_order Calculation Rules
  • When status is Delivered, days = delivery time − time of the first event
  • When status is not Delivered and there is tracking result, days = current time − time of the first event
  • When there is no tracking result, days = --
days_after_last_update Calculation Rules
  • When status is Delivered, Returned & Delivered, or No Result, days = 0
  • In other cases, days = current time − time of the last event
days_of_transit Calculation Rules

When status is Delivered: 1. If there is InTransit_PickedUp, days = delivery time − pickup time 2. If there is no InTransit_PickedUp but there is InfoReceived, days = delivery time − time of the first event after InfoReceived 3. If neither InTransit_PickedUp nor InfoReceived exists, days = delivery time − time of the first event

When status is not Delivered but there is tracking result: 1. If there is InTransit_PickedUp, days = current time − pickup time 2. If there is no InTransit_PickedUp but there is InfoReceived, days = current time − time of the first event after InfoReceived 3. If there is no InTransit_PickedUp, there is InfoReceived, but only 1 tracking event, days = 0 4. If neither InTransit_PickedUp nor InfoReceived exists, days = current time − time of the first event

When there is no tracking result: days = 0

days_of_transit_done Calculation Rules

When status is Delivered: 1. If there is InTransit_PickedUp, days = delivery time − pickup time 2. If there is no InTransit_PickedUp but there is InfoReceived, days = delivery time − time of the first event after InfoReceived 3. If neither InTransit_PickedUp nor InfoReceived exists, days = delivery time − time of the first event

When status is not Delivered: days = 0

estimated_delivery_date
FieldTypeDescription
-------------------------
sourceStringIndicates the provider of from and to. 17TRACK means provided by 17TRACK, Official means provided by carrier, null means no provider
fromStringEarliest estimated delivery time (ISO format), e.g. 2021-09-01T08:00:54-05:00
toStringLatest estimated delivery time (ISO format), e.g. 2021-09-01T08:00:54-05:00

---

milestone

Type: Array Description: Milestones

Purpose: Display the major steps during transportation and their order and time.

Usage: Iterate over milestone items. Recommended order: InfoReceived >> PickedUp >> Departure >> Arrival >> OutForDelivery >> Delivered. (AvailableForPickup, Returned, Returning should be used as appropriate.)

Note: If time_iso or time_utc is null, it means the carrier did not provide time information. You can use milestone[].key_stage to look up more detailed event information in tracking.providers[].events[].stage.

Meaning of milestone.key_stage:

key_stageMeaning
--------------------
InfoReceivedInformation received – carrier has received shipment order information from the merchant and is waiting for pickup
PickedUpPicked up – carrier has collected the parcel from the merchant
DepartureDeparture – departed from the origin country’s port (theoretically after customs clearance)
ArrivalArrival – arrived at the destination country’s port (customs clearance is not guaranteed)
AvailableForPickupAvailable for pickup – parcel has arrived at the destination pickup point and needs to be collected by recipient
OutForDeliveryOut for delivery – parcel is being delivered
DeliveredDelivered successfully – parcel has been delivered
ReturnedReturned – parcel has been returned
ReturningReturning – parcel is in return process, but not guaranteed to end in “Returned” status

Contains the following fields:

FieldTypeDescription
-------------------------
key_stageStringMilestone, corresponding to tracking.providers[].provider[].events[].stage
time_isoStringTime when the status occurred (ISO format)
time_utcStringTime when the status occurred (UTC format)
time_rawObjectRaw time information provided by the carrier
time_iso Description

1. Time when the status occurred (ISO format). Converted from the carrier’s local time with time zone; if time format is invalid, the raw time is returned. 2. If the upstream carrier provides time zone information, it is used first; otherwise, the time zone of the carrier’s head office is used. 3. Example: 2022-03-02T20:43:24-06:00 means UTC−06:00. 4. Removing the time zone part (-06:00) gives the carrier’s local time. 5. This corresponds to time_iso in the events collection, i.e. tracking.providers[].provider[].events[].time_iso.

time_utc Description

1. Time when the status occurred (UTC format), converted from time_iso. If time_iso is invalid, this is null. 2. Example: 2022-03-03T02:43:24Z. 3. This corresponds to time_utc in the events collection, i.e. tracking.providers[].provider[].events[].time_utc.

time_raw
FieldTypeDescription
-------------------------
dateStringDate information (year-month-day)
timeStringTime information (hour-minute-second)
timezoneStringTime zone information. If timezone is null but time_iso is valid, it means the time zone was filled by 17TRACK.

---

misc_info

Type: Object Description: Additional package information node

Contains the following fields:

FieldTypeDescription
-------------------------
risk_factorNumberPackage risk factor
service_typeStringService type
weight_rawStringOriginal weight information; unit depends on the carrier (grams, kilograms, pounds, etc.)
weight_kgStringConverted weight in kilograms based on weight_raw
piecesStringNumber of pieces
dimensionsStringOriginal dimension info (L×W×H). Units may differ by carrier; most use centimeters.
customer_numberStringCustomer number of the receiver
reference_numberStringReference number
local_numberStringLast-mile tracking number
local_providerStringLast-mile carrier
local_keyNumberLast-mile carrier code

---

tracking

Type: Object Description: Tracking information node

Contains the following fields:

FieldTypeDescription
-------------------------
providers_hashNumberHash value calculated based on event contents, used to determine whether there are changes
providersArrayCarrier collection node
Special Notes

When the package is handled by a postal carrier, providers[0] represents the destination carrier information, and providers[1] represents the origin carrier information. It is possible that events in providers[0] and providers[1] have duplicated descriptions and timestamps.

Structure of providers Array
FieldTypeDescription
-------------------------
providerObjectCarrier information node
service_typeStringService type
latest_sync_statusStringLatest synchronization status
latest_sync_timeStringLatest synchronization time
events_hashNumberEvent hash value
provider_tipsStringQuery tips
provider_langStringCurrent language of the carrier; null if unknown
eventsArrayEvent collection node
provider
FieldTypeDescription
-------------------------
keyNumberCarrier code
nameStringCarrier name
aliasStringCarrier alias
telStringCarrier phone
homepageStringCarrier official website
countryStringCountry where the carrier is located
Values of latest_sync_status
  • Failure: Synchronization failed
  • Success: Synchronization succeeded
events

Description: Each item is a logistics event object. The array is sorted in reverse chronological order: more recent events come first.

FieldTypeDescription
-------------------------
time_isoStringTime when the event occurred (ISO format)
time_utcStringTime when the event occurred (UTC time)
time_rawObjectRaw time information provided by the carrier
descriptionStringEvent description, including location, in-transit actions, and key status notes
description_translationObjectTranslation node for the description
locationStringLocation
stageStringMilestone status; may be missing depending on the carrier’s data
sub_statusStringSub-status of the package
addressObjectAddress information node
time_iso Description

1. Time when the event occurred (ISO format). Converted from the carrier’s local time with time zone; if format is invalid, the raw time is shown. 2. If the upstream carrier provides time zone information, it is used first; otherwise, the time zone of the carrier’s head office is used. 3. Example: 2022-03-02T20:43:24-06:00, which represents UTC−06:00. 4. Removing the time zone (-06:00) yields the carrier’s local time.

time_utc Description

1. Time when the event occurred (UTC), converted from time_iso. If time_iso is invalid, this is null. 2. Example: 2022-03-03T02:43:24Z.

time_raw
FieldTypeDescription
-------------------------
dateStringDate (year-month-day)
timeStringTime (hour-minute-second)
timezoneStringTime zone. If timezone is null and time_iso is valid, it means the time zone information was filled by 17TRACK.
description_translation
FieldTypeDescription
-------------------------
descriptionStringTranslated event description
langStringTranslation language code
address
FieldTypeDescription
-------------------------
countryStringCountry / Region
stateStringState / Province
cityStringCity
streetStringStreet
postal_codeStringPostal code
coordinatesObjectLocation coordinates node
coordinates
FieldTypeDescription
-------------------------
longitudeStringLongitude
latitudeStringLatitude

---

Error Response Examples

  • apiKey invalid / disabled
{ "code": 401, "msg": "apiKey invalid / disabled", "data": [] }
  • Insufficient remaining quota
{ "code": 402, "msg": "Insufficient remaining quota", "data": [] }
  • Daily limit exceeded
{ "code": 429, "msg": "Daily call limit reached", "data": [] }
  • Missing parameter
{ "code": 400, "msg": "number is required", "data": [] }