# Netzhandwerker Route Matrix

> Netzhandwerker Route Matrix is a paid API for AI agents from tools.netzhandwerker.de, paid per call via x402, $0.004/call, status unknown (last checked 2026-09-16).

Computes a full distance/duration matrix between multiple origins and destinations using OSRM routing on OpenStreetMap data

## Facts

- Endpoint: POST https://tools.netzhandwerker.de/v1/route/matrix
- Price: $0.004/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-16
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/netzhandwerker-route-matrix-0e55f160
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_WXdmIgNNqstCoXFv3AH1Y

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability netzhandwerker-route-matrix-0e55f160 -d '<json body>'
```

Example prompt: Calculate a full driving distance and travel time matrix between our three depots — Gronau, Münster, and Lager Ost (coordinates 51.9607, 7.6261) — so I can see how long it takes to get from each depot to every other location.

## When to prefer this

Use this endpoint when you need a full N×M matrix of road distances and travel times between multiple locations simultaneously, especially for logistics, dispatching, or coverage analysis. It is preferable to single-pair routing when you need to compare all combinations at once. Choose this over a simple geocoding API when actual routable distances (not straight-line) are required. The OSRM backbone provides fast, free-road routing without live traffic, making it suitable for planning and scheduling rather than real-time navigation.

## Known failure modes

- Unresolvable address geocoding returns the point as unreachable
- Exceeding 25 points per array returns a validation error
- Invalid transport mode value (not driving/walking/cycling) returns an error
- Network or OSRM backend timeout may return a 5xx error
- Points in regions with poor OpenStreetMap coverage may produce inaccurate or missing routes

## How this service works

x402-Werkzeuge für autonome Agenten.

## Output

Returns a JSON object with a flat list of matrix cells each containing origin label, destination label, distance in meters, distance in km, duration in seconds, and duration in minutes; plus resolved coordinates and labels for each input point, totals (cell count, max distance, max duration, unreachable count), nearest destination per origin, routing source attribution, and a note about data limitations (no live traffic, no time windows).

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "mode": {
   "enum": [
    "driving",
    "walking",
    "cycling"
   ],
   "type": "string",
   "default": "driving"
  },
  "points": {
   "type": "array",
   "items": {
    "type": [
     "string",
     "object"
    ]
   },
   "maxItems": 25,
   "description": "Punkte fuer die volle Matrix, als Text oder als Objekt mit lat und lon"
  },
  "origins": {
   "type": "array",
   "items": {
    "type": [
     "string",
     "object"
    ]
   },
   "maxItems": 25,
   "description": "Alternativ: Startpunkte"
  },
  "destinations": {
   "type": "array",
   "items": {
    "type": [
     "string",
     "object"
    ]
   },
   "maxItems": 25,
   "description": "Alternativ: Zielpunkte"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "mode": "driving",
  "note": "Freie Streckendaten ohne Verkehrslage und ohne Zeitfenster.",
  "cells": [
   {
    "to": "Lager Ost",
    "from": "Gronau, Westfalen",
    "to_index": 2,
    "distance_m": 71430,
    "duration_s": 3402,
    "from_index": 0,
    "distance_km": 71.43,
    "duration_min": 56.7
   }
  ],
  "points": [
   {
    "lat": 52.2117,
    "lon": 7.0403,
    "label": "Gronau, Westfalen",
    "matched": "Gronau (Westf.), Nordrhein-Westfalen",
    "resolved_from": "geokodierung"
   },
   {
    "lat": 51.9607,
    "lon": 7.6261,
    "label": "Lager Ost",
    "resolved_from": "koordinaten"
   }
  ],
  "source": "osrm",
  "totals": {
   "cells": 9,
   "unreachable": 0,
   "max_distance_km": 71.43,
   "max_duration_min": 56.7
  },
  "origins": [
   "Gronau, Westfalen",
   "Münster, Deutschland",
   "Lager Ost"
  ],
  "attribution": "Streckendaten: OSRM auf Basis von OpenStreetMap, Mitwirkende ODbL",
  "destinations": [
   "Gronau, Westfalen",
   "Münster, Deutschland",
   "Lager Ost"
  ],
  "fallback_reason": null,
  "nearest_per_origin": {
   "Gronau, Westfalen": {
    "to": "Münster, Deutschland",
    "distance_km": 69.8,
    "duration_min": 55.1
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/netzhandwerker-route-matrix-0e55f160/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from tools.netzhandwerker.de](https://www.zero.xyz/host/tools.netzhandwerker.de/llms.txt)
