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

# April 2026

> Changes shipped in April 2026.

### April 30, 2026

**\[New]** New organizations get 5,000 free credits

Every new organization is now automatically granted 5,000 credits on creation, recorded as a standard billing transaction.

### April 28, 2026

<Warning>
  **\[Breaking + API]** Split confidence is now a 0–100 integer

  `SplitRange.confidence` is now an integer in `[0, 100]` end-to-end (graph output, backend validation, database, and frontend rendering) instead of a 0–1 float. Existing values were migrated automatically.

  **Action required:** if your integration reads `confidence` from split results, expect integers (`87`) instead of floats (`0.87`). Confidence badges no longer render `0.87%` or `8700%`.
</Warning>

<Warning>
  **\[Breaking + API]** Workflow results response shape is now canonical

  `GET /v2/workflows/{wid}/files/{cid}/results/` now always returns `{collection_id, verification_url, parse, extraction}` — parse-only workflows return `extraction: null` instead of omitting the key. The internal `field_id` no longer leaks in responses.

  **Action required:** if your integration relied on `extraction` being absent for parse-only workflows, check for `null` instead. Cookbook examples and the API reference have been rewritten to match.
</Warning>

**\[New]** Classify nodes return evidence and confidence

Classify nodes now return a structured result with category, evidence, and confidence. The UI surfaces confidence and evidence in the category data viewer, with a dedicated Classify tab at workflow level and a per-file Classify tab with verdict cards. The new `classifications` include option exposes the same data via the file API.

**\[New]** HTML files render inside the document viewer

You can now upload `.html` and `.htm` files and view them in the document viewer. Files render inside a sandboxed, sanitized iframe to block script execution and same-origin access.

**\[API]** Better OpenAPI for SDKs and try-it surfaces

`POST /v2/workflows/` now declares its JSON request body, so SDKs and AI agents stop falling back to raw `extra_body` dicts. Bearer authentication is now declared as a proper API-key security scheme, so try-it panels render the lock icon and treat auth as required. Webhook responses now expose `url` as an `HttpUrl` and `created_at` as a `datetime`.

**\[Improved]** Smart-table search now reaches inside table cells

Smart-table search now scans both page prose and table cells, returning cell matches with `{table, row, column, value}` provenance. Scalar values inside tables are no longer dropped behind prose hits.

**\[Improved]** Per-category accuracy and confidence charts in monitoring

The monitoring tab now groups per-field accuracy and confidence charts into per-category sections for multi-schema workflows, with sensible fallbacks and an improved empty state.

**\[Improved]** Validate view now shows results for classify-routed files

Per-file validation now displays extracted data for files routed via Classify by synthesizing entries from the file's results when pinned to an extract node. The partition selector and sibling tabs are hidden when they don't apply.

**\[Fixed]** Improved processing of `.docx` and `.msg` uploads

`.docx`, `.msg`, and other non-PDF uploads now hydrate from their converted PDF instead of feeding the original binary into the PDF parser. Markdown for these formats is now correct and no longer triggers spurious "corrupt PDF" warnings.

**\[Improved]** Other improvements and fixes

Reliable PDF callback uploads via short-lived presigned URLs (no more "Request Too Big" errors on large rendered PDFs), file-detail columns in splits and per-category tables, `search_text` helper exposed in the smart-table sandbox, object/list extraction fields no longer dropped from v3 results, timeouts and retries on frontend list requests, lighter `/files` list payloads, and `eval` and XFA disabled in the PDF viewer for a smaller attack surface.

### April 27, 2026

**\[Fixed]** Smart-table extraction no longer drops scalar fields

Smart-table extraction plans now must assign every schema field to either a table or a `scalar_fields` list, rejecting incomplete plans so scalar fields can no longer be silently dropped.

**\[Fixed]** Master-file + extract workflows now run without error

Non-split workflows that combine a master-file node with an extract node now run cleanly — master-file nodes can augment an extract branch without triggering single-non-split-node validation.

### April 24, 2026

**\[Improved]** Tabbed data viewer on workflow detail

Reworked the workflow detail data viewer into a tabbed layout with shared grid skeletons and improved loading behavior. Added an inline workflow-name editor and tighter studio reload/loader behavior when workflows change.

**\[Fixed]** Empty splits tab now shows a clean overlay

The splits tab now uses a proper no-rows overlay (resolving the previous "Element type is invalid" error) and filters out splits with no results, so empty entries no longer appear.

**\[Improved]** More content captured during PDF parsing

Text missed by layout segmentation now reaches downstream parsing through orphan OCR detection and synthetic text-block injection. Orphans are clustered into lines, merged into nearby blocks where appropriate, or promoted to new blocks; redundant smaller blocks are absorbed to prevent duplicates.

**\[Fixed]** Date parsing in the smart-table sandbox no longer silently returns `None`

The sandbox now allows `datetime.strptime`'s runtime dependencies, so parsed dates are correctly returned instead of being silently converted to `None`.

**\[Fixed]** Smart-table no longer overwrites populated fields with empty values

Storing an empty list can no longer overwrite an already-populated list field (e.g. a transactions table). Column-statistics summaries now clearly label examples and indicate additional unique values so the worker doesn't mistake samples for full datasets.

**\[Improved]** Better table merging when headers differ

Same-title tables with differing headers are disambiguated to avoid dropping rows during merge, and the block-parsing prompt and markdown assembly capture text the model sees that isn't covered by any block id.

**\[Fixed]** Classifier results survive workflow amendments

Category queries continue to return populated classifications and datapoints after prompt adjustments — the version-compatible result builder now maps datapoints across amended versions by their stable persistent identifier.

### April 23, 2026

**\[Fixed]** Partitioned splits now flow into Validate and Smart Lookup

When a split rule declares a `partition_key` and the downstream extract is wired into a Validate or Smart Lookup, each partition is now processed independently — one validation pass per partition, one lookup pass per partition — and the results attach to the right per-partition child extraction. Previously the downstream node saw nothing.

**\[Improved]** Per-partition fan-out is now bounded

Per-partition fan-out is now capped (default `4` parallel branches) so a 100-partition document running through extract → validate → lookup doesn't saturate the model provider.

### April 20, 2026

<Warning>
  **\[Breaking]** Smart Lookup is now part of Extract

  The standalone Smart Lookup node has been removed — lookup behavior now lives on the Extract node. You manage lookup files directly from the Extract menu, enable lookups per-field via a checkbox in the field editor, and see inline badges when lookup files are missing.

  **Action required:** none for most users — existing workflows migrate automatically and inherit Extract's model settings. If you scripted Smart Lookup as a standalone node, switch to enabling lookup fields on Extract.
</Warning>

<Warning>
  **\[Breaking]** Smart Table is now an agentic mode on Extract

  The standalone Smart Table node has been removed — replaced by a Standard / Agentic mode selector on the Extract node.

  **Action required:** none for most users — existing Smart Table workflows migrate automatically to Extract with `mode="agentic"`.
</Warning>

**\[New]** Splits results tab in workflow results

Added a Split tab in the extraction results UI showing split-group cards and a collapsible per-page table, plus a `document_split_groups` include option on the workflow-version file endpoint with category, partition value, page range, and confidence.

**\[Improved]** Redesigned Classify and Split menus

Both nodes now share a Config / Options tab layout with validated card-based editors, uniqueness checks, reserved "Other" handling for Split, click-to-edit from the Config preview tables, and cleaner Save-from-header behavior that closes open forms first.

**\[API]** Split groups consolidated by category and partition value

`document_split_groups` responses now group rows by `(category, partition_value)` and return consolidated `page_ranges` arrays instead of per-row `page_start` / `page_end` fields.

**\[Improved]** Better figure parsing in PDFs

The figure-enhancement prompt now uses chart-type-specific strategies, handles multi-panel figures, gives statistical-annotation guidance, and applies column-header rules. Segment deduplication now preserves the largest picture blocks to avoid losing visual context.

**\[Improved]** Inline field-level errors in the field editor

Replaced the top-level field-form error banner with inline, field-adjacent errors, column-level highlighting, and deduplicated summary messages for enum options and nested fields.

**\[Improved]** Default extraction model upgraded to `gpt-5.2`

The default extraction model is now `gpt-5.2` across markdown and PDF extraction paths.

**\[Fixed]** OneDrive and Google Drive imports work reliably in production

Fixed the cloud-connector reliability issues that affected OneDrive and Google imports in staging and production: a stricter content-security policy now allows the required SDK scripts and frames, SDK load errors surface instead of failing silently, consumer-vs-business OneDrive accounts are detected correctly, and a popup-polling leak is gone.

**\[Improved]** Other improvements and fixes

Validation tab only appears when the workflow includes a Validate node and the file has an extraction; `latest_version` endpoint returns a clean `400` for invalid workflow UUIDs instead of a noisy `500`; OAuth callback token exchange no longer stalls; Smart Lookup handles nested object fields correctly; agentic-extraction description typo fixed; partition tools only exposed when split rules define a partition key; null figure-parsing responses no longer crash; markdown viewer no longer has an infinite scroll loop and the markdown download button moved to the top of the panel.

### April 14, 2026

**\[New]** Redesigned Workflow Studio

The Studio now ships redesigned Parse and Extract node menus, smart node placement with auto-connect, a way to add connected nodes from an output handle, empty-state guidance, an updated sidebar with hover cards, and save-from-header with per-node validation errors.

**\[New]** Validate node for cross-document rule validation

A new Validate node type lets you express cross-document rules that run after extraction.

**\[New]** XML file support

Added an XML-to-PDF converter for files with embedded base64 attachments, so XML files extract end-to-end.

**\[Improved]** API keys are hashed at rest, with multiple named keys per user

API keys are now hashed at rest, support naming, and you can hold multiple keys per user — better security and easier rotation.

**\[Improved]** Per-cell parse confidence with logprob breakdowns

Parse confidence now uses cell-level logprobs when available, with per-cell and per-row logprob breakdowns for table blocks.

**\[Improved]** Studio warns when leaving with unsaved changes

The Studio now blocks tab switches when configuration is dirty or an inline editor is open, and preserves in-progress work across tab navigation.

**\[Improved]** Faster, paginated billing usage

The billing usage table is now server-side paginated with summary cards, dramatically improving query performance on large datasets.

**\[Improved]** Visual grounding toggle for local-model compatibility

Added a toggle to disable visual grounding for environments where the local model doesn't support it.

**\[API]** Files nested under workflows; multi-node results; richer OpenAPI

File endpoints are now nested under workflows. A new multi-node results endpoint returns results across multiple graph nodes in one call. The OpenAPI spec is now enriched for better SDK documentation, and the billing API gained pagination, filtering, and ordering.

**\[Improved]** Other improvements and fixes

OCR confidence is now included in segment and table-cell metadata; the schema builder uses a local config store for faster field editing; toast colors, mobile sidebar, long descriptions in choice fields, lookup-file display overflow, and schema editor header sizing fixes; corrupt-PDF hydration errors are now downgraded to warnings.

### April 6, 2026

**\[New]** Agentic document splitter

The batch LLM splitter has been replaced by an agentic workflow. You can now define custom split rules (name, description, optional partition key for grouping repeating sections) directly in the Studio SplitPages node, with a built-in "Other" catch-all rule.

**\[Fixed]** Non-figure blocks no longer receive figure wrapping

Generic non-figure blocks are no longer treated as pictures, so only true figures receive screenshot crops and figure markup in PDF-to-markdown output.

**\[API]** Removed duplicate health check endpoint

A duplicate health check endpoint has been removed from the API surface.

### April 1, 2026

<Warning>
  **\[Breaking + API]** Workflow results endpoint always returns unified JSON

  `GET /v2/workflows/{id}/results/` now always returns unified JSON (parse markdown plus extraction data per file). The `output_format`, `as_lists`, and file-filter query parameters have been removed; filter to a single file with the new `file_id` query parameter.

  **Action required:** if your integration relied on `output_format`, `as_lists`, or the legacy file-filter param, remove them and use `file_id` instead.
</Warning>

**\[Improved]** Workflow usage endpoint supports pagination and ordering

The workflow usage endpoint now supports server-side pagination (`page`, `page_size`), ordering, and database-level filtering with the standard `results` response wrapper.

**\[API]** v1 routes restored with deprecation headers

v1 routes (workflows, jobs, uploads/results) are back with `Deprecation` and `Sunset` response headers and `X-API-Key` auth fallback for backward compatibility.
