78trust / 100

Geo Polygon

by Duo Data Utilities in Company & people data

x402 APIPassing, checked 3 h ago

Geometric predicates on a GeoJSON geometry supplied in the request: point-in-polygon with correct hole handling, bounding box, centroid, signed area in square metres, perimeter length, and ring winding order. Accepts Polygon and MultiPolygon, and a GeoJSON Feature wrapping either. Area and length are geodesic on the WGS-84 ellipsoid, correct at any latitude; containment is planar in lon/lat.

GET https://api.duoleads.com/v1/geo/polygon

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
115 ms typical, 751 ms slowest 5%
Last check
3 h ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X GET "https://api.duoleads.com/v1/geo/polygon?geometry=%7B%22type%22%3A%22Polygon%22%2C%22coordinates%22%3A%5B%5B%5B4.85%2C52.35%5D%2C%5B4.95%2C52.35%5D%2C%5B4.95%2C52.40%5D%2C%5B4.85%2C52.40%5D%2C%5B4.85%2C52.35%5D%5D%5D%7D&lat=52.3728&lon=4.8936"
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%2Fapi.duoleads.com%2Fv1%2Fgeo%2Fpolygon
const res = await pay("https://api.duoleads.com/v1/geo/polygon?geometry=%7B%22type%22%3A%22Polygon%22%2C%22coordinates%22%3A%5B%5B%5B4.85%2C52.35%5D%2C%5B4.95%2C52.35%5D%2C%5B4.95%2C52.40%5D%2C%5B4.85%2C52.40%5D%2C%5B4.85%2C52.35%5D%5D%5D%7D&lat=52.3728&lon=4.8936");
console.log(await res.json());

Example input

{
  "geometry": "{\"type\":\"Polygon\",\"coordinates\":[[[4.85,52.35],[4.95,52.35],[4.95,52.40],[4.85,52.40],[4.85,52.35]]]}",
  "lat": "52.3728",
  "lon": "4.8936"
}

Example output

{
  "data": {
    "area_m2": 37890432.411,
    "bbox": [
      4.85,
      52.35,
      4.95,
      52.4
    ],
    "centroid": {
      "lat": 52.37500000001563,
      "lon": 4.900000000001667
    },
    "contains": true,
    "on_boundary": false,
    "perimeter_m": 24747.979,
    "rings": 1,
    "vertices": 4,
    "winding": [
      "ccw"
    ]
  },
  "meta": {
    "computed_at": "2026-09-28T12:00:00.000Z",
    "deterministic": true,
    "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
    "price_usd": "0.05",
    "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D"
  },
  "ok": true,
  "route": "/v1/geo/polygon",
  "version": "1.0.0"
}

Security scan

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

Recent checks

WhenResultHTTPTimePrice
3 h agoPassed402153 ms$0.05
6 h agoPassed40262 ms$0.05
10 h agoPassed402647 ms$0.05
13 h agoPassed40244 ms$0.05
17 h agoPassed40243 ms$0.05
21 h agoPassed402462 ms$0.05
24 h agoPassed40244 ms$0.05
28 h agoPassed402479 ms$0.05
32 h agoPassed402958 ms$0.05
35 h agoPassed40250 ms$0.05
39 h agoPassed402115 ms$0.05
43 h agoPassed402404 ms$0.05
45 h agoPassed40244 ms$0.05
2 days agoPassed402751 ms$0.05