For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Book a demoLog inStart for free
  • Overview
    • Introduction
    • How it works
    • Quickstart
    • Customer showcase
  • Working with SDKs
    • Project structure
    • Adding custom code
    • Migrating to Replay
    • Capabilities
  • Generators
      • Generating an SDK
      • Publishing to PyPI
      • Configuration
      • Adding custom code
      • Dynamic authentication
      • aiohttp support
      • Changelog
      • Customer showcase
  • Reference
    • generators.yml
Checking status...
SOC2Soc 2 Type II
© 2026 Fern • Birch Solutions, Inc., a Postman company

Documentation

SDKsDocsAsk FernCLI Reference

API Definitions

OpenAPIAsyncAPIOpenRPCgRPC

Resources

BlogSupportPricing

Company

Brand KitPrivacy PolicyTerms of Service
LogoLogo
Book a demoLog inStart for free
GeneratorsPython

Changelog

March 20, 2026
March 20, 2026

5.0.6

(fix): Fix construct_type to resolve ForwardRef annotations in nested model fields and use strict Literal discriminant matching for undiscriminated unions.

Under Pydantic v2 with from __future__ import annotations, field annotations like List["Block"] remain as list[ForwardRef('Block')] even after model_rebuild. construct_type now resolves these ForwardRefs via the host model’s module, ensuring nested data is recursively constructed into proper model instances instead of staying as raw dicts.

Additionally, undiscriminated union resolution now requires Literal-typed discriminant fields to be present AND matching before accepting a candidate type. This prevents models with all-optional fields (e.g. FigureDetails) from greedily matching inputs that belong to a different variant or to a plain-dict fallback.

5.0.5

(fix): Add enum handling to construct_type() to prevent Pydantic serialization warnings when enum values pass through untyped model construction paths.

Was this page helpful?
Edit this page
Previous

March 25, 2026

Next

March 18, 2026