PortPulsePortPulse

Platforms & Integrators

Add port-level congestion & momentum to your TMS/BI with stable SLAs. One schema, reproducible methods, audit-friendly freshness.

Embed PortPulse API into platforms with standardized metrics and SLAs
Standardized metrics, clear SLOs, and partner-friendly licensing accelerate time-to-market.

Pain

  • DIY port definitions cause inconsistency across regions.
  • Coverage gaps and stale snapshots break SLAs.
  • CSV/JSON mismatch and missing strong ETag/304.

How we help

  • Unified schema & comparable metrics across ports.
  • Freshness SLO (p95 ≤ 2h) with traceable timestamps.
  • Resale-friendly licensing and partner support.

Result KPIs

  • Faster time-to-market (weeks → days).
  • Contractual SLO with monitoring & alerts.
  • Lower maintenance cost vs. DIY pipelines.

A partner story

A TMS vendor serving forwarders needed reliable port congestion across APAC, EU, and NA. Their DIY scrapers produced inconsistent “wait time” fields and frequent outages. PortPulse replaced ad-hoc ingest with a contract-first API: the same definitions for avg_wait_hours, congestion_score, and dwell across ports, backed by freshness SLO and strong caching. The integration went live in days—partners now ship a single widget across regions with unified thresholds and alerts.

curl -H "X-API-Key: DEMO_KEY" \
"https://api.useportpulse.com/v1/ports/USLAX/trend?days=30&fields=date,avg_wait_hours,congestion_score"

JSON and CSV return the same definitions. CSV ships strong ETag for conditional GETs (304).

Sample embedded trend widget showing comparable congestion across ports
Example “trend” widget embedded in a platform. One schema across ports → one reusable component.

Integration pattern — server fetch

Use conditional requests with ETag to keep pulls fast and cost-efficient.

GET /v1/ports/SGSIN/snapshot
If-None-Match: "etag-from-last-call"

200 OK
ETag: "abc123"
as_of: "2025-09-08T12:00:00Z"
...

304 Not Modified (no body)

Integration pattern — widget config

Cross-port thresholds with a normalized congestion_score make alerts consistent.

{
  "ports": ["USLAX","NLRTM","SGSIN"],
  "window": "30d",
  "fields": ["date","avg_wait_hours","congestion_score"],
  "alert": { "threshold": 0.65, "consecutive_days": 5 }
}

API endpoints (v1)

  • GET /v1/health
  • GET /v1/meta/sources
  • GET /v1/ports/{code}/overview
  • GET /v1/ports/{code}/trend
  • GET /v1/ports/{code}/snapshot
  • GET /v1/ports/{code}/dwell
  • GET /v1/ports/{code}/alerts
  • GET /v1/hs/{code}/imports (beta)

Contract-first design: v1 is frozen; breaking changes go to v1beta with a ≥90-day deprecation window.

Comparable by design

Definitions for avg_wait_hours, queue_length, berth_efficiency, and a normalized congestion_score. No more apples-to-oranges across regions.

Transparent SLO

Freshness p95 ≤ 2h, edge p95 < 300ms with ≥60% cache-hit target. Timestamps and ETags exposed for audit.

Partner-friendly

Redistribution terms, staged rollouts, sandbox keys, and assisted QA to speed up your GTM.

Ready to integrate?

Start a 14-day evaluation (up to 5 ports) or talk to us about bundle/redistribution terms.

FAQ

Can we redistribute the data in our product?

Yes. We offer partner licensing for redistribution. Talk to us for bundle pricing and SLO alignment.

How do you measure freshness?

Each response includes as_of / last_updated. Our SLO targets freshness p95 ≤ 2h across ports, with monitoring and alerts.

Do JSON and CSV match exactly?

Yes. CSV is a first-class contract with strong ETag/304 support for cache-friendly pulls.