78trust / 100

Traffic Route

by HubVibe in Weather & location

x402 APIPassing, checked 54 min ago

Travel time with live traffic between two places, from the Google Routes API at call time: duration with traffic, duration without, the delay, distance, route description, warnings and advisories. Places as addresses, names or 'lat,lng'. Use it for ETAs, delivery windows and trip planning. Input: origin, destination; optional travel_mode, departure_time, traffic.

POST https://hubvibe-io.com/work/traffic/route

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
129 ms typical, 415 ms slowest 5%
Last check
54 min ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://hubvibe-io.com/work/traffic/route" \
  -H "content-type: application/json" \
  -d '{"destination":"Oakland City Hall, Oakland, CA","origin":"Ferry Building, San Francisco, CA","traffic":"aware","travel_mode":"DRIVE"}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Fhubvibe-io.com%2Fwork%2Ftraffic%2Froute
const res = await pay("https://hubvibe-io.com/work/traffic/route", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"destination":"Oakland City Hall, Oakland, CA","origin":"Ferry Building, San Francisco, CA","traffic":"aware","travel_mode":"DRIVE"}),
});
console.log(await res.json());

Example input

{
  "destination": "Oakland City Hall, Oakland, CA",
  "origin": "Ferry Building, San Francisco, CA",
  "traffic": "aware",
  "travel_mode": "DRIVE"
}

Example output

{
  "attribution": [
    {
      "text": "Translated by Google",
      "url": "https://translate.google.com"
    }
  ],
  "price_usd": 0.1,
  "provenance": {
    "attempts": 1,
    "elapsed_ms": 340,
    "providers_used": [
      "coinbase-advanced-trade-public"
    ],
    "steps": [
      {
        "ms": 312,
        "ok": true,
        "provider": "coinbase-advanced-trade-public",
        "reason": "provider_timeout",
        "step": "quote"
      }
    ]
  },
  "receipt_id": "rcpt_9f1c2b3a4d5e6f70",
  "receipt_url": "/work/receipts/rcpt_9f1c2b3a4d5e6f70",
  "result": {
    "advisory": {},
    "as_of": "2026-09-27T16:30:00Z",
    "checked_at": "2026-09-26T18:00:00Z",
    "delay_seconds": -129,
    "departure_time": "2026-09-27T16:30:00Z",
    "description": "I-80 E and I-580 E",
    "destination": "Oakland City Hall, Oakland, CA",
    "distance_meters": 17011,
    "distance_text": "17.0 km",
    "duration_seconds": 1152,
    "duration_text": "19 mins",
    "origin": "Ferry Building, San Francisco, CA",
    "source": "google-routes",
    "static_duration_seconds": 1281,
    "static_duration_text": "21 mins",
    "traffic": "aware",
    "travel_mode": "DRIVE",
    "warnings": []
  },
  "status": "ok",
  "worker": "traffic.route"
}

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
54 min agoPassed402415 ms$0.1
5 h agoPassed402353 ms$0.1
8 h agoPassed402117 ms$0.1
12 h agoPassed402380 ms$0.1
15 h agoPassed402477 ms$0.1
19 h agoPassed402354 ms$0.1
23 h agoPassed402119 ms$0.1
26 h agoPassed402120 ms$0.1
30 h agoPassed402365 ms$0.1
34 h agoPassed402118 ms$0.1
37 h agoPassed402123 ms$0.1
42 h agoPassed402129 ms$0.1