Dunvale
Logistics Data API

Dunvale Border Logistics API,
built for metered data use.

Dunvale gives teams and systems cited wait rows, lane status, source freshness, caveated map snapshots, reports, OpenAPI, RSS, JSON-LD, direct x402 settlement, and authenticated REST resources. The goal is simple: structured freight context priced against repeated parser and infrastructure cost.

Generated logistics API control-room scene with source and map panels

Data packet surface

Discovery, freshness, pricing, and citations stay visible before requests.

Connection contract

x402 API access

enabled

status

GET /public/x402/agents/statuspublic

quote

POST /public/x402/agents/request402

settlement

x402 settlement headerUSDC

payload

evidence_packetJSON

metered unit

$0.0059 per standard packet

Metered logistics resources

Dunvale is organized around paid/scoped wait data, caveated map packets, historical analytics, parsed exports, reports, and authenticated REST resources.

$0.0059+

x402 transaction path

Bundled USDC x402 is the intended rail for sub-cent packet calls. Transaction keys remain the account-credit and trial bridge into the same evidence contract.

402-ready

Crawlable data surface

Reports, data pages, domain pages, OpenAPI, llms.txt, JSON-LD, and the public manifest describe the source graph. Free no-key access covers reports, feeds, manifests, discovery pages, and current public crossing pages.

crawlable + structured

Public product manifest

A single GET /public/about returns domains, source families, source status, high-level coverage, authority, and access guidance without exposing historical exports or raw rows.

self-describing

Snapshots + feeds

Teams and systems can use reports, RSS feeds, caveated public snapshots, and authenticated REST endpoints for periodic source review. Historical analytics and routing context require scoped server-side access.

REST + RSS

Provenance built in

Raw and historical rows keep source timestamps and references inside scoped access. Packet responses expose evidence IDs, retrieval metadata, and source_ref claim policy before findings reach reports or downstream systems.

Audit-grade
Resource catalog

One priced-resource contract for account keys, transaction keys, and x402.

Agents should read the catalog before choosing a payment rail. It names the resource ID, endpoint, price, freshness promise, evidence contract, and whether the resource is direct-x402 or account-key only.

GET /public/agents/resourcesGET /public/border-pulse/packagesGET /public/border-pulse/sample-payloads

Agent evidence packet

agent.evidence.retrieve

$0.0059

Compact retrieval packet for one scoped freight or Border Pulse question.

Endpoint: POST /v1/evidence/request
x402: direct endpoint
Keys: account live, transaction live

Packet includes generated time, cache status, source timestamps, and source-quality profile when source facts are returned.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

Grounded answer packet

agent.evidence.answer

$0.0059

Answer-mode packet with cited source context for keyed agents.

Endpoint: POST /v1/evidence/request
x402: account or transaction only
Keys: account live, transaction live

Same packet freshness contract as retrieval; wording must stay grounded in returned evidence.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

Map evidence snapshot

map.snapshot

$0.0059

Scoped map payload for source-fact-ready waits/alerts plus caveated raw-current aircraft, vessels, gauges, and source health.

Endpoint: GET /v1/map/snapshot
x402: account or transaction only
Keys: account live, transaction live

Layer freshness and mapped/unmapped counts are returned by map health and snapshot metadata.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

Report/export package

report.export

$0.0059

One generated report/export packet with cited source-fact-ready claims and caveated raw context where entitlement permits.

Endpoint: GET /public/reports
x402: account or transaction only
Keys: account preview, transaction preview

Report freshness follows report generated_at and source snippets embedded in the packet.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

Laredo Border Pulse

border_pulse.watch_scope.laredo

$199/month

What threatens my Laredo freight today, and what evidence backs it?

Endpoint: GET /public/border-pulse/watch-scopes
x402: not applicable
Keys: account live, transaction not applicable

Confirm coverage, source freshness, and account delivery preferences before customer delivery.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

Priority Border Pulse custom review

border_pulse.watch_scope.priority_custom_review

custom quote

Custom-review intake for San Ysidro, Otay Mesa, and high-traffic Texas lanes before pricing, delivery, or claim-bearing expansion.

Endpoint: GET /public/border-pulse/watch-scopes
x402: not applicable
Keys: account preview, transaction not applicable

Review current watch-scope queue, source gaps, source-fact health, and package approvals before any customer delivery.

Claim policy

cited report text, cited packet evidence, saved source_ref claim policy, or replay claimBearing/claimGuidance inside returned evidence scope

raw-current, stale, no-row, scheduled, planned, retired, unknown, inactive, future, parser-lagged, parser-incomplete, degraded-run, or embedding-backlog rows stay context only unless packet claim_guidance or replay claimGuidance says otherwise

POST fields: evidence_id, claim_bearing, claim_guidance, evidence_mode, source_ref

Replay fields: evidenceId, claimBearing, claimGuidance, evidenceMode, sourceRef

Source health preflight: GET /v1/sources; read top-level sourceClaimAudit before broad source-level claims; check sourceClaimAudit.claimPolicy.sourceHealthPreflight and nextAction; check /v1/sources claimBearing=true before broad source-level claims; check sourceFactHealth.total > 0 before broad source-level claims; check sourceFactHealth.claimBearingPolicyRows > 0 before broad source-level claims; check sourceClaimAudit.rawCurrentContextOnlyCount, nonLiveSourceCount, staleLiveSourceCount, and noRowSourceCount; check sourceFactHealth.missingClaimPolicyRows before trusting broad source readiness; check sourceFactHealth.parserLagHours and maxParserLagHours before current-source claims; check sourceFactHealth.futureEventsBeyond7d before current road/source claims; check pendingEmbeddings and failedEmbeddings before relying on semantic retrieval alone; check degraded-run claimWarnings before trusting source-run freshness; treat claimWarnings as stronger than generic freshness or catalog copy

do not assert causality unless returned evidence proves causality

API runbooks

How systems should use Dunvale data.

Treat Dunvale as a source-policy data tool with caveated raw context. Discover public coverage from reports and manifests, retrieve scoped structured facts through server-side keys or x402, cite the returned sources, and use the account portal when teams need usage metering or keys. Stored candidate workflows require operator approval; clients can request a read-only planning response for the allowlisted Laredo border-waits scope before any stored workflow is enabled.

API clients

  1. 1Read /llms.txt and GET /public/about first to confirm source scope and product policy.
  2. 2Keep external web research separate from Dunvale API calls and citations.
  3. 3For metered packets, call /public/x402/agents/status, then /public/x402/agents/request with the x402 settlement header.

Perplexity research

  1. 1Use Perplexity Search to discover Dunvale pages with a domain filter for dunvale.com and api.dunvale.com.
  2. 2Use the returned Dunvale URLs as citations, then call /public/search or /public/chat for archive-backed answers.
  3. 3Use /public/about and /openapi.json when the research workflow needs structured source coverage.

Browser workflows

  1. 1Prefer direct API URLs over screen scraping: /public/about, /public/search, /public/chat, and /openapi.json.
  2. 2If a browser workflow is required, log in at /login and use /portal/account to inspect metered usage and keys.
  3. 3Keep credentials in the operator-controlled environment and confirm before any settlement or account action.

Custom integrations

  1. 1Define Dunvale as an HTTP tool: manifest, search, chat, and /v1/evidence/request for keyed evidence.
  2. 2Start every run with a capability probe, then retrieve cited evidence before presenting findings.
  3. 3Use account keys for reusable volume and transaction keys for delegated one-run access.
Data discovery

No scraping required.

Dunvale exposes source status, cadence, coverage, evidence policy, and endpoint structure directly to crawlers and API clients. No-key public access is reports, feeds, manifests, discovery pages, and current public crossing pages; historical analytics, raw rows, routing geometry, and traffic/weather feature windows require scoped server-side access. The data contract tells a client what is source-fact-ready, what is live raw-current context, what is scheduled, and what is only roadmap context. Authenticated source health also surfaces sourceClaimAudit, claimBearing, sourceFactHealth.total, claimBearingPolicyRows, missingClaimPolicyRows, futureEventsBeyond7d, pendingEmbeddings, failedEmbeddings, and claimWarnings so downstream systems avoid promoting raw-current, non-live, stale, no-row, missing-parser-policy, planned, or non-vector-ready facts into current claims.

Live

Source-policy evidence where source health and citations clear: border waits, active/current road events, validity-window alerts, labeled forecasts, rail, trade, macro, reports, and packet snapshots. Parser-lagged, degraded-run, embedding-backlog, raw-current hydrology, aviation, maritime, policy, and retired community rows stay context-only unless row guidance and citations prove exact use.

Scheduled

Schema or implementation path exists, but sources are not claim-bearing evidence until rows, health, normalized source facts, and citations exist.

Planned

Validated source families queued behind the same contract. Systems should not cite planned rows as current observations.

/public/about

Machine-readable product, domain, source, status, and capability manifest.

/public/agents/resources

Priced resource catalog with freshness, evidence, x402, and account-key status.

/public/agents/demo-key

Disabled-by-default temporary demo transaction-key policy for ChatGPT-style trials; scoped and rate-limited, no MAC tracking.

/public/x402/agents/status

Direct USDC x402 readiness, network, and configured resource metering.

/public/border-pulse/packages

Commercial coverage options for Laredo, Detroit/Windsor, Otay Mesa, and planned crossings.

/public/border-pulse/buyer-packets/laredo

Laredo service detail with sample payload, policy-watch, and market context.

/public/border-pulse/report-derived-facts/operator-review

Report-derived wait-volatility, risk-overlay, trade-compliance, and data-gap context.

/public/border-pulse/package-intent-preview/schema

Service interest fields, buyer roles, contact preferences, and delivery preferences.

GET /public/border-pulse/packages/:packageId

Border Pulse detail service setup endpoint.

POST /public/border-pulse/packages/:packageId/intent-preview

Border Pulse intent service setup endpoint.

GET /public/border-pulse/packages/:packageId/handoff-template

Border Pulse handoff service setup endpoint.

POST /public/border-pulse/packages/:packageId/acceptance-preview

Border Pulse acceptance service setup endpoint.

POST /public/border-pulse/packages/:packageId/source-gap-acceptance-preview

Border Pulse source gap service setup endpoint.

POST /public/border-pulse/packages/:packageId/quote-preview

Border Pulse quote service setup endpoint.

POST /public/border-pulse/packages/:packageId/delivery-preview

Border Pulse delivery service setup endpoint.

POST /public/border-pulse/packages/:packageId/entitlement-preview

Border Pulse entitlement service setup endpoint.

POST /public/border-pulse/packages/:packageId/activation-preview

Border Pulse activation service setup endpoint.

GET /public/border-pulse/packages/:packageId/operator-summary

Border Pulse operator summary service setup endpoint.

/public/border-pulse/watch-scopes

Commercial Border Pulse scope catalog for companies and API clients.

/public/border-pulse/sample-payloads

Reviewed Laredo sample replay plus San Ysidro, Otay Mesa, and Texas custom-review request shapes.

/public/border-pulse/source-packs/otay

Otay Mesa coverage detail with California/Baja road-event gap.

/public/border-pulse/source-packs/otay/alternate-road-source-discovery

San Diego 511, QuickMap, and Tijuana road-source discovery detail.

/public/border-pulse/source-packs/detroit

Detroit/Windsor coverage detail with Michigan road-source decision.

/public/border-pulse/source-packs/detroit/michigan-road-source-decision

MDOT HIAV source decision metadata for future coverage.

/public/border-pulse/source-packs/detroit/michigan-road-source-discovery

MDOT HIAV/RIDE metadata discovery with candidate endpoint counts.

/public/border-pulse/source-packs/detroit/michigan-road-field-profile

MDOT HIAV field profile with explicit outFields and a limited sample.

/public/border-pulse/source-packs/detroit/michigan-road-parser-probe

MDOT HIAV parser detail with normalized lane closures.

/public/border-pulse/source-packs/detroit/michigan-road-source-registry-preview

MDOT HIAV registry and source-fact mapping metadata.

/public/border-pulse/source-packs/detroit/michigan-road-registry-mapping-replay

MDOT HIAV replay against registry and mapping metadata.

/public/border-pulse/watch-scope-builder/schema

Laredo watch-scope builder schema.

/openapi.json

Public API schema for report, search, chat, manifest, snapshot, and anomaly endpoints.

/llms.txt

Compact crawler summary on both the site and API domains.

JSON-LD

Report pages expose schema.org metadata for search and answer engines.

Metered packet transactions

x402 evidence requests and transaction-key flows for metered API access.

/public/snapshot

Caveated public snapshot with source-claim policy for lightweight source review.

API Quickstart

Connect systems through x402 or authenticated product surfaces.

Start with OpenAPI, RSS, JSON-LD, x402, and account keys. Standard packet retrieval and map snapshot requests are $0.0059; account-generated transaction keys use authenticated /v1 endpoints for the same source-policy contract. Commercial Border Pulse pages describe listed and custom coverage without exposing implementation details.

Direct x402 evidence request

GET https://api.dunvale.com/public/x402/agents/status

POST https://api.dunvale.com/public/x402/agents/request
# If the settlement header is missing, the API returns 402 with x402 requirements.
# Retry with the x402 settlement header for the 0.0059 USDC resource.

Authenticated API

{
  "base_url": "https://api.dunvale.com",
  "headers": {
    "Authorization": "Bearer dnv_live_..."
  },
  "resources": [
    "/v1/border/:portId/current",
    "/v1/evidence/request",
    "/v1/agents/request",
    "/v1/sources",
    "/v1/trade/policy/search",
    "/v1/map/snapshot"
  ]
}

x402 settlement support is published as readiness status before a client attempts metered access:

x402 status

GET https://api.dunvale.com/public/x402/agents/status
GET https://api.dunvale.com/public/billing/x402/status
# Returns enabled/readiness fields before a client attempts metered access.
Resource Patterns

Public and authenticated resources for entitled clients.

Each resource returns structured JSON with explicit field names, units, timestamps, and evidence context so downstream products can cite what they used.

GET /public/about

Product, source, status, and capability manifest for planning API use

public
GET /public/snapshot

Caveated public snapshot for lightweight source review

public
POST /public/x402/agents/request

Direct USDC x402 metered packet request for one scoped query

x402
POST /v1/evidence/request

Preferred account-key or transaction-key evidence retrieval plus deterministic candidate windows; /v1/agents/request stays compatible

bearer or transaction
GET /v1/border-analytics/waits/raw

Authenticated raw wait rows for review; claim-bearing use still needs packet evidence and source policy

bearer
GET /v1/border-analytics/waits/border-times-export

Scoped historical wait export for internal/partner importers; not a no-key browser endpoint

bearer
GET /v1/sources

Source health with sourceClaimAudit, claimBearing, claimGuidance, claimWarnings, sourceFactHealth, parser policy coverage, future-row counts, embedding backlog guidance, and row-level warnings for context-only/drift rows

bearer
GET /public/reports

List public or entitled logistics reports by type and scope

public or token
GET /public/reports/:type/:date

Fetch report content, snippets, and structured metadata

public or token
GET /v1/map/snapshot

Map-state payload for source-fact-ready waits/alerts plus caveated raw-current gauges, aircraft, vessels, and overlays

bearer
The premise

Border logistics needs clean source facts.

A logistics manager needs a direct answer: “Which priority border lanes have current wait, weather, and source freshness evidence?”

The useful inputs are current wait rows, lane context, account scope, source freshness, and policy or weather evidence that is actually present. Scraping multiple pages for every review is brittle.

Dunvale returns structured resources instead. The REST response returns the data, current value, source timestamp, and links to supporting reports or related source context when available.

The public site stays focused on logistics facts. Historical analytics, raw rows, and routing context stay behind scoped access where source policy and usage records are clear.

Sample data request

> user: Which priority border lanes have current wait, weather, and source freshness evidence?
> client calls: GET /v1/sources
> client calls: POST /v1/evidence/request
> client calls: GET /public/reports?type=morning_briefing&limit=1
> packet summary: Sample only: returned packet says whether reviewed sample-scope evidence is claim-bearing, includes source timestamp, source health, evidence IDs, and any report context. If no packet row proves causality, answer stays at contextual overlap and cites replay evidence instead of a hard-coded wait value.

Build something with us.

We're working with logistics platforms, brokers, carriers, and trade-data teams. If you're building anything that touches North American trade, the cross-border corridor, or operational reporting — talk to us.