Web & Metadata · x402 V1 + V2

URL Normalize Canonicalize

Use this service when you need this capability: normalizes HTTP and HTTPS URL syntax deterministically without guessing an HTML canonical URL.

Price and endpoint

LivePOSTBase USDC

0.005 USDC per call

x402 V1 + V2 exact payment on Base mainnet (base in V1; eip155:8453 in V2) using USDC. One HTTP 402 response carries the canonical V2 PAYMENT-REQUIRED header and equivalent V1 JSON body.

POST https://signalharness.ai/api/agent/services/url_normalize_canonicalize/invoke

Purpose

Normalizes HTTP and HTTPS URL syntax deterministically without guessing an HTML canonical URL.

This service applies bounded processing to the supplied input. Review its schema, result fields, and limits for the exact supported capability.

Inputs

Request fields and validation limits
FieldTypeRequiredLimits
urlstringRequiredMinimum length 1; Maximum length 2048
baseUrlstringOptionalMinimum length 1; Maximum length 2048
removeTrackingParametersbooleanOptionalSee the complete OpenAPI schema.

Example request body

{
  "url": "HTTPS://EXAMPLE.COM/a/../b?z=2&a=1"
}
View complete input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "minProperties": 1,
  "maxProperties": 3,
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "baseUrl": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "removeTrackingParameters": {
      "type": "boolean"
    }
  }
}

Realistic output shape

Illustrative output from the canonical adapter fixture and schema. It is not a completed paid execution or a current live observation.

{
  "original": "example",
  "normalized": "example",
  "origin": "example",
  "path": "example",
  "query": "example",
  "fragment": "example",
  "transformations": [
    "example"
  ]
}
View complete output schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "minProperties": 7,
  "maxProperties": 7,
  "required": [
    "original",
    "normalized",
    "origin",
    "path",
    "query",
    "fragment",
    "transformations"
  ],
  "properties": {
    "original": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "normalized": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "origin": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "path": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "query": {
      "type": "string",
      "minLength": 0,
      "maxLength": 2048
    },
    "fragment": {
      "type": "string",
      "minLength": 0,
      "maxLength": 2048
    },
    "transformations": {
      "type": "array",
      "minItems": 0,
      "maxItems": 16,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 128
      }
    }
  }
}

Execution limits

  • MaxInputBytes: 16384
  • MaxOutputBytes: 65536
  • MaxConcurrentExecutions: 12
  • MaxArtifacts: 0
  • MaxArtifactBytes: 0
  • RateLimitPerMinute: 180
  • MaxNodes: 256

Timeout: 3000 ms. Full schemas are in OpenAPI.

Copyable unpaid request

This schema-valid request returns the canonical HTTP 402 challenge without executing the service. A payment-capable client validates the challenge, signs only with prior authority and budget, and retries the identical body.

curl -i -X POST https://signalharness.ai/api/agent/services/url_normalize_canonicalize/invoke \
  -H "Content-Type: application/json" \
  --data '{"url":"HTTPS://EXAMPLE.COM/a/../b?z=2&a=1"}'

Continue with the paid-call walkthrough →