Skip to content

Get Shipping Label HTML

API Overview

Returns the shipping label for a parcel as an HTML string. Render the response in a browser <iframe> or inject it into a page for in-browser preview or print via window.print().

Request Information

  • Method: GET
  • Path: /openapi/order-shipping-label/get-shipping-label-html
  • Authentication: Standard OpenAPI token (MD5-based)

Request Headers

FieldDescription
Content-Typeapplication/json
x-auth-name$API_NAME
x-auth-seed$SEED (13-digit millisecond Unix timestamp)
x-auth-token$TOKEN (MD5 hash)

Request Parameters

ParameterTypeRequiredDescription
tracking_numstringYesWMG parcel tracking number

Token Generation Example

The authentication token is computed from your credentials and seed only -- request parameters are not included.

seed  = "1746700000000"   (13-digit ms timestamp)
token = md5( strtolower(api_name) + api_key + seed )

Authentication

This endpoint uses Standard OpenAPI Authentication (MD5 token).

For complete authentication instructions and code examples, see Authentication Guide.

Response Information

The response is in JSON format.

Response Format

FieldTypeDescription
codeintegerResult code. 0 = success, 1 = failure
messagestringResult description
dataobjectResponse payload

Success Response

  • Status Code: 200
  • Response Body:
json
{
    "code": 0,
    "message": "success",
    "data": {
        "html": "<!doctype html><html lang='en'><head><meta charset='UTF-8'><meta name='viewport' content='width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0'><meta http-equiv='X-UA-Compatible' content='ie=edge'><title>Document</title></head><body></body></html>"
    }
}
FieldTypeDescription
data.htmlstringFull HTML label document. Render in a browser or print directly

Error Response

  • Status Code: 200 (business logic error) or 4xx/5xx (system error)
  • Response Body:
json
{
    "code": 1,
    "message": "Order Not Found!",
    "data": []
}

Common errors:

  • Authentication failure → code 1; the message depends on the cause (e.g. x-auth-token: INVALID, x-auth-seed: TIMEOUT) — see signature.md
  • Order not found -- code 1, message Order Not Found!

Code Reference

CodeDescription
0Success
1Failure

Example

Bash

bash
API_NAME="your_api_name"
API_KEY="your_api_key"
SEED=$(date +%s%3N)
TOKEN=$(printf '%s' "$(echo -n "$API_NAME" | tr '[:upper:]' '[:lower:]')${API_KEY}${SEED}" | md5sum | cut -d' ' -f1)

# Save HTML label to file
curl -G "https://api.test.wmgdelivery.com/v1/openapi/order-shipping-label/get-shipping-label-html" \
  --data-urlencode "tracking_num=WMG1234567" \
  -H "x-auth-name: $API_NAME" \
  -H "x-auth-seed: $SEED" \
  -H "x-auth-token: $TOKEN" \
  | python3 -c "import sys,json; d=json.load(sys.stdin); open('label.html','w').write(d['data']['html'])"

Windows PowerShell

powershell
$API_NAME = "your_api_name"
$API_KEY  = "your_api_key"
$SEED     = [string]([DateTimeOffset]::UtcNow.ToUnixTimeMilliseconds())

$raw   = [System.Text.Encoding]::UTF8.GetBytes($API_NAME.ToLower() + $API_KEY + $SEED)
$md5   = [System.Security.Cryptography.MD5]::Create().ComputeHash($raw)
$TOKEN = -join ($md5 | ForEach-Object { $_.ToString("x2") })

$headers = @{
    "x-auth-name"  = $API_NAME
    "x-auth-seed"  = $SEED
    "x-auth-token" = $TOKEN
}

$response = Invoke-RestMethod `
    -Uri "https://api.test.wmgdelivery.com/v1/openapi/order-shipping-label/get-shipping-label-html?tracking_num=WMG1234567" `
    -Method Get -Headers $headers

# Save HTML to file
$response.data.html | Out-File -FilePath "label.html" -Encoding utf8
Write-Host "Label saved to label.html"

Python

python
import hashlib, time
import requests

API_NAME = 'your_api_name'
API_KEY  = 'your_api_key'
SEED     = str(int(time.time() * 1000))
TOKEN    = hashlib.md5((API_NAME.lower() + API_KEY + SEED).encode()).hexdigest()

headers = {
    'x-auth-name':  API_NAME,
    'x-auth-seed':  SEED,
    'x-auth-token': TOKEN,
}

resp = requests.get(
    'https://api.test.wmgdelivery.com/v1/openapi/order-shipping-label/get-shipping-label-html',
    params={'tracking_num': 'WMG1234567'},
    headers=headers,
)
data = resp.json()
if data['code'] == 0:
    with open('label.html', 'w', encoding='utf-8') as f:
        f.write(data['data']['html'])
    print('Label saved to label.html')
else:
    print('Error:', data['message'])

Node.js / TypeScript

typescript
import crypto from 'node:crypto';
import fs from 'node:fs';

const API_NAME = 'your_api_name';
const API_KEY  = 'your_api_key';
const SEED     = String(Date.now());
const TOKEN    = crypto.createHash('md5').update(API_NAME.toLowerCase() + API_KEY + SEED).digest('hex');

const url = new URL('https://api.test.wmgdelivery.com/v1/openapi/order-shipping-label/get-shipping-label-html');
url.searchParams.set('tracking_num', 'WMG1234567');

const resp = await fetch(url.toString(), {
    headers: {
        'x-auth-name':  API_NAME,
        'x-auth-seed':  SEED,
        'x-auth-token': TOKEN,
    },
});
const data = await resp.json() as { code: number; data: { html: string } };
if (data.code === 0) {
    fs.writeFileSync('label.html', data.data.html, 'utf-8');
    console.log('Label saved to label.html');
}

PHP

php
<?php
$API_NAME = 'your_api_name';
$API_KEY  = 'your_api_key';
$SEED     = (string)(time() * 1000);
$TOKEN    = md5(strtolower($API_NAME) . $API_KEY . $SEED);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.test.wmgdelivery.com/v1/openapi/order-shipping-label/get-shipping-label-html?' . http_build_query(['tracking_num' => 'WMG1234567']));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'x-auth-name: '  . $API_NAME,
    'x-auth-seed: '  . $SEED,
    'x-auth-token: ' . $TOKEN,
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
if ($data['code'] === 0) {
    file_put_contents('label.html', $data['data']['html']);
    echo "Label saved to label.html\n";
} else {
    echo 'Error: ' . $data['message'] . "\n";
}
?>

Notes

  • Inject data.html into an <iframe> srcdoc attribute or a new browser window for in-browser preview.
  • The authentication token does not include request parameters; only credentials and seed are used.
  • The seed must be a 13-digit millisecond Unix timestamp and within ±10 minutes of server time.
  • All parameters are case-sensitive.

Error Codes

codemessageDescription
1Authentication error messageAuthentication failed; the returned message depends on the cause — see the full list in signature.md
1Order Not Found!No order exists for the given tracking_num under this client
1Underlying carrier API errorSurfaced when the label generation pipeline returns an error — message text comes from the carrier service