Get tracking
curl --request GET \
--url https://api.returnshelper.com/uat/user/api/Tracking/GetTracking \
--header 'x-rr-apikey: <api-key>' \
--header 'x-rr-apitoken: <api-key>'import requests
url = "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking"
headers = {
"x-rr-apikey": "<api-key>",
"x-rr-apitoken": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-rr-apikey': '<api-key>', 'x-rr-apitoken': '<api-key>'}
};
fetch('https://api.returnshelper.com/uat/user/api/Tracking/GetTracking', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-rr-apikey: <api-key>",
"x-rr-apitoken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rr-apikey", "<api-key>")
req.Header.Add("x-rr-apitoken", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.returnshelper.com/uat/user/api/Tracking/GetTracking")
.header("x-rr-apikey", "<api-key>")
.header("x-rr-apitoken", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.returnshelper.com/uat/user/api/Tracking/GetTracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-rr-apikey"] = '<api-key>'
request["x-rr-apitoken"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "b6e4a8b0-6f2e-4b7a-9c3d-8a1e2f3c4d5e",
"courierName": "USPS",
"trackingNumber": "TRACK123456789",
"statusSlug": "IN_TRANSIT",
"lastEventAt": "2026-07-29T08:00:00.000Z",
"noFurtherUpdates": true,
"events": [
{
"statusSlug": "IN_TRANSIT",
"message": "Arrived at facility",
"location": "Los Angeles, CA 90001, US",
"eventAt": "2026-07-29T08:00:00.000Z"
}
]
}
}{
"correlationId": "<string>",
"meta": {
"status": 123,
"data": {},
"errorCode": "<string>",
"error": {}
}
}Tracking
获取 Tracking 信息
GET
/
api
/
Tracking
/
GetTracking
Get tracking
curl --request GET \
--url https://api.returnshelper.com/uat/user/api/Tracking/GetTracking \
--header 'x-rr-apikey: <api-key>' \
--header 'x-rr-apitoken: <api-key>'import requests
url = "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking"
headers = {
"x-rr-apikey": "<api-key>",
"x-rr-apitoken": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'x-rr-apikey': '<api-key>', 'x-rr-apitoken': '<api-key>'}
};
fetch('https://api.returnshelper.com/uat/user/api/Tracking/GetTracking', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-rr-apikey: <api-key>",
"x-rr-apitoken: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.returnshelper.com/uat/user/api/Tracking/GetTracking"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-rr-apikey", "<api-key>")
req.Header.Add("x-rr-apitoken", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.returnshelper.com/uat/user/api/Tracking/GetTracking")
.header("x-rr-apikey", "<api-key>")
.header("x-rr-apitoken", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.returnshelper.com/uat/user/api/Tracking/GetTracking")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-rr-apikey"] = '<api-key>'
request["x-rr-apitoken"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"id": "b6e4a8b0-6f2e-4b7a-9c3d-8a1e2f3c4d5e",
"courierName": "USPS",
"trackingNumber": "TRACK123456789",
"statusSlug": "IN_TRANSIT",
"lastEventAt": "2026-07-29T08:00:00.000Z",
"noFurtherUpdates": true,
"events": [
{
"statusSlug": "IN_TRANSIT",
"message": "Arrived at facility",
"location": "Los Angeles, CA 90001, US",
"eventAt": "2026-07-29T08:00:00.000Z"
}
]
}
}{
"correlationId": "<string>",
"meta": {
"status": 123,
"data": {},
"errorCode": "<string>",
"error": {}
}
}此页面由 AI 自动翻译。API 技术规格以英文呈现为标准。如有任何疑问,请参阅英文版本。
此为 Enterprise 专属 功能,仅对 Return Helper Enterprise 客户开放。如需了解本服务的收费方式,请联系 enterprise-solution@returnhelper.com。
reference 传入。
跟踪号会通过面单生成 webhook 送达——请在面单创建时于您端保存该号码,之后即可随时调用本端点查询最新状态。
可查询的范围
跟踪功能覆盖以支持的服务类型创建的退货面单。若跟踪号来自其他服务类型,或来自本功能上线前创建的面单,会返回查无数据的错误,而不是空结果。支持的服务类型
DHL_GERMANYRETURN_DHL_ECOMMERCE_DEURETURN_DHL_ECOMMERCE_INTL_DEUROYAL_MAILRETURN_POSTMEN_RM_BIRRETURN_RM48_QRCODE_BIR_GBRFEDEXfedex_groundRETURN_FEDEX_GROUND_WARETURN_FEDEX_GROUND_USCARETURN_FEDEX_GROUND_TXUPSRETURN_UPS_SV_HKG
解读响应内容
| 字段 | 说明 |
|---|---|
statusSlug | 货件当前的状态——请参阅状态值。events 中的每一条都会带有该时点所适用的状态。 |
events | 跟踪事件,每条包含 statusSlug、message、location 与 eventAt。message 是承运商对该事件的原始描述文字。若承运商未提供地点,location 为 null。承运商尚未回报任何信息时为空数组。 |
lastEventAt | 最近一次事件的时间;第一条事件出现前为 null。 |
noFurtherUpdates | 当本货件预期不会再有后续事件时为 true。可据此停止轮询。 |
courierName | 承运商名称(可读形式)。刚注册的跟踪号可能为 null。 |
id | 该跟踪记录的标识符。 |
状态值
statusSlug | 含义 |
|---|---|
PENDING | 跟踪号已注册,承运商尚未回报任何信息。 |
IN_TRANSIT | 承运商正在运送包裹。 |
DELIVERED | 承运商已回报包裹送达。 |
EXCEPTION | 该跟踪号无法注册跟踪,不会有任何事件送达。若您需要追查该货件,请联系 support@returnhelper.com。 |
message 是承运商提供的自由文本——可显示或记录,但请勿解析,也不要据此做分支判断。请改用 statusSlug 分支,并让无法识别的取值走默认分支,而不是直接失败。错误
未提供或为空的reference 会验证失败:HTTP 200,meta.status 为 400,meta.errorCode 为 VALIDATION_FAILED,消息位于 meta.error.reference。
其余所有失败都会返回 HTTP 200,meta.status 为 404,meta.errorCode 为 null,并在 meta.error.message 中提供可读的消息:
- 跟踪号不存在,或物流跟踪服务无法接受该值——消息会说明属于哪一种情况。
Tracking service is temporarily unavailable.—— 无法连接到物流跟踪服务。此时reference仍可能有效,请稍后重试。
{
"correlationId": "0HNCJ2K1P9RQ4:00000003",
"meta": {
"status": 404,
"data": {},
"errorCode": null,
"error": {
"message": "Tracking service is temporarily unavailable."
}
}
}
相关
- Webhooks → 面单结果 — 跟踪号的送达来源。
- 错误代码 — 完整的响应信封与错误约定。
授权
Your API key
Your API token — keep this private
查询参数
Tracking number of a return label generated by Return Helper.
响应
Success — data carries the tracking detail. events is an empty list when the carrier has not reported anything yet.
Show child attributes
Show child attributes