WHATWG URL Normalize and Resolve
Parse, normalize and resolve URLs with the native WHATWG algorithm. Return serialized href, origin and components; IDNA, IP and dot segments follow runtime URL behavior. Optional base resolves relative URLs. Up to 65536 JSON input/output bytes; no fetching or safe-browsing claim.
- Price
- from $0.0012 USDC per request (starting price; the 402 response quotes the exact amount for your input)
- Network
- Base mainnet,
eip155:8453, settled in USDC through the Coinbase CDP facilitator - Method and URL
POST https://market.561.group/v1/data/url-normalize- Response type
application/json- Seller
- Causeway Services (561 Group)
Input contract
Input that fails this contract is refused with a 4xx status before any payment is requested.
{
"maxBytes": 102400,
"bodySchema": {
"type": "object",
"additionalProperties": false,
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 65536
},
"base": {
"type": "string",
"maxLength": 65536
}
}
}
}
Example request
{
"method": "POST",
"url": "https://market.561.group/v1/data/url-normalize",
"headers": {
"accept": "application/json",
"content-type": "application/json"
},
"body": {
"url": "../data?q=a+b#part",
"base": "https://EXAMPLE.com:443/a/b/"
}
}
Output
{
"schema": {
"type": "object",
"additionalProperties": false,
"required": [
"hash",
"host",
"hostname",
"href",
"origin",
"password",
"pathname",
"port",
"protocol",
"search",
"username"
],
"properties": {
"hash": {
"type": "string"
},
"host": {
"type": "string"
},
"hostname": {
"type": "string"
},
"href": {
"type": "string"
},
"origin": {
"type": "string"
},
"password": {
"type": "string"
},
"pathname": {
"type": "string"
},
"port": {
"type": "string"
},
"protocol": {
"type": "string"
},
"search": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"example": {
"hash": "#part",
"host": "example.com",
"hostname": "example.com",
"href": "https://example.com/a/data?q=a+b#part",
"origin": "https://example.com",
"password": "",
"pathname": "/a/data",
"port": "",
"protocol": "https:",
"search": "?q=a+b",
"username": ""
}
}
How to buy with x402
- Send the request without payment. The server answers
402 Payment Requiredwith a base64 JSONPAYMENT-REQUIREDheader holding the amount, asset, network and payee. - Have your wallet sign an EIP-3009
transferWithAuthorizationfor exactly those terms (an x402 client library does this for you). - Repeat the identical request with the signed payload in the
PAYMENT-SIGNATUREheader. - The server verifies, runs the operation, settles, and returns
200with the result and aPAYMENT-RESPONSEheader carrying the settlement receipt.
Read the price without paying
curl --include --request POST --header 'accept: application/json' --header 'content-type: application/json' --data-raw '{"url":"../data?q=a+b#part","base":"https://EXAMPLE.com:443/a/b/"}' --url 'https://market.561.group/v1/data/url-normalize'
This request authorizes nothing; it returns the live payment terms. Read the full explanation of x402.
Machine-readable
- /.well-known/x402: x402 discovery document for every offer
- /v1/catalog: full catalog with contracts and examples
- /llms.txt: the market in llms.txt form
- services.561.group: Causeway Services