561 Group Market

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

  1. Send the request without payment. The server answers 402 Payment Required with a base64 JSON PAYMENT-REQUIRED header holding the amount, asset, network and payee.
  2. Have your wallet sign an EIP-3009 transferWithAuthorization for exactly those terms (an x402 client library does this for you).
  3. Repeat the identical request with the signed payload in the PAYMENT-SIGNATURE header.
  4. The server verifies, runs the operation, settles, and returns 200 with the result and a PAYMENT-RESPONSE header 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