# HALOWERK x402werk Offer Parser

> HALOWERK x402werk Offer Parser is a paid API for AI agents from x402.halowerk.com, paid per call via x402, $0.002/call, status unknown (last checked 2026-09-13).

Fetches and parses an x402 HTTP 402 payment challenge from a URL or raw challenge object, returning structured payment requirements including asset, network, amount, and recipient details.

## Facts

- Endpoint: POST https://x402.halowerk.com/offer/parse
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/halowerk-x402werk-offer-parser-2d0ed2d0
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_QwkZnCsW5NOADVlRfLFUu

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability halowerk-x402werk-offer-parser-2d0ed2d0 -d '<json body>'
```

Example prompt: Can you fetch and parse the x402 payment challenge at https://api.example.com/premium-data so I can see exactly how much USDC is required, which network to pay on, and where to send the payment?

## When to prefer this

Use this endpoint when you need to inspect or decode an x402 HTTP 402 payment challenge — either by fetching it from a live URL or by parsing a challenge object you already hold — before deciding whether and how to pay. Prefer it over manual HTTP inspection when you need structured, normalized payment details (amount, asset, network, pay-to address) in a single call. It is particularly useful in agentic workflows that must dynamically route micropayments to unknown paid APIs.

## Known failure modes

- Private, loopback, or link-local target URLs are rejected with an error
- Timeout exceeded when fetching the remote 402 challenge (configurable via timeout_ms)
- Malformed or unrecognized x402 challenge format may produce parse_warnings or incomplete fields
- Remote endpoint does not return a valid 402 response
- Network error reaching the target URL

## How this service works

Fetches the 402 challenge of a foreign endpoint without paying anything — no payment header, no signature, no settlement — or parses a challenge you already hold. Returns x402_version, every accepts entry with scheme, network, resolved network name and chain id, asset, symbol, decimals and the amount both in raw units and in human form, plus the resource block and any expiry. amount_human is computed with the decimals of that token, resolved from a known-asset table or read from the chain; where decimals cannot be established it stays null and is listed in unavailable_fields rather than assuming six. parse_warnings names concrete gaps such as a missing description or missing inputSchema, a non-CAIP-2 network, a bridged instead of canonical asset, or an amount sent as a JSON number. It does not judge the service, does not pay, does not verify signatures and does not check whether the seller delivers. Answers for a URL are cached for 60 seconds; age_ms states the age of the fetched challenge.

## Output

Returns a structured object containing: cache status (hit/miss), cache age, an array of accepted payment options (each with asset, asset symbol, network name, chain ID, decimals, human-readable amount, raw amount in units, pay-to address, scheme, and max timeout), resource metadata (URL, MIME type, description, schema presence flags), expiry timestamp, fetch timestamp, x402 protocol version, parse warnings, and a list of unavailable fields.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "pattern": "^https?://",
   "maxLength": 2048,
   "description": "Absolute http or https URL of the paid endpoint whose 402 challenge should be read. Private, loopback and link-local targets are rejected."
  },
  "challenge": {
   "type": "object",
   "description": "A 402 challenge object you already hold, in x402 v1 or v2 form. Use this instead of url when nothing should be fetched."
  },
  "timeout_ms": {
   "type": "integer",
   "default": 6000,
   "maximum": 12000,
   "minimum": 1000,
   "description": "Time budget for fetching the foreign challenge."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/halowerk-x402werk-offer-parser-2d0ed2d0/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.halowerk.com](https://www.zero.xyz/host/x402.halowerk.com/llms.txt)
