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