> ## Documentation Index
> Fetch the complete documentation index at: https://docs.llmlayer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> New features, improvements, and fixes across the LLMLayer API, SDKs, and dashboard.

<Update label="June 2026" description="Extract API launch">
  ## New: Extract API — `POST /api/v2/extract`

  Turn any web page into exactly the data you need, in a single call. Combine any of five modes — one page fetch is shared across all of them, and AI modes run in parallel:

  | Mode      | What you get                                                                           | Price   |
  | --------- | -------------------------------------------------------------------------------------- | ------- |
  | `json`    | Structured data matching your schema (formal schema, example object, or plain English) | \$0.005 |
  | `summary` | Faithful markdown summary                                                              | \$0.005 |
  | `qa`      | Answer to your question, grounded only in the page                                     | \$0.005 |
  | `links`   | Every link on the page, deduplicated, internal/external classified                     | \$0.001 |
  | `brand`   | Brand kit: logos, colors, socials, industry classification                             | \$0.002 |

  **Highlights:**

  * **List extraction with real URLs** — when your schema asks for links, the API recovers per-item hyperlinks that page-to-text conversion normally loses
  * **Fair billing** — failures before any AI cost (page fetch failure, empty content, brand failure) are **fully refunded**, automatically
  * **Page metadata included** by default on every response
  * All five result fields are always present in the response; unselected modes are `null`

  [Read the Extract API docs →](/extract)

  ## SDKs v0.3.0

  * **Python** (`pip install llmlayer`): new `client.extract()` and `client.extract_async()`. The `json` mode result is exposed as `response.structured_data`
  * **TypeScript** (`npm install llmlayer`): new `client.extract()` with both `extract(args)` and `extract(url, opts)` call styles
  * Both SDKs now map HTTP 422 responses to `InvalidRequest` for cleaner error handling

  ## Dashboard

  * New **Extract playground** with a visual JSON schema builder: typed fields, nested objects, list-of-objects extraction, and a live schema preview — no JSON writing required

  ## Docs

  * New [Errors & Refunds](/errors) reference covering every error format, status code, and the automatic refund policy
  * This changelog
</Update>
