Build with Dunvale cited logistics data.
REST API, RSS, JSON-LD, source manifests, report feeds, transaction keys, and authenticated machine surfaces. Public discovery is open; metered access centers on scoped evidence requests, map snapshots, source-currentness readbacks, reusable account keys, and a calculator that prices Dunvale against self-parsing cost.

API integration surface
Contracts, pricing, citations, and source freshness stay discoverable before implementation.
Quickstart
The fastest path is the public API and discovery files: no authentication, ideal for evaluating Dunvale source coverage, API-readable metadata, and pricing readiness.
curl https://api.dunvale.com/health
curl https://api.dunvale.com/public/snapshot
curl 'https://api.dunvale.com/public/reports?type=morning_briefing&limit=5'Border Pulse commercial coverage
Source-policy coverage for border teams
Border PulseCoverage options
4
Listed service
1
Custom quote
2
Planned
1
Pricing
Laredo has a listed monthly service. Otay Mesa and Detroit/Windsor are available for custom quotes.
Next step
Use the API for public evaluation or contact Dunvale for account setup.
Commercial controls
Account delivery, access keys, billing, alerts, and automated workflows require approved setup.
Coverage detail
Laredo Border Pulse
commercial ready; listed price; $199/month; 14 facts.
Source-fact-ready detail and disclosed gap context available through the public API.
Otay Mesa / San Diego planned coverage
custom review ready; not yet priced; 16 facts.
Source-fact-ready detail and disclosed gap context available through the public API.
Otay Mesa custom coverage review
custom review available; custom quote; 16 facts.
Source-fact-ready detail and disclosed gap context available through the public API.
Detroit / Windsor custom coverage review
custom review available; custom quote; 21 facts.
Source-fact-ready detail and disclosed gap context available through the public API.
Market context
4 operating context families from 268 reports.
wait-volatility-ops, risk-overlay-weather-aviation, trade-compliance-evidence, data-gap-transparency
wait volatility ops
2 reviewed examples available for commercial scoping.
npm run validate:report-derived-facts
risk overlay weather aviation
2 reviewed examples available for commercial scoping.
npm run validate:report-derived-facts
trade compliance evidence
1 reviewed examples available for commercial scoping.
npm run validate:report-derived-facts
data gap transparency
1 reviewed examples available for commercial scoping.
npm run validate:report-derived-facts
Laredo Border Pulse
API detail available for account and agent workflows.
Otay Mesa / San Diego planned coverage
API detail available for account and agent workflows.
Otay Mesa custom coverage review
API detail available for account and agent workflows.
Detroit / Windsor custom coverage review
API detail available for account and agent workflows.
For programmatic access to published wait rows, source status, evidence retrieval, exports, entitled report surfaces, and private delivery, use a scoped API key. Standard agent evidence and map packets are priced at $0.0059 when metered access is enabled. Check sourceClaimAudit before source-level currentness or quality claims; raw-current, non-live, stale, no-row, planned, future, parser-policy-missing, parser-lagged, degraded-run, and embedding-backlog rows stay context-only unless returned packet evidence proves exact claim use.
curl https://api.dunvale.com/v1/border/laredo_world_trade/current \
-H "Authorization: Bearer dnv_live_..."Authentication
Authenticated endpoints require a bearer token in the Authorization header. Keys are stored securely, scoped to a tier and account, and rotated by request.
Authorization: Bearer dnv_live_abc123...Public endpoints under /public/* need no auth and are rate-limited per IP. The /health and /public/about endpoints are intentionally unrestricted so monitoring tools and AI agents can introspect the service freely.
API key types
Dunvale supports long-lived account keys for customers and partner systems, plus transaction-scoped keys for metered one-off API sessions, exports, and machine settlement flows. Both use the same bearer header, so clients do not need separate integration code.
| Type | Use | Controls |
|---|---|---|
| account | Customer integrations, partner agents, dashboards, TMS tools | Tier, daily limit, optional endpoint prefixes, manual rotation |
| transaction | One x402 settlement, one delegated tool session, one export, or one short-lived agent run | Expiry, max uses, endpoint prefixes, billing or x402 reference |
| operator | Approved Dunvale operations workflows | Enterprise tier, operator owned, revocable |
# account key
Authorization: Bearer dnv_live_partner_...
# transaction-scoped key
Authorization: Bearer dnv_txn_one-shot-map_...| Resource | Starting price | Use |
|---|---|---|
| Capability probe | Free | Discover modes, corpora, and endpoint shape |
| Evidence retrieval | $0.0059 | Structured citations and freshness for one scoped question |
| Map snapshot | $0.0059 | Source-fact-ready waits/alerts plus caveated raw map context for a bbox, zoom, corridor, or global view |
| Grounded answer | $0.0059 | Evidence retrieval plus model-generated answer |
| Report/export packet | $0.0059 | Larger report or structured export payload |
Rate limits
| Plan | Public requests | API key requests | Burst |
|---|---|---|---|
| Anonymous | 60 / minute / IP | — | Public only |
| Self-serve / Pro key | 60 / minute / IP | 600 / minute / key | Daily limit if set on key |
| Commercial | 60 / minute / IP | No per-minute limiter | Contract / key policy |
| Transaction key | 60 / minute / IP | Tier-derived | Expires, max uses, and scoped paths |
| Enterprise | 60 / minute / IP | No per-minute limiter | Negotiated SLA |
Rate limit headers are returned on every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Free vs metered access
Dunvale separates public discovery from metered operational access. Public pages and free feeds are built for evaluation, search, and AI discovery. Metered access starts with evidence transactions and expands into account scopes, private RSS, authenticated API access, structured data delivery, webhooks, historical licensing, and custom agent access.
| Tier | Access | Limits | Reports |
|---|---|---|---|
| Free | Public web, free reports, public RSS, manifest, OpenAPI, search/chat samples, x402 readiness | Public rate limited by IP. No private /v1 API key. | Public morning briefing, report snippets, source catalog, discovery files, and limited map. |
| Agent transaction | Token-efficient evidence packets, caveated map snapshots, grounded answers, and exports for autonomous agents | $0.0059 per standard metered resource. Use x402, transaction keys, account credits, or trials for settlement. | Scoped JSON evidence with citations, freshness, confidence, and settlement metadata. |
| Pro | Self-serve agent keys, transaction access, one operating evidence scope, private RSS, and email alerts | Private RSS token, Agent Basic key, and 24h Transaction Key access. | Account-scoped morning/midday intelligence, one operating scope, macro access where entitled. |
| Commercial | Team evidence scopes, authenticated REST API, webhooks, structured JSON, and represented regions with source-claim caveats | Tiered API key with commercial rate limits and webhook delivery. | All Pro access plus sector reports, team feeds, exports, and API snapshots. |
| Enterprise | Custom corridors, private entities, custom feeds, high-volume API, dedicated agent namespace | Negotiated API volume, SLA, custom data delivery, admin operations access where authorized. | Custom regional, sector, commodity, and scope-aware briefings plus historical licensing. |
| Agent x402 | Low-friction machine settlement rail for metered evidence resources | Use bundled USDC x402 or account credits for sub-cent discovery transactions; use account keys, credit packs, or invoices for larger volume. | Same evidence resources as transaction keys, metered per resource. |
Public endpoints
Public endpoints power the website and the email/RSS distribution. They're free to call, CORS-enabled for dunvale.com and any subdomain, and require no authentication.
/healthService health and source freshness/public/aboutMachine-readable product manifest for API clients/public/briefingsList recent daily briefings/public/briefings/:dateFetch a daily briefing by date/public/briefings/feed.xmlRSS feed for daily briefings/public/snapshotCaveated public snapshot with source-claim guidance/public/reportsList logistics reports (filter by type, scope, date)/public/reports/:type/:dateSingle national-scope report/public/reports/:type/:scope/:dateRegional or per-port scoped report/public/reports/feed.xmlAggregate RSS feed for public report discovery/public/reports/:type/feed.xmlRSS feed per report type/public/feedsJSON catalog of free and token-entitled RSS feeds/public/anomalies/recentRecent wait-spike review events/public/searchFull-text and regex search across reports, raw policy documents, and retired/raw community diagnostics with evidence-policy caveats/public/search/statusSearch index coverage and freshness status/public/border-pulse/packagesBorder Pulse commercial coverage options/public/border-pulse/buyer-packets/laredoLaredo service detail with sample delivery shapes and policy context/public/border-pulse/report-derived-facts/operator-reviewReport context for wait volatility, risk overlays, trade compliance, and data gaps/public/border-pulse/package-intent-preview/schemaBorder Pulse service interest schema/public/border-pulse/packages/:packageIdBorder Pulse detail service setup endpoint/public/border-pulse/packages/:packageId/intent-previewBorder Pulse intent service setup endpoint/public/border-pulse/packages/:packageId/handoff-templateBorder Pulse handoff service setup endpoint/public/border-pulse/packages/:packageId/acceptance-previewBorder Pulse acceptance service setup endpoint/public/border-pulse/packages/:packageId/source-gap-acceptance-previewBorder Pulse source gap service setup endpoint/public/border-pulse/packages/:packageId/quote-previewBorder Pulse quote service setup endpoint/public/border-pulse/packages/:packageId/delivery-previewBorder Pulse delivery service setup endpoint/public/border-pulse/packages/:packageId/entitlement-previewBorder Pulse entitlement service setup endpoint/public/border-pulse/packages/:packageId/activation-previewBorder Pulse activation service setup endpoint/public/border-pulse/packages/:packageId/operator-summaryBorder Pulse operator summary service setup endpoint/public/border-pulse/sample-payloadsReviewed Laredo sample replay plus priority custom-review request shapes/public/border-pulse/source-packs/otayOtay Mesa coverage detail/public/border-pulse/source-packs/detroitDetroit/Windsor coverage detail/public/border-pulse/source-packs/detroit/michigan-road-source-discoveryDetroit/Michigan road-source discovery summary/public/border-pulse/source-packs/detroit/michigan-road-field-profileDetroit/Michigan road field profile/public/border-pulse/source-packs/detroit/michigan-road-parser-probeFixture-only Detroit/Michigan road parser probe/public/border-pulse/source-packs/detroit/michigan-road-source-decisionDetroit/Michigan road-source decision metadata/public/border-pulse/source-packs/detroit/michigan-road-source-registry-previewDetroit/Michigan source-registry metadata/public/border-pulse/source-packs/detroit/michigan-road-registry-mapping-replayDetroit/Michigan registry-mapping replay metadata/public/border-pulse/watch-scope-builder/schemaLaredo watch-scope builder schema/public/border-pulse/watch-scope-builder/previewLaredo watch-scope planning request/public/chatQuestion answering across published reports with cited context/public/chat/statusChat readiness and feature status/public/subscribeSubscribe to email reports/public/billing/configPublished billing configuration and enabled plans/public/billing/x402/statusMachine settlement readiness and x402 availability/public/agents/resourcesAgent resource catalog with prices, freshness, evidence contract, and x402/account-key status/public/agents/demo-keyDisabled-by-default demo agent-key policy with TTL, max-use, allowed prefixes, optional company/userRef hint, and no MAC tracking/public/agents/demo-keyWhen enabled, mint a short-lived transaction key scoped to /v1/agents and /v1/packets/public/calculator/configParser-cost assumptions with calculatorClaimPolicy planning-context caveats/public/calculator/estimateServer-side parser-cost estimate; not source evidence or source freshness proof/public/calculator/leadLead capture with calculatorClaimPolicy; lead status is not source evidence/public/x402/agents/statusDirect USDC x402 readiness for agent evidence requests/public/x402/agents/requestDirect x402 metered evidence retrieval for programmatic clients/public/billing/checkoutCreate account billing sessions where enabledREST API (/v1)
The authenticated /v1 namespace is the primary integration surface for autonomous agents, TMS systems, customer portals, alerting pipelines, and private copilots.
/v1/border/all/currentLatest published CBP/CBSA crossing rows with source timestamps; not broad claim evidence without packet/source policy/v1/border/:portId/currentLatest published lane-level wait rows for one crossing; not broad claim evidence without packet/source policy/v1/border/:portId/lanesRecent lane-level observations for one crossing/v1/border/:portId/weatherCurrent weather and next 24 hourly forecast rows for one crossing; forecast rows must stay labeled and claim use needs source policy/v1/border/:portId/alertsActive weather alerts affecting one crossing; claim use needs alert validity windows and source policy/v1/trade/policy/recentRecent raw-current trade policy documents; not normalized policy source facts/v1/trade/policy/searchFull-text search across the raw-current trade policy document archive/v1/community/reportsRetired/raw-stale community diagnostics filtered by port and confidence; not live evidence/v1/community/sentimentRetired/raw-stale community sentiment diagnostics for a crossing; not live evidence/v1/portsBorder port reference metadata and coordinates/v1/ports/:portIdSingle port metadata, optionally with inline geometry/v1/ports/:portId/geometryGeoJSON geometry for plazas, lanes, booths, and paths/v1/ports/withinViewport query for ports inside a bounding box/v1/ports/locateNearest-port lookup from latitude and longitude/v1/sourcesSource health with sourceClaimAudit, claimBearing, claimGuidance, claimWarnings, sourceFactHealth, parser claim-policy coverage, future-row counts, embedding backlog guidance, and row-level warnings for context-only/drift rowsExample response:
{
"portId": "laredo_world_trade",
"updatedAt": "2026-04-12T10:15:40Z",
"lanes": [
{
"laneType": "commercial_fast",
"waitMinutes": 25,
"lanesOpen": 6,
"capturedAt": "2026-04-12T10:15:00Z",
"source": "cbp_bwt"
},
{
"laneType": "commercial_standard",
"waitMinutes": 90,
"lanesOpen": 4,
"capturedAt": "2026-04-12T10:15:00Z",
"source": "cbp_bwt"
}
]
}Map API (/v1/map)
The /v1/map namespace powers the interactive /map surface for agent snapshots and account-scoped exceptions. It combines source-fact-ready border waits, road events, NWS alerts, and weather context with raw-current aircraft, river-gauge, and vessel map context, plus NEXRAD radar, cloud formations, rail, sea chart overlays, and GPS interference on one WebGL canvas. Every signal is addressable via these three endpoints so agents and dashboards can consume the same state the frontend renders without treating raw map rows as claim-bearing evidence.
/v1/map/snapshotOne payload for the /map view. Dense vessel and road-event layers support bbox=minLon,minLat,maxLon,maxLat plus zoom query params for viewport filtering and clustering./v1/map/port/:portId/detailPort drilldown: 24h wait sparkline, latest wait-spike row per lane, outlook preview rows, active weather alerts/v1/map/askOperator-context answer over bounded map summary; success and errors return map-ask claim policy, and raw-current/stale/no-row/planned map rows stay context unless source_ref, sourceClaimAudit, and /v1/sources policy allow broader claimsSnapshot example:
curl https://api.dunvale.com/v1/map/snapshot \
-H "Authorization: Bearer YOUR_API_KEY" | jq '{
generatedAt,
viewport,
ports: (.ports | length),
aircraft: (.aircraft | length),
vessels: .stats.vesselCount,
vesselClusters: (.vesselClusters | length),
roadEvents: .stats.trafficEventCount,
roadClusters: (.trafficEventClusters | length),
alerts: (.alerts | length),
gauges: (.gauges | length)
}'
# =>
# {
# "generatedAt": "2026-04-13T18:42:00Z",
# "viewport": { "bbox": null, "zoom": null, "denseLayerMode": "clustered" },
# "ports": 82,
# "aircraft": 312,
# "vessels": 2070,
# "vesselClusters": 118,
# "roadEvents": 1629,
# "roadClusters": 94,
# "alerts": 17,
# "gauges": 15
# }Viewport-filtered dense layer example:
curl "https://api.dunvale.com/v1/map/snapshot?bbox=-123,37,-121,39&zoom=9" \
-H "Authorization: Bearer YOUR_API_KEY" | jq '{
mode: .viewport.denseLayerMode,
vessels: (.vessels | length),
roadEvents: (.trafficEvents | length)
}'Port drilldown example:
curl https://api.dunvale.com/v1/map/port/laredo_world_trade/detail \
-H "Authorization: Bearer YOUR_API_KEY"
# =>
# {
# "portId": "laredo_world_trade",
# "sparkline": [ { "hour": "...", "avgWait": 42, "sampleCount": 8 }, ... ],
# "anomalies": [ { "laneType": "commercial", "severity": "elevated", "zscore": 2.1, ... } ],
# "predictions": [ { "horizonHours": 2, "predictedWait": 55, "confidenceLow": 40, "confidenceHigh": 70, ... } ],
# "alerts": [ { "alertId": "...", "event": "Wind Advisory", "severity": "Moderate", ... } ]
# }Ask the AI assistant:
curl -X POST https://api.dunvale.com/v1/map/ask \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"question": "Which crossings have the worst waits right now, and is weather a factor?",
"context": { "counts": { "ports": 82, "alerts": 17 }, "topEvents": [...] }
}'
# => { "answer": "Three southwest crossings are currently elevated..." }RSS feeds
Dunvale publishes an aggregate reports feed, a daily briefings feed, and one RSS feed per report type. Free reports stay public; entitled subscribers can use feed tokens to unlock report types and scopes.
https://api.dunvale.com/public/reports/feed.xml
https://api.dunvale.com/public/briefings/feed.xml
https://api.dunvale.com/public/feeds
https://api.dunvale.com/public/reports/morning_briefing/feed.xml
https://api.dunvale.com/public/reports/macro_weekly/feed.xml
https://api.dunvale.com/public/reports/sector_report/feed.xml
https://api.dunvale.com/public/reports/regional/feed.xml
# entitled subscriber example
https://api.dunvale.com/public/reports/feed.xml?token=dnv_feed_...JSON-LD structured data
Every report page on dunvale.com embeds schema.org/Article JSON-LD with linked Dataset and DataFeed nodes. Search engines and AI crawlers can map a Dunvale report to its underlying data lineage without scraping. The /public/about endpoint exposes the same product manifest in machine-readable form.
Agent access
Dunvale exposes tool-shaped REST resources, manifests, OpenAPI, RSS, JSON-LD, account-generated keys, demo-key policy discovery, and transaction-key flows for agent workflows today. x402 should become the low-friction settlement rail for standard $0.0059 metered resources. Models should query cited reports, published border wait context, and source status rather than scrape UI text. See the agents page for the full integration story.
Errors
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — invalid parameter format |
| 401 | Missing, invalid, inactive, or expired API key |
| 402 | Metered access challenge for an evidence resource; response includes settlement metadata and retry instructions when enabled |
| 403 | API key valid but tier or endpoint scope insufficient for this resource |
| 404 | Resource not found (e.g., unknown port_id) |
| 429 | Rate limit, daily limit, or transaction max-use limit exceeded |
| 500 | Server error — retry with exponential backoff |
| 503 | Upstream data source degraded — see /health |
Need agent access?
Create a local account for Agent Basic and 24h Transaction keys, or use Commercial/Enterprise for higher-volume packages.