Web & Metadata · x402 V2

Web Extract

Use this service when you need this capability: fetches one public HTTPS HTML resource without JavaScript execution and returns deterministic normalized page structure and metadata.

Price and endpoint

LivePOSTBase USDC

0.02 USDC per call

x402 V2 exact payment on Base mainnet (eip155:8453) using USDC. The HTTP 402 challenge confirms the exact requirements before an authorized payment.

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

Purpose

Fetches one public HTTPS HTML resource without JavaScript execution and returns deterministic normalized page structure and metadata.

Documented public-source retrieval is bounded by the URL, byte, redirect, and timeout limits below. Source availability can affect execution; review the input schema and returned source metadata.

Inputs

Request fields and validation limits
FieldTypeRequiredLimits
urlstringRequiredPattern: ^https://; Minimum length 9; Maximum length 2048

Example request body

{
  "url": "https://example.com/"
}
View complete input schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "minProperties": 1,
  "maxProperties": 1,
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "pattern": "^https://",
      "minLength": 9,
      "maxLength": 2048
    }
  }
}

Realistic output shape

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

{
  "sourceUrl": "example00",
  "headings": [
    {
      "level": 1,
      "text": "Example caller-supplied content."
    }
  ],
  "links": [
    {
      "text": "Example caller-supplied content.",
      "href": "example"
    }
  ],
  "images": [
    {
      "alt": "example",
      "src": "example"
    }
  ],
  "metadata": [
    {
      "name": "example",
      "value": "example"
    }
  ],
  "openGraph": [
    {
      "name": "example",
      "value": "example"
    }
  ],
  "jsonLd": [
    "{\"example\":\"schema-valid caller-supplied data\"}"
  ],
  "visibleText": "example"
}
View complete output schema
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "additionalProperties": false,
  "minProperties": 8,
  "maxProperties": 12,
  "required": [
    "sourceUrl",
    "headings",
    "links",
    "images",
    "metadata",
    "openGraph",
    "jsonLd",
    "visibleText"
  ],
  "properties": {
    "sourceUrl": {
      "type": "string",
      "minLength": 9,
      "maxLength": 2048
    },
    "title": {
      "type": "string",
      "minLength": 0,
      "maxLength": 1024
    },
    "description": {
      "type": "string",
      "minLength": 0,
      "maxLength": 4096
    },
    "canonicalUrl": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048
    },
    "headings": {
      "type": "array",
      "minItems": 0,
      "maxItems": 128,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 2,
        "maxProperties": 2,
        "required": [
          "level",
          "text"
        ],
        "properties": {
          "level": {
            "type": "integer",
            "minimum": 1,
            "maximum": 6
          },
          "text": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2048
          }
        }
      }
    },
    "links": {
      "type": "array",
      "minItems": 0,
      "maxItems": 256,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 2,
        "maxProperties": 2,
        "required": [
          "text",
          "href"
        ],
        "properties": {
          "text": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2048
          },
          "href": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          }
        }
      }
    },
    "images": {
      "type": "array",
      "minItems": 0,
      "maxItems": 128,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 2,
        "maxProperties": 3,
        "required": [
          "alt",
          "src"
        ],
        "properties": {
          "alt": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2048
          },
          "src": {
            "type": "string",
            "minLength": 1,
            "maxLength": 2048
          },
          "title": {
            "type": "string",
            "minLength": 0,
            "maxLength": 2048
          }
        }
      }
    },
    "metadata": {
      "type": "array",
      "minItems": 0,
      "maxItems": 128,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 2,
        "maxProperties": 2,
        "required": [
          "name",
          "value"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "value": {
            "type": "string",
            "minLength": 0,
            "maxLength": 8192
          }
        }
      }
    },
    "openGraph": {
      "type": "array",
      "minItems": 0,
      "maxItems": 128,
      "items": {
        "type": "object",
        "additionalProperties": false,
        "minProperties": 2,
        "maxProperties": 2,
        "required": [
          "name",
          "value"
        ],
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 256
          },
          "value": {
            "type": "string",
            "minLength": 0,
            "maxLength": 8192
          }
        }
      }
    },
    "jsonLd": {
      "type": "array",
      "minItems": 0,
      "maxItems": 32,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 32768
      }
    },
    "visibleText": {
      "type": "string",
      "minLength": 0,
      "maxLength": 65536
    },
    "warnings": {
      "type": "array",
      "minItems": 0,
      "maxItems": 32,
      "items": {
        "type": "string",
        "minLength": 1,
        "maxLength": 1024
      }
    }
  }
}

Execution limits

  • MaxInputBytes: 4096
  • MaxOutputBytes: 1048576
  • MaxConcurrentExecutions: 2
  • MaxArtifacts: 0
  • MaxArtifactBytes: 0
  • RateLimitPerMinute: 30
  • MaxFetchBytes: 2097152
  • MaxDecodedBytes: 4194304
  • FetchTimeoutMs: 10000
  • MaxRedirects: 3

Timeout: 15000 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/web_extract/invoke \
  -H "Content-Type: application/json" \
  --data '{"url":"https://example.com/"}'

Continue with the paid-call walkthrough →