POST /v2/track

配送追跡 (課金対象)

概要

最大10件まで一度に追跡可能。平均応答時間5秒。CJ大韓通運、韓進エクスプレスなど500社以上の配送業者に対応。

リクエスト例

curl -X POST https://api.whereparcel.com/v2/track \
  -H "Authorization: Bearer wp_test_public_demo_key_do_not_use_in_production:sk_test_public_demo_secret_do_not_use_in_production" \
  -H "Content-Type: application/json" \
  -d '{
    "trackingItems": [
      {
        "carrier": "kr.cj",
        "trackingNumber": "123456789012"
      },
      {
        "carrier": "kr.hanjin",
        "trackingNumber": "987654321098"
      }
    ]
  }'
const response = await fetch('https://api.whereparcel.com/v2/track', {
  method: 'POST',
  headers: {
    "Authorization": "Bearer wp_test_public_demo_key_do_not_use_in_production:sk_test_public_demo_secret_do_not_use_in_production",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
      "trackingItems": [
        {
          "carrier": "kr.cj",
          "trackingNumber": "123456789012"
        },
        {
          "carrier": "kr.hanjin",
          "trackingNumber": "987654321098"
        }
      ]
    })
});

const data = await response.json();
console.log(data);
<?php

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://api.whereparcel.com/v2/track');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');

$headers = [
  'Authorization: Bearer wp_test_public_demo_key_do_not_use_in_production:sk_test_public_demo_secret_do_not_use_in_production',
  'Content-Type: application/json'
];
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$data = [
  'trackingItems' => [
    '0' => [
      'carrier' => "kr.cj",
      'trackingNumber' => "123456789012"
    ],
    '1' => [
      'carrier' => "kr.hanjin",
      'trackingNumber' => "987654321098"
    ]
  ]
];
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));

$response = curl_exec($ch);
curl_close($ch);

$result = json_decode($response, true);
print_r($result);
import requests
import json

url = 'https://api.whereparcel.com/v2/track'

headers = {
    'Authorization': 'Bearer wp_test_public_demo_key_do_not_use_in_production:sk_test_public_demo_secret_do_not_use_in_production',
    'Content-Type': 'application/json'
}

data = {
    'trackingItems': {
        '0': {
            'carrier': "kr.cj",
            'trackingNumber': "123456789012"
        },
        '1': {
            'carrier': "kr.hanjin",
            'trackingNumber': "987654321098"
        }
    }
}

response = requests.post(url, headers=headers, json=data)

result = response.json()
print(result)
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"net/http"
)

func main() {
	url := "https://api.whereparcel.com/v2/track"

	payload := []byte(`{"trackingItems":[{"carrier":"kr.cj","trackingNumber":"123456789012"},{"carrier":"kr.hanjin","trackingNumber":"987654321098"}]}`)
	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(payload))

	req.Header.Add("Authorization", "Bearer wp_test_public_demo_key_do_not_use_in_production:sk_test_public_demo_secret_do_not_use_in_production")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)
	defer res.Body.Close()

	body, _ := io.ReadAll(res.Body)
	fmt.Println(string(body))
}
💡 注記: テスト用APIキーをダッシュボードで発行した実際のAPIキーに置き換えてください。

リクエストボディ

Name Type Required Description
trackingItems array Required
trackingItems[].carrier string Required
trackingItems[].trackingNumber string Required
trackingItems[].clientId string Optional

レスポンス

成功レスポンス (200)

200 OK

追跡応答成功

Response Body

{
  "success": true,
  "results": [
    {
      "carrier": "kr.cj",
      "trackingNumber": "123456789012",
      "clientId": "order-123",
      "success": true,
      "data": {
        "carrier": "kr.cj",
        "carrierName": "CJ대한통운",
        "trackingNumber": "123456789012",
        "status": "delivered",
        "statusText": "배달완료",
        "events": [
          {
            "timestamp": "2026-02-05T14:30:00+09:00",
            "status": "delivered",
            "statusText": "배달완료",
            "location": "서울 강남구",
            "description": "고객님께 배달이 완료되었습니다"
          },
          {
            "timestamp": "2026-02-05T09:15:00+09:00",
            "status": "out_for_delivery",
            "statusText": "배달 출발",
            "location": "서울 강남구 센터"
          },
          {
            "timestamp": "2026-02-04T18:00:00+09:00",
            "status": "in_transit",
            "statusText": "집하",
            "location": "서울 송파구 센터"
          }
        ]
      }
    },
    {
      "carrier": "kr.hanjin",
      "trackingNumber": "987654321098",
      "success": true,
      "data": {
        "carrier": "kr.hanjin",
        "carrierName": "한진택배",
        "trackingNumber": "987654321098",
        "status": "in_transit",
        "statusText": "배송 중",
        "events": [
          {
            "timestamp": "2026-02-05T12:00:00+09:00",
            "status": "in_transit",
            "statusText": "간선상차",
            "location": "경기 성남시"
          }
        ]
      }
    }
  ]
}

エラーレスポンス (401)

401 Unauthorized

認証失敗 - APIキーがないか無効です

Response Body

{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "Invalid or missing API key"
  }
}

エラーレスポンス (429)

429 Too Many Requests

リクエスト制限超過

Response Body

{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Please try again later."
  }
}