url: "https://github.com/fastapi/fastapi"
title: "fastapi/fastapi"
date_saved: 2026-04-16
category: other
tags: [unprocessed]
source: direct
reminder: false
cross_skills: []
session_mention: never
url_hash: "f9ecc9a5597b"
fastapi/fastapi
**Summary**: Bookmark saved (analysis failed)
Content
FastAPI framework, high performance, easy to learn, fast to code, ready for production --- Documentation: https://fastapi.tiangolo.com Source Code: https://github.com/fastapi/fastapi --- FastAPI is a modern, fast (high-performance), web framework for building APIs with Python based on standard Python type hints. The key features are: Fast: Very high performance, on par with NodeJS and Go (thanks to Starlette and Pydantic). One of the fastest Python frameworks available. Fast to code: Increase the speed to develop features by about 200% to 300%. Fewer bugs: Reduce about 40% of human (developer) induced errors. Intuitive: Great editor support. Completion everywhere. Less time debugging. Easy: Designed to be easy to use and learn. Less time reading docs. Short: Minimize code duplication. Multiple features from each parameter declaration. Fewer bugs. Robust: Get production-ready code. With automatic interactive documentation. Standards-based: Based on (and fully compatible with) the open standards for APIs: OpenAPI (previously known as Swagger) and JSON Schema. estimation based on tests conducted by an internal development team, building production applications. Sponsors Keystone Sponsor Gold and Silver Sponsors Other sponsors Opinions "_[...] I'm using FastAPI a ton these days. [...] I'm actually planning to use it for all of my team's ML services at Microsoft. Some of them are getting integrated into the core Windows product and some Office products._" Kabir Khan - Microsoft (ref) --- "_We adopted the FastAPI library to spawn a REST server that can be queried to obtain predictions. [for Ludwig]_" Piero Molino, Yaroslav Dudin, and Sai Sumanth Miryala - Uber (ref) --- "_Netflix is pleased to announce the open-source release of our crisis management orchestration framework: Dispatch! [built with FastAPI]_" Kevin Glisson, Marc Vilanova, Forest Monsen - Netflix (ref) --- "_Iโm over the moon excited about FastAPI. Itโs so fun!_" Brian Okken - Python Bytes podcast host (ref) --- "_Honestly, what you've built looks super solid and polished. In many ways, it's what I wanted Hug to be - it's really inspiring to see someone build that._" Timothy Crosley - Hug creator (ref) --- "_If you're looking to learn one modern framework for building REST APIs, check out FastAPI [...] It's fast, easy to use and easy to learn [...]_" "_We've switched over to FastAPI for our APIs [...] I think you'll like it [...]_" Ines Montani - Matthew Honnibal - Explosion AI founders - spaCy creators (ref) - (ref) --- "_If anyone is looking to build a production Python API, I would highly recommend FastAPI. It is beautifully designed, simple to use and highly scalable, it has become a key component in our API first development strategy and is driving many automations and services such as our Virtual TAC Engineer._" Deon Pillsbury - Cisco (ref) --- FastAPI mini documentary There's a FastAPI mini documentary released at the end of 2025, you can watch it online: Typer, the FastAPI of CLIs If you are building a CLI app to be used in the terminal instead of a web API, check out Typer. Typer is FastAPI's little sibling. And it's intended to be the FastAPI of CLIs. โจ๏ธ ๐ Requirements FastAPI stands on the shoulders of giants: Starlette for the web parts. Pydantic for the data parts. Installation Create and activate a virtual environment and then install FastAPI: $ pip install "fastapi[standard]" ---> 100% Note: Make sure you put `"fastapi[standard]"` in quotes to ensure it works in all terminals. Example Create it Create a file `main.py` with: Python from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") def read_item(item_id: int, q: str | None = None): return {"item_id": item_id, "q": q} Or use async def ... If your code uses `async` / `await`, use `async def`: Python hl_lines="7 12" from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"} @app.get("/items/{item_id}") async def read_item(item_id: int, q: str | None = None): return {"item_id": item_id, "q": q} Note: If you don't know, check the _"In a hurry?"_ section about `async` and `await` in the docs. Run it Run the server with: $ fastapi dev โญโโโโโโโโโโ FastAPI CLI - Development mode โโโโโโโโโโโโฎ โ โ โ Serving at: http://127.0.0.1:8000 โ โ โ โ API docs: http://127.0.0.1:8000/docs โ โ โ โ Running in development mode, for production use: โ โ โ โ fastapi run โ โ โ โฐโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโฏ INFO: Will watch for changes in these directories: ['/home/user/code/awesomeapp'] INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [2248755] using WatchFiles INFO: Started server process [2248757] INFO: Waiting for application startup. INFO: Application startup complete. About the command fastapi dev ... The command `fastapi dev` reads your `main.py` file automatically, detects the FastAPI app in it, and starts a server using Uvicorn. By default, `fastapi dev` will start with auto-reload enabled for local development. You can read more about it in the FastAPI CLI docs. Check it Open your browser at http://127.0.0.1:8000/items/5?q=somequery. You will see the JSON response as: JSON {"item_id": 5, "q": "somequery"} You already created an API that: Receives HTTP requests in the _paths_ `/` and `/items/{item_id}`. Both _paths_ take `GET` operations (also known as HTTP _methods_). The _path_ `/items/{item_id}` has a _path parameter_ `item_id` that should be an `int`. The _path_ `/items/{item_id}` has an optional `str` _query parameter_ `q`. Interactive API docs Now go to http://127.0.0.1:8000/docs. You will see the automatic interactive API documentation (provided by Swagger UI): [image] Alternative API docs And now, go to http://127.0.0.1:8000/redoc. You will see the alternative automatic documentation (provided by ReDoc): [image] Example upgrade Now modify the file `main.