サービス市場 / 送料 API 開発ドキュメント
海上速達 転送料金試算 API · v1

送料 API 開発ドキュメント

中国 → 台湾の海上速達による転送料金をリアルタイムに試算する API です。人民元建てで、実重量と容積重量にもとづく課金に対応し、1 回のリクエストで料金の内訳をすべて返します。0337.tw などの越境 EC プラットフォームで、購入画面に送料を表示するために設計されています。

海上速達

輸送方式(Sea Express)

¥10/kg

1kg あたりの料率(人民元)

+¥20

請求重量 10kg 未満の追加料金

<50ms

応答までの平均時間

1 概要

送料 API を使うと、自社プラットフォームの購入画面に「中国 → 台湾の海上速達の転送料金」をリアルタイムに表示でき、料率表を自前で管理する手間がなくなります。

できること

  • 送料試算 — 荷物の重量(または長さ・幅・高さによる容積)を渡すと、その荷物の海上速達の転送料金(人民元)を返します。
  • 料率の取得 — 現在の 1kg あたりの料率、追加料金のしきい値、容積重量の換算係数を取得できます。フロントエンドでの自前計算やキャッシュに便利です。

レスポンスはすべて JSON で、共通のエンベロープ形式です。成功時は success: true と data、失敗時は success: false と error コード、message を返します。

通貨:人民元(CNY / ¥)。 この API の料率は越境 EC 提携プロジェクト向けのもので、0523.tw 公式サイト(新台湾ドル)の転送料金試算とは別に管理しています。新台湾ドル建ての見積もりや他の輸送方式が必要な場合は、有効化についてお問い合わせください。

2 認証と基本情報

すべてのリクエストに API キーが必要です。Authorization ヘッダー(推奨)または X-API-Key ヘッダーに設定します。

Base URL

https://0523.tw/api/v1/freight

認証ヘッダー(いずれか一方)

方法 A — ベアラー トークン (推奨)

Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

方法 B — X-API キー

X-API-Key: lk_live_xxxxxxxxxxxxxxxxxxxxxxxx

API キーは lk_live_ で始まります。厳重に管理し、フロントエンドの JavaScript や公開 Git リポジトリには絶対に含めないでください。呼び出しはすべて自社のサーバー側から行ってください。

レート制限(Rate Limit)

キーごとに 1 分あたりのリクエスト上限があり、残り回数はレスポンスヘッダーで確認できます:

ヘッダー説明
X-RateLimit-Limit1 分あたりに許可されるリクエスト数
X-RateLimit-Remainingこの 1 分間の残りリクエスト数
Retry-After上限超過時(HTTP 429)に待機する秒数

購入画面を快適にするには、/rates の結果を数分間キャッシュし、自社サーバーで同じ計算式を使って計算することをおすすめします。/quote は、注文手続きの重要なステップで金額を照合するときにのみ呼び出してください。

3 エンドポイント:料率の取得

GET /api/v1/freight/rates

現在有効な輸送方式と料率をすべて返します。パラメータは不要です。

聞く

curl https://0523.tw/api/v1/freight/rates \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

応答 200

{
  "success": true,
  "currency": "CNY",
  "data": [
    {
      "method": "sea",
      "name_zh": "海快",
      "name_en": "Sea Express",
      "rate_per_kg": 10,
      "surcharge": 20,
      "min_threshold": 15,
      "volume_divisor": 10000,
      "currency": "CNY"
    }
  ]
}

4 エンドポイント:送料試算

GETPOST /api/v1/freight/quote

荷物の重量または寸法(容積)から海上速達の転送料金を計算します。GET(クエリ文字列)と POST(JSON またはフォーム)のどちらでも利用できます。

リクエストパラメータ

パラメータ型必須説明
weightnumber任意*実重量(単位:kg)。
lengthnumber任意*長さ(単位:cm)。
widthnumber任意*幅(単位:cm)。
heightnumber任意*高さ(単位:cm)。
methodstring任意輸送方式。現在は sea(海上速達)です。省略時は sea になります。
* weight と「すべてそろった length/width/height」の少なくとも一方が必要です。両方を指定した場合は、「実重量」と「容積重量」の大きい方を請求重量として使います。

リクエスト例(GET)

curl "https://0523.tw/api/v1/freight/quote?weight=8&method=sea" \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx"

リクエスト例(POST JSON)

curl -X POST https://0523.tw/api/v1/freight/quote \
  -H "Authorization: Bearer lk_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{"weight": 5, "length": 40, "width": 30, "height": 30}'

応答 200

{
  "success": true,
  "data": {
    "method": "sea",
    "method_name_zh": "海快",
    "method_name_en": "Sea Express",
    "currency": "CNY",
    "currency_symbol": "¥",
    "actual_weight": 5,
    "volume_weight": 3.6,
    "volume_divisor": 10000,
    "billable_weight": 5,
    "billable_basis": "actual",
    "rate_per_kg": 10,
    "freight": 50,
    "surcharge": 20,
    "surcharge_applied": true,
    "min_threshold": 15,
    "total_fee": 70
  }
}

レスポンスフィールドの説明

フィールド説明
actual_weight実重量(kg)。指定がない場合は 0。
volume_weight容積重量(kg)= 長さ × 幅 × 高さ ÷ 10000。サイズの指定がない場合は 0。
billable_weight請求の基準となる重量(kg)= max(実重量, 容積重量)。
billable_basis課金の基準:actual(実重量)または volumetric(容積重量)。
freight基本送料 = 請求重量 × 1kg あたりの料率(追加料金は含みません)。
surchargeこの荷物に実際に加算された追加料金(発生しない場合は 0)。
surcharge_applied追加料金が発生したかどうか(請求重量 < しきい値)。
total_fee最終的な請求送料(人民元、整数に四捨五入)。

5 計算式と計算例

この API の計算ロジックは 0523.tw 公式サイトの海上速達試算ツールと同じで、料率だけが提携プロジェクト向けになっています。自社システムでも同じ計算式で事前に計算できます。

① 容積重量 = 長さ × 幅 × 高さ (cm) ÷ 10000
② 請求の基準となる重量 = max(実重量, 容積重量)
③ 基本の送料 = 請求の基準となる重量 × ¥10/kg
④ 追加料金 = 請求重量 < 10kg ? +¥20 : ¥0
⑤ 請求送料 = round(③ + ④)

計算例

¥1008 kg の荷物 → 請求重量 8kg < 10kg → 8×10 + 20 = 100
¥20020 kg の荷物 → 請求重量 20kg ≥ 10kg → 20×10 = 200(追加料金なし)
¥705 kg + 箱 40×30×30cm → 容積重量 3.6kg、請求重量は 5kg → 5×10 + 20 = 70
¥1203 kg + 箱 60×50×40cm → 容積重量 12kg > 実重量、請求重量 12kg ≥ 10kg → 12×10 = 120(追加料金なし)
¥150箱 50×50×60cm(サイズのみ)→ 容積重量 15kg、請求重量 15kg ≥ 10kg → 15×10 = 150

6 エラーコード

エラーレスポンスは常に { "success": false, "error": "...", "message": "..." } の形式です。

HTTPerror説明
401missing_api_keyAPI キーが指定されていません。Authorization または X-API-Key ヘッダーを追加してください。
401invalid_api_keyAPI キーが無効です。
403key_suspended / key_revoked / key_expiredキーが停止、取り消し、または期限切れになっています。
403insufficient_scopeキーに freight:read 権限が付与されていません。
422validation_failedパラメータの形式が正しくありません(型・範囲)。
422missing_parametersweight も、すべてそろった length/width/height も指定されていません。
422unsupported_methodmethod が利用可能な一覧にありません。
429rate_limit_exceeded1 分あたりのリクエスト上限を超えました。Retry-After を確認してください。

7 サンプルコード

サーバー側からの呼び出し例です。lk_live_... を自社のキーに置き換え、環境変数に保存してください。

// composer require guzzlehttp/guzzle
use GuzzleHttp\Client;

$client = new Client(['base_uri' => 'https://0523.tw']);

$res = $client->post('/api/v1/freight/quote', [
    'headers' => [
        'Authorization' => 'Bearer ' . env('LUCKY_FREIGHT_KEY'),
        'Accept'        => 'application/json',
    ],
    'json' => [
        'weight' => 8,
        'method' => 'sea',
    ],
]);

$data = json_decode($res->getBody(), true);
echo '運費 ¥' . $data['data']['total_fee'];  // 運費 ¥100
// Node.js / 伺服器端 — 請勿在瀏覽器暴露金鑰
const res = await fetch('https://0523.tw/api/v1/freight/quote', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.LUCKY_FREIGHT_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ weight: 8, method: 'sea' }),
});
const { data } = await res.json();
console.log(`運費 ¥${data.total_fee}`);  // 運費 ¥100
curl -X POST https://0523.tw/api/v1/freight/quote \
  -H "Authorization: Bearer $LUCKY_FREIGHT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"weight": 8, "method": "sea"}'

8 Laravel 製 EC サイトとの連携(推奨構成)

0337.tw は Laravel 製の EC サイトです。送料 API をバックエンドの Service としてまとめ、チェックアウト処理で次のように呼び出すことをおすすめします:

  • チェックアウト時にカートの総重量(kg)/容積を取得したら、バックエンドから /api/v1/freight/quote を呼び出し、返ってきた total_fee を送料として設定します。
  • キーは .env(例:LUCKY_FREIGHT_KEY)に置き、config() で読み込みます。コードやフロントエンドに直接書き込まないでください。
  • 呼び出しに失敗した場合(タイムアウト/429)は、/rates でキャッシュしておいた料率を使い、同じ計算式でローカル計算してチェックアウトが止まらないようにします。
  • 金額は人民元です。EC サイトで新台湾ドル決済を行う場合は、自社で為替レートを適用して換算してください。

Laravel の例 (HTTP ファサード)

// app/Services/LuckyFreightService.php
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Cache;

class LuckyFreightService
{
    public function quote(float $weight): int
    {
        $res = Http::withToken(config('services.lucky.freight_key'))  // 讀 .env
            ->acceptJson()
            ->timeout(8)
            ->get('https://0523.tw/api/v1/freight/quote', [
                'weight' => $weight,
                'method' => 'sea',
            ]);

        if ($res->successful()) {
            return (int) $res->json('data.total_fee');  // 人民幣
        }

        // 後備:用快取費率本地計算,結帳不中斷
        return $this->fallbackQuote($weight);
    }
}

config/services.php に 'lucky' => ['freight_key' => env('LUCKY_FREIGHT_KEY')] を追加すると、チェックアウト処理の Controller に LuckyFreightService を注入して送料を取得できます。

信頼できる唯一の情報源: 料率は HowBridge が一元管理しています。HowBridge が料率を変更すると API に即時反映されるため、EC サイト側を改修しなくても自動的に最新の料率になります。

9 サポートとバージョン

技術サポート: howyunqisoftware@gmail.com

API バージョン: v1(安定版)。互換性のない変更は新しいバージョン番号(v2)で公開し、v1 の互換性は維持します。

変更履歴: 2026-06-01 — 送料 API v1 を公開(海上速達、人民元建て)。

API キーを申請