Service-level agreements in logistics are only as strong as your visibility. When a shipment misses a delivery window, an FTL quote expires, or a fuel-surcharge index shifts under your feet, the clock to file and recover penalties begins. But data to prove SLA breaches is fragmented: diesel indexes come from one feed, carrier safety and authority from another, congestion context from a third, live rates from a fourth, and disruption alerts from yet another. Stitching all of this together creates brittle systems, unclear ownership, and—worst of all—delays that cause you to miss penalty-recovery windows.
This post lays out a practical, technical blueprint for how enterprise supply chain teams and platform developers can use FreightPulse to build an SLA monitoring and penalty recovery workflow end-to-end. We will collect the signals that matter (fuel prices, live US truckload rates, port congestion context, carrier verifications, and natural-disruption alerts), normalize them into one consistent data model, and show how to compute KPIs and exceptions that trigger investigations and recoveries. You will see concrete cURL, JavaScript, and Python examples, complete JSON responses, and guidance on interpreting each field for SLA logic.
If your current SLA playbook involves screenshotting emails, exporting AIS maps, and reconciling spreadsheets across EIA and FMCSA sources, you will leave this article with a step-by-step migration plan to a single API surface. With FreightPulse, teams reduce the time-to-evidence for carrier penalties, automate exception workflows, and improve the defensibility of claims with auditable, timestamped data.
Why FreightPulse
FreightPulse consolidates the logistics intelligence most teams scatter across five separate providers into one REST API. For SLA monitoring and penalty recovery, that consolidation translates into fewer integration projects, consistent data schemas, and faster exception handling. Here are the key reasons it matters:
- Unified data model across critical logistics data. With FreightPulse, the JSON structure for EIA fuel prices, live US FTL freight rate quotes, historical series, carrier lookups, port congestion metrics, and natural-disruption alerts follows a consistent response shape: {"success": true/false, "data": {...}, "error": "..."} This uniformity simplifies parsing, validation, and storage in your event pipelines, especially when building dashboards or triggering incident workflows.
- Context-aware exception detection. A missed pickup can be attributable to severe weather, an earthquake near a port, or a carrier with an unfavorable safety rating. FreightPulse lets you cross-check disruptions and carrier status at the moment you detect SLA drift. Rather than over-penalizing carriers in force majeure situations—or missing a legitimate claim—you can layer disruption evidence directly into your SLA rules.
- Operational agility with real-time and lagged context. Live US FTL quotes (via Warp) help you determine what a realistic re-rate would have been for a given lane on the date of service, while lagged port congestion (7-day average against a 90-day baseline) provides a reasonableness check for ocean-adjacent delays. You get timely rates where it counts and calibrated congestion context without paying for a full AIS subscription just to benchmark port conditions.
- Frictionless exploration for developers and analysts. FreightPulse supports exploration without friction and enables you to try endpoints quickly, then embed them directly into production flows. The same base URL and response shape apply across all endpoints, so you can stand up prototypes fast and harden them with the same operational patterns (retries, circuit breakers, metric logging) across your data surface.
Quick Start
All FreightPulse endpoints are accessed under the base URL: https://freightpulsehq.com/api/v1. Each request returns a standard JSON envelope with a success flag, a data object, and an optional error string.
Below, we’ll fetch national diesel and gasoline price intelligence. Fuel indices often underpin fuel-surcharge components of SLAs and chargebacks, so this is a natural “first request” to power a surcharge calculator and support claims with authoritative data.
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
Example response:
{
"success": true,
"data": {
"timestamp": "2026-07-30T12:00:00Z",
"source": "EIA (U.S. Energy Information Administration)",
"currency": "USD",
"unit": "gallon",
"data": {
"diesel": {
"national_average": 3.847,
"change_week": -0.023,
"change_percent": -0.6,
"regions": {
"east_coast": 3.912,
"midwest": 3.756,
"gulf_coast": 3.623,
"rocky_mountain": 3.891,
"west_coast": 4.456,
"california": 4.892
},
"historical": {
"30d_avg": 3.82,
"90d_avg": 3.75,
"yoy_change_percent": -8.2
}
},
"gasoline": {
"national_average": 3.156,
"historical": {
"30d_avg": 3.1,
"90d_avg": 3.05,
"yoy_change_percent": 1.1
}
}
}
}
}
Key fields for SLA workflows:
- timestamp: Use this to anchor surcharge calculations to the correct index week.
- diesel.national_average and diesel.regions.*: Apply your contracted FSC (fuel surcharge) formula across national or PADD regions depending on the SLA clause.
- diesel.historical.*: Useful for charting variance and arguing reasonableness when reconciling a surcharge dispute.
- gasoline.*: If your SLA includes gasoline-linked accessorials (e.g., last-mile fleet benchmarks), this provides the analogous series.
Core Endpoints for SLA Monitoring and Penalty Recovery
This section focuses on the endpoints you will use to power SLA alerts, root-cause analysis, and claim preparation. We will cover all key endpoints, outline parameters, include cURL examples, show complete JSON, and explain how to apply fields in production.
1) Fuel Prices — GET /fuel-prices
Purpose: Compute and validate fuel surcharges per your SLA; analyze week-over-week shifts for penalty escalation or baseline recalibration.
Key parameters: None required. The endpoint returns national and regional series with historical aggregates.
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices"
Response (abridged fields previously shown) is already provided above. In SLA code, persist diesel.national_average and timestamp to your rates table keyed by pickup_date week. If your surcharge formula uses bracketed ranges, compute bracket cutoffs from the returned value and store for audit.
Operational tips:
- Cache by timestamp to prevent redundant recomputations in a batch run.
- If the SLA references PADD regions, index the regions map by internal region keys for fast lookups.
2) Live Freight Rates — GET /freight-rates
Purpose: Validate the market reasonableness of a contracted FTL rate on the service date, estimate re-brokered costs for recovery, or produce an alternative quote to mitigate further delay after an SLA breach.
Key parameters:
- mode: trucking (default) | ocean | air
- origin_zip and destination_zip: required for trucking
- pickup_date, qty, total_weight_lb: optional but useful to contextualize quotes
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210&pickup_date=2026-08-24&total_weight_lb=36000"
Example response:
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 7207.92,
"transit_days": 4,
"pickup_date": "2026-08-24",
"delivery_date": "2026-08-28"
}
}
Field meanings and SLA linkage:
- price_usd: Benchmark against your contracted rate on the same lane/date to support claims of excessive re-rate or to demonstrate your mitigation efforts.
- transit_days and delivery_date: Compare to contracted service times; if quoted transit is shorter than actual, you have additional evidence for delay attribution.
- source: Provenance for your audit package.
Implementation tips:
- If required trucking parameters are missing, this endpoint returns a success envelope with "available": false rather than an error. Treat this as a soft failure and log a data-quality alert.
- Normalize pickup_date to the SLA’s time zone prior to rate checks to avoid day-boundary errors.
3) Port Congestion — GET /port-congestion
Purpose: Establish context for ocean-adjacent delays in your network and determine whether a carrier’s delay aligns with broader port conditions. This is important in claim preparation; when congestion is genuinely elevated, you may shift from penalty to exception handling—or escalate penalties when congestion is low and delays lack exogenous justification.
Important note: Port congestion here is a lagged approximation derived from a 7-day average of port calls against a 90-day baseline, with a typical lag of about 6–7 days. It is not a live AIS vessel-wait-time tracker. Use it to support trend-aware decisions, not minute-by-minute operations.
Key parameters:
- port: port name or LOCODE (e.g., USLAX)
- country: country name or ISO3
- region: continent
- congestion: optional filter (low | moderate | high)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/port-congestion?port=USLAX"
Example response:
{
"success": true,
"data": {
"results": [
{
"port": "Los Angeles-Long Beach",
"locode": "US LAX",
"country": "United States",
"congestion": "moderate",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 8.7,
"baseline_avg_portcalls_per_day": 10.2,
"ratio_vs_baseline": 0.85
}
}
]
}
}
Field meanings:
- congestion: A categorical synthesis to use in rules. For example, “if congestion == high, downgrade minor delay penalties to warnings.”
- ratio_vs_baseline: A numeric anchor for dashboards; values below 1.0 suggest reduced port activity relative to baseline (potential operational slowdowns), above 1.0 suggests increased activity.
- as_of: Use to align with shipment event dates—only compare to shipments whose milestone date is on or before as_of.
4) Carrier Lookups — GET /carriers
Purpose: Validate carrier legitimacy and safety posture at dispatch time and during post-incident analysis. When a breach occurs, your audit packet should include carrier authority details and safety rating pulled at the time of tender or pickup.
Key parameters:
- q: required, a DOT number or legal name (for trucking), or an FMC org number/name (for ocean)
- type: trucking (default) | ocean | air (air returns available: false)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/carriers?q=54283&type=trucking"
Example response:
{
"success": true,
"data": {
"type": "trucking",
"query": "54283",
"results": [
{
"dot_number": 54283,
"legal_name": "SWIFT TRANSPORTATION COMPANY OF ARIZONA LLC",
"status": "active",
"safety_rating": "S",
"drivers": 12883,
"address": {
"city": "Phoenix",
"state": "AZ",
"country": "US"
}
}
]
}
}
Field meanings:
- status: Authority status at lookup time; capture this during tender and keep a copy for the SLA record.
- safety_rating: Compare against internal thresholds to require extra tracking or to adjust penalties for certain classes of incidents.
- drivers: Scale proxy; sometimes part of your risk-scoring for complex SLAs.
5) Disruptions — GET /disruptions
Purpose: Detect and attribute natural hazards—cyclones, earthquakes, severe weather, floods, etc.—near relevant shipment corridors and ports to explain or mitigate SLA violations. The feed consolidates alerts from GDACS, USGS, and NOAA/NWS and can be filtered by port radius.
Key parameters:
- type: cyclone | earthquake | flood | volcano | drought | wildfire | severe_weather
- severity: low | moderate | high
- country: country filter
- port: port identifier; filters results by distance (port-centric radius; tighter for US weather)
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high"
Example response:
{
"success": true,
"data": {
"results": [
{
"id": "gdacs:TC:1001305",
"type": "cyclone",
"severity": "moderate",
"title": "Tropical Cyclone SAUDEL-26",
"country": "Japan",
"starts_at": "2026-08-18T12:00:00+00:00",
"source": "GDACS"
}
]
}
}
Field meanings:
- type and severity: Map to SLA exception categories. For example, allow automatic exception if severity is high.
- starts_at: Compare against pickup and delivery windows to determine influence on performance.
- port filter: Use for shipments tied to specific ports; the endpoint will handle distance-based scoping.
6) Historical Series — GET /historical
Purpose: Chart trends and compute baselines for SLA thresholds—e.g., average diesel price across 30/90 days, or port congestion trend lines for Shanghai, Singapore, Rotterdam, or Los Angeles-Long Beach.
Key parameters:
- metric: fuel_price_diesel_national | fuel_price_gasoline_national | port_congestion:<portid>
- period: 30d (default) | 90d | 1y
curl -H "X-API-Key: YOUR_API_KEY" \
"https://freightpulsehq.com/api/v1/historical?metric=fuel_price_diesel_national&period=30d"
Example response:
{
"success": true,
"data": {
"metric": "fuel_price_diesel_national",
"period": "30d",
"series": [
{ "date": "2026-07-27", "value": 5.257 },
{ "date": "2026-08-03", "value": 5.343 }
]
}
}
Field meanings:
- series: Use to compute moving averages, volatility bands, or to backtest your FSC logic against historical changes.
- metric and period: Important for your observability dashboards; include both on chart labels and API logs.
From Signals to SLA Workflows: Architecture, Implementation, and Best Practices
Consolidating data is only half the battle; you need operational reliability to ensure your SLA alerts are accurate and timely. Below are implementation patterns to move from raw signals to dependable business outcomes.
Reference Architecture
- Ingestion layer: A lightweight scheduler or message queue triggers requests to FreightPulse endpoints on a cadence aligned to data freshness (e.g., daily for fuel prices and historical series, multiple times per day for disruptions and rates on active lanes).
- Normalization and storage: Parse the standard response envelope and persist data.data to your warehouse with clear keys: metric/date for historical, port/as_of for congestion, dot_number and timestamp for carriers, lane/date for rates.
- SLA engine: A rules service that evaluates shipments against thresholds—e.g., on-time pickup %, transit variance vs quoted days, surcharge calculation vs index—and cross-references disruptions and congestion context.
- Alerting and recovery: When a breach occurs, generate an incident object that includes the source JSON payloads from FreightPulse (timestamped) for audit, then route to the appropriate queue for carrier notification and penalty documentation.
Resilience and Observability
- Retries with backoff: Implement idempotent retries for transient network errors, using exponential backoff. Respect the endpoint semantics: if /freight-rates returns available:false for missing params, do not retry—fix the input.
- Circuit breakers: If a dependent system is degraded, open a circuit and serve cached data (for indices and historical series) while queuing mutations for later.
- Health checks: Periodically call a low-cost endpoint (e.g., /fuel-prices) to verify connectivity and schema stability, logging the timestamp and top-level fields to detect drift early.
- Audit logs: Persist the entire response JSON for incidents that escalate to penalties; this speeds up negotiation cycles.
Data Modeling Tips
- Temporal joins: Always join shipment milestones to data whose “as_of” or “timestamp” is on or before the milestone time. This protects you from accidental look-ahead bias in claim packages.
- Lane normalization: Normalize zips to 5-digit strings. For cross-border ocean/air quotes, standardize country codes and ports for consistent indexing.
- Severity hierarchies: Map disruption severity to your internal exception taxonomy and codify it in your SLA engine. Document exceptions in code comments and runbooks.
Interpreting Lagged Data
Use port congestion carefully. Because it is a lagged 7-day average against a 90-day baseline, the correct application is trend and context, not minute-by-minute excuse-making. For penalties related to ocean delays, evidence packets should include:
- Congestion category (low/moderate/high) and ratio_vs_baseline with the as_of date.
- Correlated disruption alerts in the relevant geography or port radius, if applicable.
- Live re-rate or alternative routing cost from /freight-rates to quantify mitigation steps.
End-to-End Examples with Code
Example 1: JavaScript (Node.js) — Validate FSC and Assemble Evidence Package
const fetch = require('node-fetch');
async function getFuel() {
const res = await fetch('https://freightpulsehq.com/api/v1/fuel-prices', {
headers: { 'X-API-Key': process.env.FP_API_KEY }
});
const json = await res.json();
if (!json.success) throw new Error(json.error || 'Fuel API failed');
return json.data;
}
async function getQuote(originZip, destZip, pickupDate) {
const url = new URL('https://freightpulsehq.com/api/v1/freight-rates');
url.searchParams.set('mode', 'trucking');
url.searchParams.set('origin_zip', originZip);
url.searchParams.set('destination_zip', destZip);
url.searchParams.set('pickup_date', pickupDate);
const res = await fetch(url.toString(), {
headers: { 'X-API-Key': process.env.FP_API_KEY }
});
const json = await res.json();
if (!json.success) throw new Error(json.error || 'Rates API failed');
return json.data;
}
(async () => {
const fuel = await getFuel();
const diesel = fuel.data.diesel.national_average;
const weekTs = fuel.timestamp;
const quote = await getQuote('10001', '90210', '2026-08-24');
const evidence = {
fuel_index: { diesel, timestamp: weekTs },
live_quote: quote
};
console.log(JSON.stringify(evidence, null, 2));
})();
This snippet fetches the week’s diesel index, pulls an FTL quote for a lane, and constructs an evidence object that can be attached to a claim. The same pattern can be used to add congestion and disruption context.
Example 2: Python — SLA Exception Attribution Using Disruptions and Port Congestion
import os
import requests
from datetime import datetime
API = "https://freightpulsehq.com/api/v1"
HEADERS = {"X-API-Key": os.getenv("FP_API_KEY")}
def get_congestion(port):
r = requests.get(f"{API}/port-congestion", headers=HEADERS, params={"port": port})
j = r.json()
if not j.get("success"):
raise RuntimeError(j.get("error", "congestion error"))
return j["data"]["results"]
def get_disruptions(port, severity="high"):
r = requests.get(f"{API}/disruptions", headers=HEADERS, params={"port": port, "severity": severity})
j = r.json()
if not j.get("success"):
raise RuntimeError(j.get("error", "disruptions error"))
return j["data"]["results"]
def attribute_exception(shipment):
# shipment: { "milestone_dt": "2026-08-20T10:00:00Z", "port": "USLAX" }
milestone_dt = datetime.fromisoformat(shipment["milestone_dt"].replace("Z","+00:00"))
cong = get_congestion(shipment["port"])
disruptions = get_disruptions(shipment["port"])
cong_context = None
if cong:
c = cong[0]
cong_context = {
"congestion": c["congestion"],
"as_of": c["as_of"],
"ratio_vs_baseline": c["metrics"]["ratio_vs_baseline"]
}
disrupt_context = [
{
"id": d["id"],
"type": d["type"],
"severity": d["severity"],
"starts_at": d["starts_at"]
}
for d in disruptions
]
return {
"shipment": shipment,
"congestion": cong_context,
"disruptions": disrupt_context
}
shipment = {"milestone_dt": "2026-08-20T10:00:00Z", "port": "USLAX"}
print(attribute_exception(shipment))
This script assembles a decision package for an SLA engine. Your rules might read: “If congestion == high as_of prior to milestone and there is a high-severity disruption within the port radius, downgrade penalty to ‘for review’.”
Error Handling, Validation, and Troubleshooting
FreightPulse returns consistent error envelopes. Implement robust validation to avoid false-positive SLA alerts due to bad inputs or soft failures.
Common Error Shapes and Strategies
- Standard error body: {"success": false, "error": "Human-readable message."} Always check success before reading data.
- Missing parameter on /carriers: A 422 indicates q is required. Validate inputs upstream and return user-friendly messages.
- Soft availability: For /freight-rates, if required lane parameters are missing, you will receive HTTP 200 with an available:false data shape instead of a hard error. Treat this as a validation failure, not a transport error.
Example error response:
{
"success": false,
"error": "Missing required parameter: q"
}
Validation checklist:
- Sanitize and normalize postal codes and dates prior to calls.
- Check for empty results arrays (e.g., on /port-congestion or /disruptions filters) and branch logic accordingly.
- Record the as_of and timestamp fields for all time-series or lagged datasets to avoid misalignment with shipment event times.
Real-World Use Cases
1) Automated Fuel-Surcharge Calculator for Contract Reconciliation
Teams build a nightly job that pulls /fuel-prices and /historical to compute FSC per-lane and per-week, applying the SLA’s bracket logic. The system then cross-checks BOLs and invoices to surface over/undercharges automatically, attaching the exact weekly index and a 30-day trend from /historical as evidence for adjudication.
2) Port Congestion + Disruption Context Dashboard for a Freight Forwarder
A forwarder builds an internal web dashboard that overlays /port-congestion signals for curated ports with /disruptions filtered by port radius. When a customer raises a delay claim, the operator pulls the as_of congestion category and any high-severity alerts near the port for the relevant window. This supports either penalty enforcement (low congestion, no alerts) or exception approval (high congestion, severe weather).
3) Carrier Vetting Tool for a 3PL
A 3PL implements a pre-tender check using /carriers to validate DOT status, safety rating, and driver count for any carrier proposed by a broker desk. If a carrier fails thresholds, the tool auto-requests a new carrier. When incidents occur, the tool includes the original /carriers lookup payload in the claim packet to demonstrate due diligence.
4) Live Re-Rate and Mitigation Engine
A TMS plugin integrates /freight-rates to fetch current US FTL quotes for lanes at risk of missing appointment windows. If the SLA penalty risk exceeds a configurable threshold, the system proposes a re-broker with the quoted price_usd and projected delivery_date to reduce overall exposure. The decision and supporting quote JSON are archived with the shipment record.
5) Shipment Tracker with Hazard Alerts
A shipment visibility app subscribes to events from its own tracking system and polls /disruptions with type=severe_weather near stops and ports. If a high-severity event is detected with starts_at before the ETA window, the app proactively alerts operations, applies a conditional exception flag in the SLA ledger, and begins collecting supporting context for a potential claim.
Detailed Field-by-Field Walkthroughs
Fuel Prices: Applying to FSC
- currency/unit: Ensure surcharge math uses the same units (USD per gallon). If your SLA references liters, convert once and store a normalized copy.
- change_week/change_percent: Use to trigger alerts when fuel volatility crosses a boundary; consider adjusting tender strategies for lanes with thin margins.
- regions: Map to PADD logic. If your contracts differ by region, apply the correct key to each shipment based on origin or pickup terminal.
Freight Rates: Interpreting Quotes
- mode/service: Persist for audit and dashboard segmentation.
- pickup_date/delivery_date: Evaluate variance vs actual milestones for “what-if” analyses—e.g., “Had we re-brokered on pickup day, would we have avoided the penalty?”
- transit_days: When SLAs use business days, convert calendar days to business days consistently in your SLA engine.
Port Congestion: Trend Reasoning
- recent_avg_portcalls_per_day vs baseline_avg_portcalls_per_day: The ratio approximates a congestion signal, but the absolute magnitude also hints at seasonal patterns. Store both for richer analyses.
- cat vs numeric: Use congestion’s categorical label for rules and ratio for analytics/sensitivity testing.
Carriers: Compliance and Risk
- status and safety_rating: Snapshot at tender and again at incident time when building the claim file; regulators and carriers often ask for “state at time of action.”
- drivers: Use only as a directional indicator; do not over-interpret as actual capacity on a given day.
Disruptions: Event Matching
- type: Some SLAs enumerate force majeure categories. Ensure your mapping is traceable from the raw value.
- source: Include in your evidence to strengthen provenance, especially for severe events.
cURL Gallery: Multiple Endpoints in One SLA Script
Below is a compact script using bash and jq to fetch core signals for a single shipment lane and snapshot them into JSON files that your SLA job can ingest.
# Fuel prices
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/fuel-prices" | jq '.' > fuel.json
# Live FTL rate for lane 10001 - 90210
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/freight-rates?mode=trucking&origin_zip=10001&destination_zip=90210&pickup_date=2026-08-24" \
| jq '.' > rate.json
# Port congestion for USLAX
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/port-congestion?port=USLAX" | jq '.' > congestion.json
# High-severity disruptions near USLAX
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/disruptions?port=USLAX&severity=high" | jq '.' > disruptions.json
# Carrier lookup
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/carriers?q=54283&type=trucking" | jq '.' > carrier.json
# Historical diesel prices (30d)
curl -s -H "X-API-Key: $FP_API_KEY" \
"https://freightpulsehq.com/api/v1/historical?metric=fuel_price_diesel_national&period=30d" | jq '.' > historical_fuel.json
With these artifacts in hand, your SLA engine can compute current and historical surcharges, validate mitigation quotes, cross-check congestion and hazards, and attach carrier compliance snapshots to any claim.
Complete JSON Example Set
For convenience, here are additional complete sample responses you can paste into tests and mocks.
Fuel Prices (complete envelope)
{
"success": true,
"data": {
"timestamp": "2026-07-30T12:00:00Z",
"source": "EIA (U.S. Energy Information Administration)",
"currency": "USD",
"unit": "gallon",
"data": {
"diesel": {
"national_average": 3.847,
"change_week": -0.023,
"change_percent": -0.6,
"regions": {
"east_coast": 3.912,
"midwest": 3.756,
"gulf_coast": 3.623,
"rocky_mountain": 3.891,
"west_coast": 4.456,
"california": 4.892
},
"historical": {
"30d_avg": 3.82,
"90d_avg": 3.75,
"yoy_change_percent": -8.2
}
},
"gasoline": {
"national_average": 3.156,
"historical": {
"30d_avg": 3.1,
"90d_avg": 3.05,
"yoy_change_percent": 1.1
}
}
}
}
}
Freight Rates (trucking)
{
"success": true,
"data": {
"mode": "trucking",
"service": "FTL (53' dry van)",
"source": "Warp",
"price_usd": 7207.92,
"transit_days": 4,
"pickup_date": "2026-08-24",
"delivery_date": "2026-08-28"
}
}
Port Congestion
{
"success": true,
"data": {
"results": [
{
"port": "Los Angeles-Long Beach",
"locode": "US LAX",
"country": "United States",
"congestion": "moderate",
"as_of": "2026-08-14",
"metrics": {
"recent_avg_portcalls_per_day": 8.7,
"baseline_avg_portcalls_per_day": 10.2,
"ratio_vs_baseline": 0.85
}
}
]
}
}
Carrier Lookup (trucking)
{
"success": true,
"data": {
"type": "trucking",
"query": "54283",
"results": [
{
"dot_number": 54283,
"legal_name": "SWIFT TRANSPORTATION COMPANY OF ARIZONA LLC",
"status": "active",
"safety_rating": "S",
"drivers": 12883,
"address": {
"city": "Phoenix",
"state": "AZ",
"country": "US"
}
}
]
}
}
Disruptions
{
"success": true,
"data": {
"results": [
{
"id": "gdacs:TC:1001305",
"type": "cyclone",
"severity": "moderate",
"title": "Tropical Cyclone SAUDEL-26",
"country": "Japan",
"starts_at": "2026-08-18T12:00:00+00:00",
"source": "GDACS"
}
]
}
}
Historical (diesel)
{
"success": true,
"data": {
"metric": "fuel_price_diesel_national",
"period": "30d",
"series": [
{ "date": "2026-07-27", "value": 5.257 },
{ "date": "2026-08-03", "value": 5.343 }
]
}
}
FAQ
How often do FreightPulse fuel prices update?
Fuel prices reflect the latest EIA data and include national and PADD-region breakdowns. We recommend refreshing your surcharge calculations on the same cadence as your SLA references (typically weekly) and recording the timestamp in your surcharge ledger for auditability.
Can I look up ocean carriers as well as trucking carriers?
Yes. The /carriers endpoint supports type=trucking or type=ocean lookups by DOT/org number or name. Air lookups are currently not available and return an available:false style response when requested.
Does the port congestion data reflect real-time vessel wait times?
No. Port congestion is a lagged approximation: a 7-day average of port calls against a 90-day baseline with a typical 6–7 day delay. Use it for trend and context in SLA decisions, not real-time operational dispatch.
Can I filter disruptions by severity or geography around a specific port?
Yes. Use the type, severity, and port parameters on /disruptions to focus on the hazards that matter to your shipments. The port filter applies a distance-based radius so you only see relevant events close to the port.
How should I store these responses to support audit trails for penalty recovery?
Persist the complete JSON responses with their timestamps/as_of fields, keyed to the shipment ID and milestone events. Store derived calculations (e.g., surcharge) alongside the raw source data so you can reproduce outcomes during negotiations.
Conclusion + CTA
SLA monitoring and penalty recovery succeed when you can rapidly assemble defensible, timestamped evidence: the index that set your surcharge, the live lane quote that framed a mitigation option, the port trend that contextualized a delay, the carrier’s status at tender time, and any natural-disruption alerts that explain variance. With FreightPulse, you get these critical signals behind a single REST API and a consistent JSON model—eliminating the multi-vendor fragility that slows down decisions and undermines claims.
The practical steps in this post—normalizing time, joining context by as_of, snapshotting complete JSON, layering rules for exceptions, and operationalizing retries and health checks—will take you from proof-of-concept to production-grade SLA governance. Whether you are a developer embedding this into a TMS, a 3PL building internal tools, or an enterprise analytics team automating audits, the path from zero to results is short and clear.
Start consolidating your logistics intelligence today: explore the endpoints, wire them into your pipeline, and ship your first SLA dashboard this week. Try FreightPulse for free and turn data into faster recoveries, fewer disputes, and stronger carrier relationships.