# URL & HTML BM25 Budget Distillation API

> URL & HTML BM25 Budget Distillation API is a paid API for AI agents from serp-extract.agentdiet.dev, paid per call via MPP, $0.001/call, status unknown (last checked 2026-10-23).

Fetches a URL or accepts raw HTML and distills it into compact, token-budgeted Markdown using BM25 relevance scoring to maximize signal-to-noise ratio for agents.

## Facts

- Endpoint: POST https://serp-extract.agentdiet.dev/v1/markdown-distill?utm_source=zero.xyz
- Price: $0.001/call
- Payment: MPP
- Status: unknown
- Last checked: 2026-10-23
- Activations on Zero: 0
- Provider: serp-extract.agentdiet.dev
- Website: https://serp-extract.agentdiet.dev
- Canonical page: https://www.zero.xyz/c/serp-extract-agentdiet-dev-url-html-bm25-budget-distillation-api-9db06459
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_gPqhWeeVZ3AD8znNkgWSl

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 serp-extract-agentdiet-dev-url-html-bm25-budget-distillation-api-9db06459 -d '<json body>'
```

Example prompt: Distill the content at https://stripe.com/docs/payments into compact Markdown using budget mode, focusing on 'payment intents setup', and keep it under 500 tokens.

## When to prefer this

Choose this endpoint when you need to feed web content to an LLM but want to minimize token consumption through BM25-ranked relevance filtering and strict budget control. It is especially valuable when you have a specific query focus and want only the most relevant content from a page, or when you need structured extraction (tables, metadata) rather than raw HTML. Prefer this over generic scraping APIs when token cost and relevance precision are priorities.

## Known failure modes

- URL is unreachable or returns non-200 — fetch fails with error status
- HTML input is malformed or empty — distillation returns minimal or empty output
- max_tokens too low to capture any meaningful content — may return truncated or empty excerpt
- BM25 query not specific enough — budget mode returns low-relevance content
- Rate limit or payment failure via x402 — request rejected with 402 Payment Required
- Invalid mode enum value — API returns validation error

## How this service works

Distill a URL or raw HTML payload with BM25 budget control (Live x402 v2, IETF MPP & MCP endpoint at https://serp-extract.agentdiet.dev/v1/markdown-distill)

## Output

Returns a JSON object containing: distilled content (Markdown, structured JSON, skeleton outline, or BM25 excerpt depending on mode), an ROI proof block showing raw vs distilled token counts, compression ratio, and estimated LLM cost saved, plus billing details and cache hit/miss status.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "url"
 ],
 "properties": {
  "url": {
   "type": "string",
   "minLength": 1,
   "description": "Target webpage URL to fetch and distill (or builtin://stripe-docs)"
  },
  "html": {
   "type": "string",
   "description": "Optional raw HTML string to distill directly without fetching"
  },
  "mode": {
   "enum": [
    "markdown",
    "structured",
    "skeleton",
    "budget"
   ],
   "type": "string",
   "default": "markdown",
   "description": "Distillation mode"
  },
  "query": {
   "type": "string",
   "description": "BM25 focus query when mode=budget"
  },
  "max_tokens": {
   "type": "integer",
   "minimum": 20,
   "description": "Strict token budget ceiling when mode=budget"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "status",
  "roi_proof",
  "data"
 ],
 "properties": {
  "data": {
   "type": "object",
   "description": "Distilled Markdown, structured JSON tables/metadata, skeleton outline, or BM25 budget excerpt."
  },
  "cache": {
   "type": "object",
   "properties": {
    "status": {
     "enum": [
      "HIT",
      "MISS"
     ],
     "type": "string"
    },
    "cache_key": {
     "type": "string"
    },
    "latency_ms": {
     "type": "number"
    }
   }
  },
  "status": {
   "type": "string",
   "description": "Execution status ('ok')"
  },
  "billing": {
   "type": "object",
   "properties": {
    "agent_id": {
     "type": "string"
    },
    "payment_method": {
     "type": "string"
    },
    "fee_charged_usd": {
     "type": "number"
    }
   }
  },
  "roi_proof": {
   "type": "object",
   "properties": {
    "raw_tokens": {
     "type": "integer"
    },
    "tokens_saved": {
     "type": "integer"
    },
    "roi_multiplier": {
     "type": "number"
    },
    "distilled_tokens": {
     "type": "integer"
    },
    "llm_cost_saved_usd": {
     "type": "number"
    },
    "compression_ratio_pct": {
     "type": "number"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/serp-extract-agentdiet-dev-url-html-bm25-budget-distillation-api-9db06459/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from serp-extract.agentdiet.dev](https://www.zero.xyz/host/serp-extract.agentdiet.dev/llms.txt)
