Web & Metadata · x402 V1 + 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 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/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 →