/ REST API · https://api.osmpid.infs.ai

API Reference

A lightweight HTTP API for generating and validating persistent OpenStreetMap identifiers. All endpoints are read-only and require no authentication.

Rate-limited — because the service resolves data from the official OpenStreetMap API, requests are throttled.
Shallow child resolution — child timestamps are computed one level deep. For a relation, all member ways are checked; for a way, all member nodes are checked. But when resolving a relation, the nodes of its member ways are not inspected.
GET /generate generation

Generate a fresh OSMPID for a given OSM element. The service resolves the current version and latest child timestamp from live OSM data.

Query parameters
type*node | way | relationOSM element type.
id*integer ≥ 1OSM numeric element id.
tagsstringOptional comma-separated tag list, URL-encoded. Pins semantic meaning (e.g. amenity%3Dcafe).
Responses
200OSMPID generated successfully. Returns GenerateResponse.
404Referenced OSM object does not exist.
422Invalid query parameters.
GET https://api.osmpid.infs.ai/generate?type=node&id=2641352539&tags=amenity%3Dcafe
200 OK · application/json
{
  "persistent_id": "node/2641352539@7;2026-03-12T10:15:00Z?amenity=cafe",
  "element_type": "node",
  "element_id": 2641352539,
  "version": 7,
  "latest_child_timestamp": null,
  "tags": [
    {
      "key": "amenity",
      "value": "cafe"
    }
  ]
}
GET /validate validation

Validate a stored OSMPID against current OSM state. Returns one of five outcomes — and a refreshed ID when the element has changed.

Query parameters
id*stringThe OSMPID string, URL-encoded.
Responses
200Validation complete. Returns ValidationResult with a status field.
422Malformed OSMPID — string failed to parse.
ValidationStatus values
unchanged
Version, children, and tags all match.
changed
Element changed; a refreshed OSMPID is returned in persistent_id.
deleted
Object is no longer visible in OSM.
unknown
The type + id combination never existed.
malformed
The ID string could not be parsed (HTTP 422).
GET https://api.osmpid.infs.ai/validate?id=way%2F2641352539%407%3B2026-03-12T10%3A15%3A00Z
200 OK · application/json
{
  "status": "unchanged",
  "persistent_id": "way/2641352539@7;2026-03-12T10:15:00Z",
  "element_type": "way",
  "element_id": 2641352539,
  "version": 7,
  "latest_child_timestamp": "2026-03-12T10:15:00Z",
  "changed_reason": null
}