Freight Risk Scoring
Get public-data benchmark bands for a lane and HS code
GET
/benchmarks/{lane}/{hs}$0.05 per callReturns the percentile bands for one lane and HS code, with no shipment and no score. Served from public-domain data (U.S. Census) whatever the caller's plan. The destination must be a U.S. port or US. Resolution falls back from customs district to country, region and HS4, and the response says which level it used and how confident it is.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| lanerequired | path | string | Lane key `{origin}-{destination}-{mode}`, e.g. CNSHA-USLAX-ocean_container or CN-US-air. |
| hsrequired | path | string | HS code, 4–10 digits. 8–10 digits are truncated to 6 (reason Q03). |
| measuresoptional | query | string | Comma-separated subset of measures. Default all. |
| windowoptional | query | string | Benchmark window. Only 24m is built in this release; 12m and 36m return 422 `unsupported_window`. one of "12m", "24m", "36m" · default "24m" |
| as_ofoptional | query | string | Return the benchmark version current on this date (audit replay). format date |
| resolutionoptional | query | string | one of "auto", "exact" · default "auto" |
Response fields
| Field | Type | Description |
|---|---|---|
| id | string | |
| lane_requested | string | |
| lane_used | string | The lane the benchmark was built for. A district benchmark is written CN-US:27-ocean_container. |
| hs_used | string | |
| resolution | string | |
| window | object | |
| window.from | string | |
| window.to | string | |
| as_of | string | |
| confidence | string | |
| sources | array of string | |
| district | object | Present when the benchmark is at customs-district level: the U.S. Customs district of unlading. |
| district.code | string | |
| district.name | string or null | |
| cells | object | The data behind the bands. |
| cells.n_cells | integer | |
| cells.weight_kg_covered | number | |
| next_refresh | string | |
| object | string | |
| hs_description | string | |
| source_tier | string | |
| measures | object |
Fields are read from a real response captured 2026-11-04. Optional fields may be absent in other responses.
Errors
- 400 invalid request
- 401 missing or bad key
- 403 not in your plan
- 429 rate limited, see Retry-After
- 402 payment required
- 404 not found
- 500 server error, retry with backoff
- 503 temporarily unavailable
- 5xx retry with backoff
This endpoint reports errors as RFC 9457 problem details (application/problem+json) with a stable code and a request_id.