← All open source projects

FastAPI

fastapi/fastapi

FastAPI is a Python API framework built on type hints, Starlette, and Pydantic, with automatic OpenAPI documentation and an async model.

Forks 9,403
Author fastapi
Language Python
License MIT
Synced 2026-06-09

What it is

FastAPI became popular because it matched a precise Python pain: developers want to write APIs quickly without losing types, validation, and documentation. In FastAPI, function parameters, Pydantic models, and OpenAPI work together, so the API contract comes directly from code.

The framework is built on Starlette and Pydantic. Starlette provides the async web foundation, middleware, and routing, while Pydantic handles data models and validation. The result is compact code that gives input validation, response serialization, and interactive documentation.

What is inside and how people use it

The repository contains the framework, documentation, tests, and examples. It is especially useful for JSON APIs, internal services, machine-learning services, integration gateways, and fast server applications where types and clear contracts matter.

Minimal API

This example shows FastAPI’s core idea: types and a data model immediately become part of the API contract.

Language: Python
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Task(BaseModel):
    title: str
    done: bool = False

@app.post('/tasks')
def create_task(task: Task):
    return {'saved': task.title, 'done': task.done}

A typical scenario is to define a Pydantic model, write a route function, and receive validation plus Swagger UI documentation. This reduces manual code around schemas and errors.

Strengths and limitations

The strength is the clear connection between Python types and the API contract. Developers see data structure in code, and API users get documentation and understandable errors.

The limitation is that teams still need to understand async behavior, Pydantic, and application structure. Larger systems still need architecture, migrations, background jobs, observability, and dependency discipline.