InfraNode.dev

Quickstart

InfraNode serves normalised open data for German cities behind a single REST API. Every endpoint is publicly readable; your first call needs no key. Three steps and you are in.

Step 1, base URL

All endpoints live under the versioned base URL. Paths follow the pattern /api/v1/cities/{slug}/{resource}.

https://infranode.dev/api/v1

Step 2, first call

Fetch the weather for Hamburg. No header, no setup, one GET is enough.

curl "https://infranode.dev/api/v1/cities/hamburg/weather"

Step 3, read the response

Every response follows the same canonical envelope. At the top level you always read the same two blocks, no matter which resource you query:

Field Content
data The actual payload, typed per endpoint (here the weather values).
data[].attribution Not a separate top-level block: each data record carries an embedded attribution field with text, license_url and modified, that is licence and origin of the respective data.
meta Context about the request: city slug, timestamp, queried source, the source_status (ok, no_data or disabled) plus correlation_id and cache_status.

If a source returns nothing for a city, the status code stays 200 and source_status is set to no_data. That cleanly separates "no data" from a real error.

Rate limits

The API is open and needs no API key. Calls are limited per IP (abuse protection): up to 300 requests per minute (short bursts) and 6000 per hour (sustained). Every response carries the standard headers RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. On overrun the API answers with status 429 and a Retry-After header. The MCP endpoint (mcp.infranode.dev) is rate limited separately to 480 requests per minute per IP.

SDKs

Instead of hand-written HTTP calls there are keyless client libraries. Every record carries its source attribution.

  • Python: pip install infranode, see the tutorial, with LangChain and LlamaIndex tools
  • JavaScript/TypeScript: npm install infranode-sdk, see the tutorial, with a Vercel AI SDK tool
  • Java: no package, use HttpClient or OpenAPI Generator, see the tutorial

Next steps

The left navigation lists every operation, with parameters, code samples in curl, JavaScript and Python, and a live console for the callable endpoints. The reference content is in German, the code samples are universal.