Overview

FastAPI 0.100, released on July 8, 2023, adds full Pydantic v2 support while maintaining v1 compatibility.

Main Features

Pydantic v2 support

FastAPI leverages Pydantic v2 performance for request validation and response serialization, with significant gains.

python
from fastapi import FastAPI
from pydantic import BaseModel, field_validator

app = FastAPI()

class Item(BaseModel):
    title: str
    price: float

    @field_validator('price')
    @classmethod
    def price_must_be_positive(cls, v):
        if v <= 0:
            raise ValueError('Positive price required')
        return v

@app.post('/items')
async def create_item(item: Item):
    return item.model_dump()

v1/v2 compatibility

FastAPI 0.100 supports both Pydantic versions simultaneously, facilitating gradual migration of existing applications.

python
from fastapi import FastAPI, Query

app = FastAPI()

@app.get('/search')
async def search(
    q: str = Query(min_length=3, max_length=50),
    page: int = Query(default=1, ge=1),
    size: int = Query(default=10, le=100),
):
    return {'q': q, 'page': page, 'size': size}

Sources