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

# Changelog

> Platform and documentation updates

<Update label="1.2.5" description="Current">
  ## Added

  The envelope now includes schema\_version to make compatibility rules explicit across client versions. A deprecation\_warnings array is present for non-breaking notices that require developer attention without altering runtime behavior.

  ## Changed

  Cache metadata was expanded; request.cache\_info now reports is\_cached, cached\_at, and expires\_at where applicable. Documentation was updated across Quickstart, Authentication, Caching, Endpoints, and Types to reflect the single-header model and the simplified cache API.

  ## Fixed

  Status codes and envelope fields are now strictly aligned for error cases that previously returned partial metadata in rare edge conditions during upstream failures.
</Update>

<Update label="1.2.4">
  ## Added

  Additional request timing fields improved end-to-end latency analysis in high-volume scenarios.

  ## Changed

  Authentication was simplified in practice to a single required header, X-API-Key. The Server-Token header is no longer required by the API. Documentation and examples were adjusted to default to the single-header flow while still accepting dual headers from older clients during the sunset period.
</Update>

<Update label="1.2.3">
  ## Added

  Introduced the /v1/perform endpoint in limited beta.

  ## Changed

  Search response titles in data.sources now prefer canonical documentation URLs when multiple equivalents are available.
</Update>

<Update label="1.2.2">
  ## Added

  Caching behavior was clarified and enforced per API key. The x-cache-ttl request header became the single interface for freshness control. Valid values are 0 to 3600 seconds. Setting 0 disables caching for the request. Caching remains isolated to the caller’s API key.

  ## Changed

  Quickstart and Endpoint pages added explicit examples for x-cache-ttl usage in Python, Node.js, and cURL.
</Update>

<Update label="1.2.1">
  ## Added

  The request object in the envelope gained endpoint and method fields to simplify server-side analytics. The request.id now uses a uniform format for easier correlation across logs and dashboards.

  ## Fixed

  Improved handling of long query strings in /v1/search by normalizing encoding rules to prevent accidental truncation in certain HTTP clients.
</Update>

<Update label="1.2.0">
  ## Added

  Introduced the request object in all responses. It includes params, payload (for POST), status\_code, requested\_at, served\_at, and elapsed\_ms. This unifies telemetry and simplifies instrumentation. A new status page entry in the docs highlights real-time uptime and incident history.

  ## Changed

  Top-level response remained backward compatible during this release, with request metadata available in parallel ahead of future consolidation.
</Update>

<Update label="1.1.6">
  ## Added

  The Types reference page documents normalization guarantees for field names, timestamps, numbers, booleans, arrays, and currencies. The Reference section gained dedicated pages for Errors and Caching.

  ## Fixed

  Corrected a serialization issue where empty arrays could be emitted as null in rare upstream formats; arrays are now preserved even when empty.
</Update>

<Update label="1.1.5">
  ## Added

  Expanded data.sources entries in /v1/search to always include title and url. The endpoint now returns stable answer\_text for identical queries under consistent content conditions.

  ## Fixed

  Eliminated a timing discrepancy that could report served\_at earlier than requested\_at under clock skew on certain edge nodes.
</Update>

<Update label="1.1.4">
  ## Added

  API Reference playground pages received live examples for /v1/extract and /v1/search with copy-paste code for Python, Node.js, and cURL. The Support page now recommends including request.id and UTC timestamps for faster triage.
</Update>

<Update label="1.1.3">
  ## Added

  Introduced stable error codes for common scenarios including INVALID\_OR for malformed or unreachable URLs and DATABASE\_CONNECTION for transient data-store issues. These codes are now guaranteed to remain stable across minor releases.

  ## Fixed

  Resolved inconsistent percent\_change rounding that could display a difference of 0.01 in specific locales.
</Update>

<Update label="1.1.2">
  ## Added

  Initial rollout of per-key caching controls with the x-cache-ttl header. Allowed values from 0 to 3600 seconds, applied only to successful GET requests. The feature shipped in opt-in mode with explicit documentation examples.

  ## Changed

  The Quickstart guide added environment variable conventions for UAPI\_API\_KEY.
</Update>

<Update label="1.1.1">
  ## Added

  Search endpoint results now include a consistent array structure for sources with stable key order to improve deterministic snapshots in tests.

  ## Fixed

  Corrected HTTP 429 messaging to provide clearer retry-after guidance where rate limits were exceeded.
</Update>

<Update label="1.1.0">
  ## Added

  Introduced the /v1/search endpoint. Responses include data.answer\_text and a data.sources array of citations. This enables question-answer workflows with traceable references.

  ## Changed

  Docs navigation gained dedicated Endpoints and Reference groups to separate task-oriented guides from API contracts.
</Update>

<Update label="1.0.5">
  ## Added

  Top-level uapi\_version was added to all responses to help clients pin behavior. Error envelope shape was finalized with success, data, and error objects always present even on non-2xx statuses.

  ## Fixed

  Improved Unicode handling for titles and names to avoid accidental normalization of special characters.
</Update>

<Update label="1.0.3">
  ## Fixed

  Stabilized id generation to avoid collisions under extremely high concurrency in load tests.
</Update>

<Update label="1.0.1">
  ## Fixed

  Hardened input validation for the url parameter in /v1/extract, returning clear 400 errors on unsupported schemes and malformed inputs.
</Update>

<Update label="1.0.0">
  ## Added

  Initial GA release with the /v1/extract endpoint. Responses returned a consistent envelope including id, success, data, and error. Authentication required an API key via the X-API-Key header. The first iteration of the documentation included Quickstart and Endpoint basics for immediate integration.
</Update>
