---
title: "GetShippingRates"
method: GET
path: "/api/supply-chain/v1/get-shipping-rates"
tags: ["SupplyChainService"]
---

# GetShippingRates

`GET /api/supply-chain/v1/get-shipping-rates`

## Request

- Base URL: `https://api.worldmonitor.app`
- URL: `https://api.worldmonitor.app/api/supply-chain/v1/get-shipping-rates`
- Auth: one of:
  - API key in header `X-WorldMonitor-Key`
  - API key in header `X-Api-Key`

GetShippingRates returns current container shipping-rate indices; upstream_unavailable is set when the source could not be reached.

## Query parameters

- `jmespath` string

## Response `200`

OK

- WorldmonitorSupplyChainV1GetShippingRatesResponse
  - `indices` WorldmonitorSupplyChainV1ShippingIndex[]
    - `indexId` string
    - `name` string
    - `currentValue` number, double
    - `previousValue` number, double: Legacy display field. For the Shanghai Shipping Exchange indices (SCFI, CCFI) this DELIBERATELY falls back to the current level when the exchange published no comparable prior, so it cannot distinguish "unchanged week" from "no prior at all". Use prior_period_value for decision work.
    - `changePct` number, double: Legacy display field with the same fail-OPEN fallback as previous_value (a flat 0 when no prior exists). Use period_change_pct for decision work.
    - `unit` string
    - `history` WorldmonitorSupplyChainV1ShippingRatePoint[]
      - `date` string
      - `value` number, double
    - `spikeAlert` boolean
    - `periodChangePct` number, double: Decision-grade period-over-period move in percent (#6066). Optional so a missing reading is ABSENT from the response rather than collapsing to 0, which would render identically to a real unchanged period. Fails CLOSED: present only when the publisher reported its own percentage or a comparable prior-period level. A single index level never becomes a change. The endpoint normalizes a missing reading to ABSENT (canonical ProtoJSON: serializers omit, parsers treat null as unset) — a plain JSON client can still tell absent from null, so read absence, not null.
    - `periodChangeBasis` 'PERIOD_CHANGE_BASIS_UNSPECIFIED' | 'publisher_reported' | 'derived_from_prior_period_level': Basis for the decision-grade period-over-period change.
    - `priorPeriodValue` number, double: The publisher's own prior-period index level that period_change_pct was measured against. Absent when the publisher shipped no comparable prior.
    - `priorPeriodDate` string: Observation date (YYYY-MM-DD) of prior_period_value, as published. Absent whenever prior_period_value is absent, or when the publisher dated the level only implicitly.
  - `fetchedAt` string
  - `upstreamUnavailable` boolean

## Other responses

- `400`: Validation error
- `401`: Missing or invalid API key.
- `403`: API access requires an active subscription (the API key's subscription is inactive or expired).
- `429`: Rate limit exceeded.
- `503`: Service unavailable. Billing-verification responses include code and X-Billing-Verification; other gateway infrastructure failures use the generic GatewayError shape.
- `default`: Gateway or handler error response.

---

[API](https://skmtc.dev/worldmonitor/apis/worldmonitor-api.md) · [All operations](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/revisions/e3dc8463a5c9?raw)
