Omitted bool and bool | None form fields now use their declared defaults or produce missing-field errors, consistent with other fields and Pydantic behavior. FastAPI no longer infers False for omitted booleans. This applies to individual fo
Catalog / Backend
FastAPI changelog
FastAPI is at 0.162.0, published 23 Oct 2026, yesterday.
Python web framework that builds request validation and an OpenAPI schema from type hints, running on Starlette and Pydantic.
- Collected
- 102 releases back to 10 Dec 2025
- Source
- fastapi/fastapi
- Project
- fastapi.tiangolo.com
- Advisories
- 1 published newest 2021
- Breaking
- 18 releases tagged by the publisher
- Feed
- RSS
Read on 28 of the 30 days on record, last today. Collection status
Version history
0.x102 releases
Fixes ð Fix OpenAPI schemas for standalone nullable form unions. PR #16598 by @tiangolo.
Features âĻ Add support for combining unions of form models. PR #16596 by @tiangolo.
Query, header, cookie, and form parameter models now apply their extra configuration to all submitted fields in the same parameter location, consistent with Pydantic behavior. This includes fields declared in other models, individual parame
Features âĻ Add support for optional unions of form models. PR #16586 by @tiangolo.
Features âĻ Add support for optional query, header, and cookie parameter models. PR #16584 by @tiangolo.
Features âĻ Add support for optional form models. PR #16582 by @tiangolo.
Fixes ð Preserve form media types in OpenAPI. PR #16579 by @tiangolo.
Features âĻ Add support for combining form models. PR #16577 by @tiangolo.
Features âĻ Add support for combining query, header, and cookie parameter models. PR #16573 by @tiangolo. Docs ð Clarify boolean query parameter parsing. PR #16569 by @tiangolo. ð Clarify nullable query parameters and path parameter defaul
Fixes ð Preserve uploaded file positions when converting to bytes. PR #16566 by @tiangolo.
Fixes ð Fix validation error locations for form and file AliasChoices. PR #16564 by @tiangolo.
Fixes ð Respect model alias settings for query, header, and cookie parameters. PR #16562 by @tiangolo.
Fixes ð Fix AliasChoices for path parameters. PR #16560 by @tiangolo.
Fixes ð Fix AliasChoices for named JSON body parameters. PR #16559 by @tiangolo. ð Fix AliasChoices extraction for form models. PR #16557 by @tiangolo.
Fixes ð Fix AliasChoices for query parameters, headers, and cookies. PR #16555 by @tiangolo.
Fixes ð Preserve Pydantic field metadata in inferred request parameters. PR #16553 by @tiangolo.
Fixes ð Preserve Pydantic field metadata when request options are omitted. PR #16549 by @tiangolo.
Fixes ð Preserve Pydantic Field() attributes in request parameters. PR #16547 by @tiangolo.
The deprecated **extra keyword arguments have been removed from Path, Query, Header, Cookie, Body, Form, and File. Unknown keyword arguments now raise TypeError. For additional JSON Schema properties, replace, for example, Query(custom="val
Features âĻ Add Pydantic validation options to request parameters. PR #16542 by @tiangolo.
Unions of form models now apply the same browser form handling as individual models. Empty scalar fields use defaults or produce missing-field errors, empty list items are preserved, omitted boolean fields become False, and unselected files
Validation errors for header parameter models now report the HTTP header name, such as int-val, instead of the Python field name, int_val. Explicit aliases, Header(convert_underscores=False), and Pydantic models with loc_by_alias=False keep
JSON request bodies now distinguish an explicit null from an omitted value. For individual Body parameters, null is validated as None: nullable types accept it, and non-nullable types reject it even when a default is defined. Defaults and d
When no file is selected, browsers submit a file part with an empty filename and empty content. FastAPI now treats this as missing: required file fields return a validation error, and fields with defaults or default factories use them. Unse
Browsers submit empty text inputs as empty strings (""). FastAPI now treats empty scalar form values as missing in form models, matching individual Form parameters. Required fields return a validation error. Fields with defaults or default
Defaults for omitted Query, Header, Cookie, and Form parameters and model fields are no longer treated as user input. Defaults are not validated unless validate_default=True is enabled. If you rely on validators running for omitted values,
Omitted bool and bool | None form fields are now interpreted as False, matching unchecked HTML checkboxes. This applies to individual Form parameters and form models, including required fields and fields with defaults of True or None. The i
The root_path parameter in FastAPI() is deprecated. Configure the server with fastapi run --root-path /api/v1 instead. Breaking Changes ðïļ Deprecate the root_path parameter in FastAPI. PR #16520 by @tiangolo.
Breaking Changes ðĨ Remove deprecated openapi_prefix and unused **extra from FastAPI. PR #16518 by @tiangolo. Docs ð Document URL paths in templates. PR #16517 by @tiangolo.
Features âĻ Add WebSocket support to security dependencies. PR #10147 by @mnixry.
Fixes ð Fix handling of empty value for byte file list parameter. PR #9383 by @Viicos.
Upgrades âŽïļ Add httpx2 to optional dependencies. PR #16512 by @tiangolo.
Fixes ð Fix non-finite float serialization in JSONL and SSE streams. PR #16509 by @tiangolo. Docs ðĻ Update Python format in Markdown with Ruff. PR #16505 by @tiangolo.
Fixes ð Fix blocking frontend fallback file checks. PR #16503 by @tiangolo. Translations ð Update translations for zh-hant (update-outdated). PR #16500 by @pr-submit[bot]. ð Update translations for ja (update-outdated). PR #16499 by @pr-
Fixes ð Fix included route metadata in iter_route_contexts(). PR #16484 by @tiangolo.
Automatic OpenTelemetry exporter setup is now opt-in. If you rely on FastAPI to configure exporters from OTEL_* environment variables, set FASTAPI_OTEL_AUTO_CONFIGURE=true or use FastAPI(telemetry={"auto_configure": True}) to retain the pre
Fixes ð Isolate FastAPI telemetry for excluded requests. PR #16470 by @tiangolo.
Fixes ð Cache OpenTelemetry tracers to preserve warning deduplication. PR #16468 by @tiangolo. Docs ð Remove HTML title from newsletter to avoid the tooltip. PR #16461 by @tiangolo. ð Embed the FastAPI and friends newsletter signup form.
Fixes ð Allow startup when automatic OpenTelemetry configuration fails. PR #16418 by @tiangolo.
Fixes ð Fix repeated endpoint wrapping in included routers. PR #16414 by @tiangolo.
Features âĻ Add native OpenTelemetry support. PR #16403 by @tiangolo. Refactors ðą Improve mobile responsiveness of conference rail. PR #16196 by @alejsdev. âŧïļ Remove conf section and add event banner. PR #16193 by @alejsdev. Docs ðĨ Remove
Fixes ð Fix support for background tasks and headers from dependencies in app.frontend(). PR #16105 by @tiangolo. Docs ð Document FASTAPI_ENV in FastAPI CLI guide. PR #16104 by @tiangolo.
Features âĻ Add app.frontend(check_dir="auto"), to make local development more convenient with fastapi dev. PR #16102 by @tiangolo.
Fixes ð Fix status_code being ignored for SSE and JSONL streaming endpoints. PR #15937 by @SAURABHSALVE. Docs ð Fix format_sse_event docstring rendering of \n\n terminator. PR #15613 by @AshNicolus. ð Add API reference page for fastapi.s
Fixes ð Fix line splitting in format_sse_event to comply with SSE spec. PR #15515 by @Zawwarsami16.
Fixes ð Fix response_model_* params ignored for non-generator endpoints with Iterable[..] return type. PR #15093 by @YuriiMotov.
Fixes ð Fix handling sequences with nested Annotated types. PR #14874 by @YuriiMotov. Internal ð Accept any base test failure as regression. PR #16092 by @tiangolo. ð Preserve pytest exit code in regression check. PR #16091 by @tiangolo.
Fixes ð Fix exclude_defaults not propagated to dict keys and values in jsonable_encoder. PR #16043 by @MBGrao. Internal ⎠Bump gitpython from 3.1.50 to 3.1.54. PR #16047 by @dependabot[bot]. ⎠Bump pymdown-extensions from 10.21.3 to 11.0.
Fixes ð Fix stream item type lost when using include_router(). PR #15077 by @alex-raw.
Refactors âĄïļ Avoid flattening dependencies for OpenAPI. PR #16076 by @tiangolo. Internal âŽïļ Upgrade latest-changes to 0.7.1. PR #16077 by @tiangolo. ð· Add OpenAPI dependency benchmarks. PR #16075 by @tiangolo.
Refactors âĄïļ Avoid flattening dependencies for request parameters, mainly for OpenAPI. PR #16073 by @tiangolo.
Refactors âĄïļ Avoid flattening dependencies for body fields. PR #16071 by @tiangolo.
Refactors âĄïļ Skip unused dependency repeat bookkeeping. PR #16069 by @tiangolo.
Refactors âĄïļ Avoid repeated dependency flattening in OpenAPI. PR #16067 by @tiangolo.
Refactors âĄïļ Stop retaining flat dependency trees. PR #16065 by @tiangolo. Internal ð· Add new memory benchmark. PR #16064 by @tiangolo.
Refactors âŧïļ Update the lru_cache limit for dependencies to account for large apps. PR #16062 by @tiangolo.
Refactors âĄïļ Reduce memory usage in dependencies. PR #16049 by @tiangolo. Docs ð Fix links in docs. PR #15967 by @YuriiMotov. ð Add Library Skills documentation. PR #16041 by @tiangolo. ð Update docs to use uv projects by default. PR #16
Fixes ð Refactor router route building to make it thread-safe, mainly relevant for tests running in parallel threads (uncommon). PR #16013 by @tiangolo.
Fixes ð Fix frontend fallback support for doted paths like /users/john.doe. PR #16011 by @tiangolo. Docs ð Fix topic repository list not being displayed and skip_users not being applied. PR #15995 by @YuriiMotov. Translations ð Update tr
Features âĻ Support dependencies in app.frontend(), e.g. for automatic cookie authentication for the frontend. PR #15908 by @tiangolo. Translations ð Update translations for fr (update-outdated). PR #15897 by @tiangolo. ð Update translatio
Refactors âŧïļ Make app.frontend() return 404 for methods other than GET or HEAD with no static file matches. PR #15863 by @tiangolo. Internal ð§ Update sponsors: remove Stainless. PR #15862 by @tiangolo. âŧïļ Refactor how sponsors data is hand
Refactors âŧïļ Refactor Library Skills, make info easier to find for agents. PR #15841 by @tiangolo. Internal ð· Simplify pull request workflow triggers. PR #15836 by @tiangolo. ð· Update issue-manager to 0.7.1. PR #15833 by @tiangolo. âŽïļ Upd
Features âĻ Add support for app.frontend("/", directory="dist") and router.frontend("/", directory="dist"). PR #15800 by @tiangolo. Read the docs: Frontend. Docs ð Fix typo in release notes. PR #15807 by @tiangolo. ð Add app.frontend() ins
Features âĻ Add iter_route_contexts() for advanced use cases that used to use router.routes (e.g. Jupyverse). PR #15785 by @tiangolo. Translations ð Fix broken Markdown in Korean custom response docs. PR #15774 by @kooqooo. ð Update transl
Fixes ðĻ Fix typing checks for APIRoute. PR #15765 by @tiangolo. ð Fix bug, allow empty path in path operation in prefixless router. PR #15763 by @tiangolo.
Breaking Changes âŧïļ Refactor internals to preserve APIRouter and APIRoute instances. PR #15745 by @tiangolo. Unblocks âĻ SO MANY THINGS âĻ Before this, router.include_router(other_router) would take each path operation from other_router and "
Refactors âŧïļ Do not accept underscore headers when using convert_underscores=True (the default). PR #15589 by @tiangolo.
Refactors âŧïļ Validate Server Sent Event fields to avoid applications from sending broken data. PR #15588 by @tiangolo. Docs ð Document --entrypoint CLI option. PR #15464 by @YuriiMotov. ð Update and simplify docs about help and management
Upgrades âŽïļ Update Pydantic v2 code to address deprecations. PR #15101 by @svlandeg. Internal ðĻ Tweak translation script. PR #15174 by @YuriiMotov. ⎠Bump mkdocs-material from 9.7.1 to 9.7.6. PR #15408 by @dependabot[bot]. ⎠Bump inline-sn
Upgrades âŽïļ Support free-threaded Python 3.14t. PR #15149 by @svlandeg.
Refactors ðĨ Remove April Fool's @app.vibe() ðĪŠ. PR #15363 by @tiangolo. Internal ⎠Bump cryptography from 46.0.5 to 46.0.7. PR #15314 by @dependabot[bot]. ⎠Bump strawberry-graphql from 0.307.1 to 0.312.3. PR #15309 by @dependabot[bot]. ðĻ
Features âĻ Add support for @app.vibe(). PR #15280 by @tiangolo. New docs: Vibe Coding. Docs âïļ Fix typo for client_secret in OAuth2 form docstrings. PR #14946 by @bysiber. Internal ðĨ Update FastAPI People - Experts. PR #15279 by @tiangolo.
Upgrades âŽïļ Increase lower bound to pydantic >=2.9.0. and fix the test suite. PR #15139 by @svlandeg. Docs ð Add missing last release notes dates. PR #15202 by @tiangolo. ð Update docs for contributors and team members regarding translati
Fixes ð Fix, avoid yield from a TaskGroup, only as an async context manager, closed in the request async exit stack. PR #15038 by @tiangolo. Docs âïļ Fix typo in docs/en/docs/_llm-test.md. PR #15007 by @adityagiri3600. ð Update Skill, opti
Features âĻ Add support for Server Sent Events. PR #15030 by @tiangolo. New docs: Server-Sent Events (SSE).
Features âĻ Add support for streaming JSON Lines and binary data with yield. PR #15022 by @tiangolo. This also upgrades Starlette from >=0.40.0 to >=0.46.0, as it's needed to properly unrwap and re-raise exceptions from exception groups. New
Features ð§ Add FastAPI Agent Skill. PR #14982 by @tiangolo. Read more about it in Library Agent Skills. Internal â Fix all tests are skipped on Windows. PR #14994 by @YuriiMotov.
Upgrades âŽïļ Add support for Starlette 1.0.0+. PR #14987 by @tiangolo.
Refactors âŧïļ Refactor logic to handle OpenAPI and Swagger UI escaping data. PR #14986 by @tiangolo. Internal ðĨ Update FastAPI People - Experts. PR #14972 by @tiangolo. ð· Allow skipping benchmark job in test workflow. PR #14974 by @YuriiMo
Breaking Changes ðïļ Add strict_content_type checking for JSON requests. PR #14978 by @tiangolo. Now FastAPI checks, by default, that JSON requests have a Content-Type header with a valid JSON value, like application/json, and rejects reque
Breaking Changes ðïļ Deprecate ORJSONResponse and UJSONResponse. PR #14964 by @tiangolo.
Features âĻ Serialize JSON response with Pydantic (in Rust), when there's a Pydantic return type or response model. PR #14962 by @tiangolo. This results in 2x (or more) performance increase for JSON responses. New docs: Custom Response - JSO
Internal âŽïļ Upgrade pytest. PR #14959 by @tiangolo. ð· Fix CI, do not attempt to publish fastapi-slim. PR #14958 by @tiangolo. â Drop support for fastapi-slim, no more versions will be released, use only "fastapi[standard]" or fastapi. PR #
Fixes âŧïļ Fix JSON Schema for bytes, use "contentMediaType": "application/octet-stream" instead of "format": "binary". PR #14953 by @tiangolo. Docs ðĻ Add Kapa.ai widget (AI chatbot). PR #14938 by @tiangolo. ðĨ Remove Python 3.9 specific fil
Breaking Changes â Drop support for Python 3.9. PR #14897 by @tiangolo. Refactors ðĻ Update internal types for Python 3.10. PR #14898 by @tiangolo. Docs ð Update highlights in webhooks docs. PR #14905 by @tiangolo. ð Update source example
Docs ð Fix grammar in docs/en/docs/tutorial/first-steps.md. PR #14708 by @SanjanaS10. Internal ðĻ Tweak PDM hook script. PR #14895 by @tiangolo. âŧïļ Update build setup for fastapi-slim, deprecate it, and make it only depend on fastapi. PR #
Features âĻ Show a clear error on attempt to include router into itself. PR #14258 by @JavierSanchezCastro. âĻ Replace dict by Mapping on HTTPException.headers. PR #12997 by @rijenkii. Refactors âŧïļ Simplify reading files in memory, do it sequ
Fixes ð Fix on_startup and on_shutdown parameters of APIRouter. PR #14873 by @YuriiMotov. Translations ð Update translations for zh (update-outdated). PR #14843 by @tiangolo. Internal â Fix parameterized tests with snapshots. PR #14875 by
Refactors âŧïļ Refactor and simplify Pydantic v2 (and v1) compatibility internal utils. PR #14862 by @tiangolo. Internal â Add inline snapshot tests for OpenAPI before changes from Pydantic v2. PR #14864 by @tiangolo.
Refactors âŧïļ Refactor internals, simplify Pydantic v2/v1 utils, create_model_field, better types for lenient_issubclass. PR #14860 by @tiangolo. âŧïļ Simplify internals, remove Pydantic v1 only logic, no longer needed. PR #14857 by @tiangolo.
Refactors âŧïļ Re-implement on_event in FastAPI for compatibility with the next Starlette, while keeping backwards compatibility. PR #14851 by @tiangolo. Upgrades âŽïļ Upgrade Starlette supported version range to starlette>=0.40.0,<1.0.0. PR #1
Features âĻ Add support for PEP695 TypeAliasType. PR #13920 by @cstruct. âĻ Allow Response type hint as dependency annotation. PR #14794 by @jonathan-fulton. Fixes ð Fix using Json[list[str]] type (issue #10997). PR #14616 by @mkanetsuna. Do
Features âĻ Add viewport meta tag to improve Swagger UI on mobile devices. PR #14777 by @Joab0. ðļ Improve error message for invalid query parameter type annotations. PR #14479 by @retwish. Fixes ð Update ValidationError schema to include i
Breaking Changes â Drop support for pydantic.v1. PR #14609 by @tiangolo. Internal â Run performance tests only on Pydantic v2. PR #14608 by @tiangolo.
Refactors ð Add a custom FastAPIDeprecationWarning. PR #14605 by @tiangolo. Docs ð Add documentary to website. PR #14600 by @tiangolo. Translations ð Update translations for de (update-outdated). PR #14602 by @nilslindemann. ð Update tr
Breaking Changes ð Add deprecation warnings when using pydantic.v1. PR #14583 by @tiangolo. Translations ð§ Add LLM prompt file for Korean, generated from the existing translations. PR #14546 by @tiangolo. ð§ Add LLM prompt file for Japane
Upgrades â Drop support for Pydantic v1, keeping short temporary support for Pydantic v2's pydantic.v1. PR #14575 by @tiangolo. The minimum version of Pydantic installed is now pydantic >=2.7.0. The standard dependencies now include pydanti
Breaking Changes ð§ Drop support for Python 3.8. PR #14563 by @tiangolo. This would actually not be a breaking change as no code would really break. Any Python 3.8 installer would just refuse to install the latest version of FastAPI and wou
Fixes ð Fix parameter aliases. PR #14371 by @YuriiMotov.
Fixes ð Fix support for tagged union with discriminator inside of Annotated with Body(). PR #14512 by @tiangolo. Refactors â Add set of tests for request parameters and alias. PR #14358 by @YuriiMotov. Docs ð Tweak links format. PR #14505
Fixes ð Fix support for if TYPE_CHECKING, non-evaluated stringified annotations. PR #14485 by @tiangolo.