URL Normalizer

Normalises a URL per RFC 3986 — case, default port, path resolution, IDN to punycode, tracking-parameter removal — and returns each component.

POST /v1/web/url-normalize $0.003 per call

Specification

Endpoint
POST /v1/web/url-normalize
Price
$0.003 per call · tier micro_data
Payment
x402 on X Layer (chain 196) · settled in USDG or USDT0 · schemes exact, aggr_deferred
Data source
Live fetch of the caller-supplied public URL, SSRF-guarded
Timeout
30 seconds
Max request
256 KB
Version
1.0.0

Calling it

The first call returns a 402 with the payment challenge. Retry with a signed authorisation in the X-PAYMENT header — see the payment guide for the exact shape.

curl -i -X POST "https://api.dana-edu.pp.ua/v1/web/url-normalize" \
  -H "content-type: application/json" \
  -d '{ ... }'

Response

Real output, captured by running this endpoint at build time — not written by hand. Volatile fields such as timestamps are elided. Captured 2026-07-30.

{
  "input": "HTTP://Example.COM:80/a/./b/../c?b=2&a=1&utm_source=x#frag",
  "normalised": "http://example.com/a/c?a=1&b=2#frag",
  "changed": true,
  "components": {
    "scheme": "http",
    "host": "example.com",
    "port": null,
    "path": "/a/c",
    "query": "a=1&b=2",
    "fragment": "frag"
  },
  "transformations": {
    "scheme_lowercased": false,
    "host_lowercased": false,
    "idn_punycode_applied": false,
    "default_port_removed": true,
    "dot_segments_resolved": true,
    "query_sorted": true,
    "fragment_removed": false
  },
  "tracking_removed": [
    "utm_source"
  ],
  "reference": "RFC 3986 section 6 (normalisation) and 5.2.4 (dot segments)"
}

Every response is wrapped in the same envelope: data plus warnings, sources, confidence, informational_only and a measured processing_ms. See the envelope reference.

Related endpoints